去官网下载Maven,下载完成后解压到目录,例如
apache-maven-3.3.9
,Terminal进入此目录-
运行以下命令,设置
Maven classpath
$ vim ~/.bash_profile
接下来,我们需要设置M2_HOME(IntelliJ默认为M2_HOME)环境变量指向apache-maven-3.3.9,并且把Maven安装目录下的bin/文件夹添加到系统环境变量PATH中去:
export M2_HOME=/Users/robbie/apache-maven-3.3.3
export PATH=$PATH:$M2_HOME/bin
然后保存退出vim
- 输入命令以使bash_profile生效
$ source ~/.bash_profile
输入
$ mvn -v
查看Maven是否安装成功如果遇到以下异常,重新编辑bash_profile文件,增加JAVA_HOME 。并重新运行
$ source ~/.bash_profile
即可。
Exception in thread "main" java.lang.UnsupportedClassVersionError: org/apache/maven/cli/MavenCli : Unsupported major.minor version 51.0
tip:查找JAVA_HOME:
//进入JDK默认路径
$ cd /Library/Java/JavaVirtualMachines
//查看有什么
$ ls //结果:1.6.0.jdk jdk1.8.0_121.jdk
可以看到真实的JDK在这里了,最终的路径是:/Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home
//另外,在命令 /usr/libexec/java_home 后面使用-V选项列出所有版本的JAVA_HOME
$ /usr/libexec/java_home -V
//如下的结果:
Matching Java Virtual Machines (3):
1.8.0_121, x86_64: "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home
1.6.0_65-b14-468, x86_64: "Java SE 6" /Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
1.6.0_65-b14-468, i386: "Java SE 6" /Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
2、tip:添加设置JAVA_HOME环境变量
//cd到用户目录
$ cd
//列出当前系统的.开头的所有文件
$ ls -a
//vim编辑.bash_profile
$ vim .bash_profile //和上面的vim ~/.bash_profile相同
//添加java_home到.bash_profile文件中
export JAVA_HOME=$(/usr/libexec/java_home)
export PATH=$PATH:$M2_HOME/bin
export CLASS_PATH=$JAVA_HOME/lib
- 安装成功~
Maven的使用
Maven介绍
- Maven是一个用于项目构建的工具,通过它便捷的管理项目的生命周期。即项目的jar包依赖,开发,测试,发布打包。
- 是否可以认为相当于
cocoaPods
?
理解“仓库”
- 它在每台机器上创建一个本机仓库,把本机上所有maven项目依赖的jar包统一管理起来,而且这些jar包用“坐标”来唯一标识。这样所有maven项目就不需要再象以前那样把jar包复制到lib目录中,整个maven项目看起来十分清爽。
jar包依赖
- 这个也许会maven最突出的特点了:使用maven不需要上网单独下载jar包,<u>只需要在配置文件pom.xml中配置jar包的依赖关系</u>,就可以自动的下载jar包到我们的项目中。这样,别人开发或者使用这个工程时,不需要来回的拷贝jar包,只需要复制这个pom.xml就可以自动的下载这些jar包。
- 而且,我们自己下载jar包,还有可能造成版本的不一致,这样在协同开发的过程中就有可能造成代码运行的不一致。通过使用maven精确的匹配jar包,就不会出现这种问题了。
项目坐标
Maven通过唯一的标识来定义项目名称,这个标识就叫做坐标。
通过项目坐标,既可以唯一的匹配其他的jar包,也可以通过发布,使别人能使用自己的发布产品。
举个栗子:
<groupId>com.test</groupId>
<artifactId>maventest</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packagin>
<name>maventest</name>
<url>http://maven.apache.org</url>
groupId:所述的项目名称,由于有的项目并不是一个jar包构成的,而是由很多的jar包组成的。因此这个groupId就是整个项目的名称
artifactId:包的名称
version:版本号
packaging:包的类型,一般都是jar,也可以是war之类的。如果不填,默认就是jar
name和url:一个是名称,一个是maven的地址。
主要就是上面的几个参数。
- 当想要依赖什么jar的时候就可以通过下面的方式依赖:
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
配置Maven
- 设置本地仓库地址
<!-- localRepository
| The path to the local repository maven will use to store artifacts.
|
| Default: ${user.home}/.m2/repository
<localRepository>/path/to/local/repo</localRepository>
-->
<localRepository>/Users/egintramacbook01/JAVA/repo</localRepository>
- 设置私有镜像
<!-- 公司内部私服 -->
<mirror>
<id>nexus</id>
<mirrorOf>central</mirrorOf>
<name>Team Nexus Release Repository</name>
<url>内部地址</url>
</mirror>
- 如果使用代理服务器上网,需要配置代理服务器
<proxies>
<!-- proxy
| Specification for one proxy, to be used in connecting to the network.
|
<proxy>
<id>optional</id>
<active>true</active>
<protocol>http</protocol>
<username>proxyuser</username>
<password>proxypass</password>
<host>proxy.host.net</host>
<port>80</port>
<nonProxyHosts>local.net|some.host.com</nonProxyHosts>
</proxy>
-->
</proxies>
host这里填写代理服务器的地址(可以用IP)以及port端口
如果需要用户名/密码认证,则填写username/password节点,否则username/password这二个节点去掉
nonProxyHosts表示某些地址不需要经过代理服务器,多个地址之间用|分隔,支持通配符,比如172.156.*
Eclipse中使用Maven
- 先安装meeclipse插件:
点击eclipse菜单栏Help->Eclipse Marketplace搜索到插件Maven Integration for Eclipse 并点击安装即可
- 点击新建,在里面可以找到Maven选项卡,点击Maven Project创建Maven工程
maven工程结构?
pom.xml:用于定义或者添加jar包的依赖
src-main:用于存放java源文件
src-test:用于存放测试用例。
也许工程下还会出现target文件夹,这个是用来生成对应的class文件或发布的jar包。
Eclipse中maven常用的命令
点击Run As就可以发现几个Maven的命令:
-
Maven Build:
这个命令用于编译Maven工程,执行命令后会在target文件夹中的classes中生成对应的class文件。
-
Maven Clean:
删除target文件夹,即删除生成的package包以及class等文件。
-
Maven Test:
先自动进行编译,在运行所有的测试用例。
-
Maven install:
发布生成对应的package包。
注意:
留意上面的命令的作用,build和test都会生成相应的class文件。也就是说,当你新建一个maven工程,或者clean一个maven工程后,如果没有使用这两个命令,直接针对类进行测试,会跑出java.class.notfound的错误。因为此时还没有编译生成class文件。
只有使用了上面的两个命令后,才能针对某个类进行单元测试。