九、maven工程的依赖高级特性
① 依赖的传递性
WebMavenDemo项目依赖JavaMavenService1 JavaMavenService1项目依赖JavaMavenService2
pom.xml文件配置好依赖关系后,必须首先mvn install后,依赖的jar包才能使用。
WebMavenDemo的pom.xml文件想能编译通过,JavaMavenService1必须mvn install
JavaMavenService的pom.xml文件想能编译通过,JavaMavenService2必须mvn install
传递性:
在Eclipse中,为JavaMavenService2中增加了一个spring-core.jar包后,会惊喜的发现依赖的两个项目都自动的增加了这个jar包,这就是依赖的传递性。
注意:非compile范围的依赖是不能传递的。
② 依赖版本的原则:
1、路径最短者优先原则
Service2的log4j的版本是1.2.7版本,Service1排除了此包的依赖,自己加了一个Log4j的1.2.9的版本,那么WebMavenDemo项目遵守路径最短优先原则,Log4j的版本和Sercive1的版本一致。
2、路径相同先声明优先原则
这种场景依赖关系发生了变化,WebMavenDemo项目依赖Sercive1和Service2,它俩是同一个路径,那么谁在WebMavenDemo的pom.xml中先声明的依赖就用谁的版本。
③ 统一管理依赖的版本:
为了统一管理版本号,可以使用properties标签,里面可以自定义版本的标签名。在使用的地方使用${自定义标签名}
十、build配置
<build> <!-- 项目的名字 --> <finalName>WebMavenDemo</finalName> <!-- 描述项目中资源的位置 --> <resources> <!-- 自定义资源1 --> <resource> <!-- 资源目录 --> <directory>src/main/java</directory> <!-- 包括哪些文件参与打包 --> <includes> <include>**/*.xml</include> </includes> <!-- 排除哪些文件不参与打包 --> <excludes> <exclude>**/*.txt</exclude> <exclude>**/*.doc</exclude> </excludes> </resource> </resources> <!-- 设置构建时候的插件 --> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>2.1</version> <configuration> <!-- 源代码编译版本 --> <source>1.8</source> <!-- 目标平台编译版本 --> <target>1.8</target> </configuration> </plugin> <!-- 资源插件(资源的插件) --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-resources-plugin</artifactId> <version>2.1</version> <executions> <execution> <phase>compile</phase> </execution> </executions> <configuration> <encoding>UTF-8</encoding> </configuration> </plugin> <!-- war插件(将项目打成war包) --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <version>2.1</version> <configuration> <!-- war包名字 --> <warName>WebMavenDemo1</warName> </configuration> </plugin> </plugins> </build>
配置好build后,执行mvn package之后,在maven工程指定的target目录里war包和文件都按照配置的生成了
好了,maven的所有的内容就整理完了。
最后推荐个最新最全的maven依赖项版本查询网站: