Maven入门
1.maven的安装和环境变量配置
1)下载安装
可以在 http://maven.apache.org/download.cgi下载最新版本的maven也可以在 https://mirrors.tuna.tsinghua.edu.cn/apache//maven/下载旧版本的maven
下载zip格式的文件,不用安装,直接解压到要安装的目录就好
2)配置环境变量
创建变量 M2_HOME:D:\Program Files\Java\apache-maven-3.2.5(安装位置)在 path加入:%M2_HOME%/bin
在cmd命令窗口,输入 mvn -v验证是否配置成功
修改 apache-maven-3.2.5\conf\setting.xml,作为全局设置
考出注释中的 <localRepository>/path/to/local/repo</localRepository> 并修改位置为本地仓库位置
<localRepository>D:\Program Files\Java\.m2\repository</localRepository>
把
setting.xml拷贝到.m2文件夹下作为 用户设置
2.在eclipse/myeclipse中使用maven
在IDE中应该配置本地MAVEN,如果使用编译工具自带的maven的话则不方便设置和调试。windows->preferences->[myeclipse->]maven[4myeclipse]->installations:add 加入本地maven
->user setting 设置 用户/全局配置文件位置,设置本地仓库位置
1)创建maven项目
new->maven project填入<groupId>com.neu.user</groupId> 项目组名
<artifactId>maven_3</artifactId> 项目名
<version>0.0.1-SNAPSHOT</version> 版本 (这也是一个项目的坐标,用来标识和找到项目)
<packaging>jar</packaging> 打包/项目类型
选择模板,创建项目
2) <dependency>:通过坐标的方式从本地仓库引入依赖(x项目所依赖的jar包),如果本地仓库没有目标包,则从maven的中央仓库下载
在http://mvnrepository.com/查找各种包的坐标 <dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.10</version>
<scope>test</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/log4j/log4j -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
</dependencies>
3)依赖传递
<dependency>
<groupId>com.neu.user</groupId>
<artifactId>maven_0</artifactId>
<version>${version}</version>
</dependency>
<dependency>中写另一个项目的坐标,即可依赖另一个项目,同样会拥有另一个项目的依赖的包引用
依赖拥有传递性,A直接依赖于B,B直接依赖于C,则A间接依赖于C
依赖传递的原则:路径长度短的>路径长度长的(即直接依赖优于间接依赖)
在pom.xml中,配置在前面的优于后面的
4)模块的聚合
创建管理项目
创建项目时,勾选Create a simple project,packing选择pom
配置pom文件
<modules>
<module>../maven_0</module>
<module>../maven_1</module>
<module>../maven_2</module>
</modules>
将三个模块导入,聚合在一起
这样就可以同时对三个模块进行处理
5)继承
把所有项目pom.xml文件中所有相同的部分拷贝到父类项目,这样在子项目中就不用再写相同的内容
在子项目中添加:
<parent>
<groupId>com.neu.user</groupId>
<artifactId>maven_3</artifactId>
<version>0.0.1-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>
实现继承
继承不会继承依赖关系,但可以统一配置依赖的版本信息
在子项目中导入依赖时就不用考虑版本
还可以把聚合信息整合到 父项目中