安装后bash找不到mvn命令

安装后bash找不到mvn命令

我尝试在 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"

答案1

您引用的说明说要执行此操作:

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将输出错误消息并且不会移动任何内容。

相关内容