Maven的生命周期以及依赖、聚合、继承
1、三套生命周期(相互独立)
clean 清理项目
pre-clean 执行清理前的工作
clean清理上一次构建生成的所有文件
post-clean 执行一些清理后需要完成的工作
default 构建项目
compile test package install
sit 生成项目站点
pre-site 在生成项目站点前要完成的工作
site 生成项目站点文档
post-site 在生成项目站点后要完成的工作
site-deploy 发布生成的站点到服务器上
2、自定义绑定插件
在<project>子节点下插入
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-source-plugin</artifactId> <version>2.4</version> <executions> <execution> <phase>package</phase> <goals> <goal>jar-no-fork</goal> </goals> </execution> </executions> </plugin> </plugins> </build>
3、依赖的传递性以及排除依赖
1、在<dependencies>下添加自定义依赖
<dependency> <groupId>com.hongxing</groupId> <artifactId>hongxing-nange</artifactId> <version>0.0.1-SNAPSHOT</version> <!-- 排除依赖传递列表这里只依赖父不依赖爷爷 --> <exclusions> <exclusion> <groupId>com.hongxing</groupId> <artifactId>hongxing-bge</artifactId> </exclusion> </exclusions> </dependency>
2、依赖冲突
1、依赖传递时短路优先
2、依赖传递时先声明先优先
如果路径长度相同,则谁先声明,先解析谁
3、直接引用依赖后面声明的会把前面的覆盖掉
短路优先的优先级别要高于先声明下优先的级别
5、Maven的聚合和继承
1、继承junit
先定义一个父类并在pom中把打包方式设置为pom,并在dependencyManagement中引入依赖,用类似EL表达式,然后在properties中声明
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.hongxing</groupId> <artifactId>hongxing-parent</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>pom</packaging> <name>hongxing-parent</name> <url>http://maven.apache.org</url> <properties> <junit.version>3.8.1</junit.version> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencyManagement> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>${junit.version}</version> <scope>test</scope> </dependency> </dependencies> </dependencyManagement> </project>
子类需要继承父类的依赖的时候在子类pom中加入下列code
<parent> <groupId>com.hongxing</groupId> <artifactId>hongxing-parent</artifactId> <version>0.0.1-SNAPSHOT</version> </parent> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> </dependency> </dependencies>
2、聚合多个项目;
将多个工程拆分为模块后,需要手动逐个安装到仓库后依赖才能够生效。修改源码后也需要逐个手动进行 clean 操作。而使用了聚合之后就可以批量进行 Maven 工程的安装、清理工作
首先将打包方式更改为pom,然后pom.xml文件中添加被聚合的项目,最后打包部署
<modules> <module>../hongxing-bge</module> <module>../hongxing-nange</module> <module>../hongxing-shanji</module> </modules>
聚合和继承都需要打包package部署到本地库install