Bash

bash 安裝後找不到 mvn 命令

  • July 28, 2015

我嘗試在 CentOS 7 上安裝 Maven,但之後mvn -version在終端中輸入bash: mvn: command not found.... 我該如何解決這個問題,以便我可以從 CentOS 7 終端呼叫 maven?

我採取的步驟來自本教程,並且它們也被明確且完整地描述如下:

wget http://www.eng.lsu.edu/mirrors/apache/maven/maven-3/3.3.1/binaries/apache-maven-3.3.1-bin.zip

unzip apache-maven-3.3.1-bin.zip
mkdir /opt/maven
mv apache-maven-3.3.1/ /opt/maven
ln -s /opt/maven/bin/mvn /usr/bin/mvn
gedit /etc/profile.d/maven.sh
Add the following contents to /etc/profile.d/maven.sh :
   #!/bin/bash
   MAVEN_HOME=/opt/maven
   PATH=$MAVEN_HOME/bin:$PATH
   export PATH MAVEN_HOME
   export CLASSPATH=.

Save and close the file. Then: 
chmod +x /etc/profile.d/maven.sh
source /etc/profile.d/maven.sh

註銷或重新啟動電腦。然後(這次顯示使用者名和結果):

[root@localhost ~]# mvn -version  
bash: mvn: command not found...  
[root@localhost ~]# mvn --version
bash: mvn: command not found...
[root@localhost ~]# echo $MAVEN_HOME  
/opt/maven  

請注意,我沒有安裝 Ant。另外,tomcat 的安裝是很久以前單獨完成的。


編輯


根據@MarkPlotnick 的建議,我嘗試了以下方法,結果如下:

[root@localhost ~]# mv /opt/maven /opt/maven.bak
[root@localhost ~]# mv /opt/maven.bak/apache-maven-3.3.1 /opt/maven
[root@localhost ~]# mvn -version
Apache Maven 3.3.1 (lotsnumbersandletters; 2015-03-13T13:10:27-07:00)
Maven home: /opt/maven
Java version: 1.7.0_71, vendor: Oracle Corporation
Java home: /usr/java/jdk1.7.0_71/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "versionnumber", arch: "amd64", family: "unix"

您引用的說明說要這樣做:

wget http://www.eng.lsu.edu/mirrors/apache/maven/maven-3/3.2.3/binaries/apache-maven-3.2.3-bin.zip
unzip apache-maven-3.2.3-bin.zip
mv apache-maven-3.2.3/ /opt/maven

這將導致/opt/maven/bin,/opt/maven/lib等。

你所做的略有不同:

wget http://www.eng.lsu.edu/mirrors/apache/maven/maven-3/3.3.1/binaries/apache-maven-3.3.1-bin.zip
unzip apache-maven-3.3.1-bin.zip
mkdir /opt/maven
mv apache-maven-3.3.1/ /opt/maven

這導致/opt/maven/apache-maven-3.3.1/bin,/opt/maven/apache-maven-3.3.1/lib等。

當你這樣做時mv x /y/z,其中 x 是一個目錄,可能會發生三種不同的事情:

  • 如果/y/z不存在,則整個植根於的樹x將移至/y/z.
  • 如果/y/z已經存在並且是一個目錄,則樹被移動到/y/z/x.
  • 如果/y/z已經存在並且不是目錄,mv將輸出錯誤消息並且不會移動任何內容。

引用自:https://unix.stackexchange.com/questions/197519