项目开发中为了提高效率会采用项目依赖父项目开发,只需开发子项目中个性化模块或者重写父项目中已存在模块。
例:父项目A自身可单独运行
子项目B相对A项目只有一个模块需要调整, 其他需求完全一样,这些只需将B项目依赖A项目,再此基础上完成B项目中个性化模块即可。
具体步骤:
A项目pom.xml增加如下插件
<!-- war项目依赖插件 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<webResources>
<resource>
<directory>${basedir}/src/main/webapp/WEB-INF</directory>
<filtering>true</filtering>
<targetPath>WEB-INF</targetPath>
<includes>
<include>**/web.xml</include>
</includes>
</resource>
</webResources>
<!-- 把class打包jar作为附件(便于子项目使用) -->
<attachClasses>true</attachClasses>
</configuration>
</plugin>
核心:<attachClasses>true</attachClasses>该配置意思为当有其他项目依赖A项目时A项目java文件会打包成jar放到WEB-INF/lib内。
B项目pom.xml
<!-- 依赖父项目 -->
<dependency>
<groupId>org.test.abc</groupId>
<artifactId>base-webapp</artifactId>
<version>${project.version}</version>
<type>jar</type>
<classifier>classes</classifier>
<scope>provided</scope>
</dependency>
<!-- 依赖父项目 -->
<dependency>
<groupId>org.test.abc</groupId>
<artifactId>base-webapp</artifactId>
<version>${project.version}</version>
<type>war</type>
</dependency>
同时使用war和jar可以在编译、打包、运行时都能正常工作