您的位置:首页 > 其它

maven入门:依赖 聚合 继承(一)

2017-06-20 16:06 411 查看

目录

目录

maven常用命令

maven依赖

聚合

继承

maven的安装不在这里讲了,网上教程一大堆。

需要注意的:

(1).安装完maven后建议更改本地仓库的位置,在conf->setting.xml中修改

<localRepository></localRepository>


(2).maven的默认远程仓库位置在lib目录下的maven-model-builder.jar的pom-4.0.0.xml中的

<repositories>
<repository>
<url>http://repo.maven.apacho.org/maven2</url>
</repository>
</repositories>


6月22日补充:这篇博客没有写如何具体创建maven父子工程,其实我本人也到网上看过很多创建父子工程的博客,大同小异但是有些许不同,观察比较细的同学会发现有些文章比如idea是先创建空项目还是先创建maven工程但是不选择骨架。比如eclipse子项目是创建maven project还是必须创建maven module。重点不在于你用哪种方式创建,重点是创建出来的项目要符合maven规范,如父项目package值为POM(哪怕你创建时候选错了都可以自行到pom.xml中手动改,甚至你可以手动创建项目的目录结构,目录结构你足够熟悉就好。)

1.maven常用命令:

打包:mvn package (打包后放入target中)

编译:mvn compile(会生成target目录,并把编译后的class放在classes中)

清空:mvn clean (清空target)

测试:mvn test (测试报告生成后存在target中,一般是三个文件)

安装: mvn install (将项目安装到本地仓库中)

发布: mvn deploy (发不到私服)

2.maven依赖

(1).依赖是具有传递性的.

(2).依赖传递原则:层级相同时按引入顺序传递,层级不同时按层级最短的传递

举个栗子:

A->B->C->X(1.0)

A->D->X(2.0)

由于只能引入一个版本的包,此时Maven按照最短路径选择导入x(2.0)

A->B->X(1.0)

A->D->X(2.0)

路径长度一致,则优先选择第一个,此时导入x(1.0)

还有resources也是可以传递的,当然resources中的文件不涉及层级问题,所以resources是按照dependency顺序引入的。当然如果本项目中能匹配到的话优先选择本项目中的。

(3).scope标签的值会影响依赖,这里暂时先不展开了.

(4).排除依赖可以用

<exclusions>
<exclusion>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
</exclusion>
</exclusions>


3.聚合

建立一个简单项目artifactId为user-parent



<modules>
<module>../user-service</module>
<module>../user-core</module>
<module>../user-log</module>
</modules>


实现对三个项目的聚合,module标签中是其他项目的路径.这样所有项目都在通过操作父项目操作来实现了.

注意:modules的顺序是不重要的,因为maven会自动根据依赖关系来拓扑排序.

4.继承

子项目中添加:

<parent>
<groupId>cn.milo.user</groupId>
<artifactId>user-parent</artifactId>
<version>0.0.1-SNAPSHOT</version>
<!-- 这里是要指到pom文件的 -->
<relativePath>../user-parent/pom.xml</relativePath>
</parent>


6月22日补充:这里讲一下relativePath标签,如果不写这个标签,子项目会默认在子项目pom.xml的父目录中查找pom.xml,没有找到的话会依次到本地仓库,远程仓库中找对应的父项目并找到对应的pom.xml.所以协同开发的话父项目要先deploy到私有仓库.私有仓库用法参照 : maven入门:nexus安装与使用(二)

父项目中添加依赖管理:

<!-- 依赖管理 -->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.1.1</version>
</dependency>
</dependencies>
</dependencyManagement>
父项目中添加依赖管理:


如上配置后子项目添加父项目中的jar包就不需要写version标签了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息