maven的project与子module
- 2016-12-18 22:28:00
- admin
- 原创 1969
一、maven的project与子module
1 父工程必须是<packaging>pom</packaging>。
2 module继承了父工程定义的版本、属性、依赖。
3 module定义的版本、属性、依赖优先级高(属性、低高版本依赖都测试过)。
4 需要在project下面构建,所有module会自动构建,构建顺序自动计算;如果在module下面构建,存在module依赖时会报错。
5 web模块依赖的模块会打成jar包置于WEB-INF\lib下面。
安装本地依赖(工程、jar):
mvn install,安装本地工程
mvn install:install-file -Dfile=jmxtools.jar -DgroupId=com.sun.jmdk -DartifactId=jmxtools -Dversion=1.2.1 -Dpackaging=jar
删除本地安装依赖(推荐1):
1 直接进入本地文件夹进行删除
2 mvn dependency:purge-local-repository -DreResolve=false,删除所有本地依赖
3 mvn build-helper:remove-project-artifact,删除指定工程依赖
模块间依赖:
父pom指定哪些子模块可以被依赖
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.webank</groupId>
<artifactId>pch1</artifactId>
<version>${version}</version>
</dependency>
</dependencies>
</dependencyManagement>
子模块直接引入需要依赖的其它模块
<dependencies>
<dependency>
<groupId>com.webank</groupId>
<artifactId>pch1</artifactId>
</dependency>
</dependencies>
打包:
jar包:所有资源一起打包,包括配置文件。
war包:所有资源一起打包,包括配置文件,包括依赖jar包。
打包资源:
1 pom不指定resources或者resources不存在子元素,则默认打包${basedir}/src/main/resources。
2 targetPath是jar包文件里面的路径。
3 excludes排除优先级高,跟通配符没关系。
<resources>
<resource>
<targetPath>META-INF</targetPath>
<directory>${basedir}/src/main/java</directory>
<includes>
<include>**/*.xml</include>
<include>**/*.properties</include>
</includes>
<excludes>
<exclude>config.properties</exclude>
</excludes>
</resource>
<resource>
<directory>${basedir}/src/main/resources</directory>
</resource>
</resources>