在项目开发中,A依赖于B,如果两个都是jar项目,那就好办,但是今天在项目中,遇到A和B都是war项目的时候,那就遇到棘手的时候了,编译会报错,错误描述如下:
错误描述可以发现,没有发现jar包,这样就需要用到Maven-war-plugin插件来把B项目生成jar包来给A依赖了,现在说说如何使用Maven-war-plugin插件
1、在A(pom.xml)配置:添加Maven-war-plugin。
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<!--<attachClasses>true</attachClasses>,这样B项目内就可以使用A项目定义的class了-->
<attachClasses>true</attachClasses>
<!--打包的时候如果不想使用WEB-INF/classes,则在插件的配置内指定 <archiveClasses>true</archiveClasses>
即可,这样会把项目的java文件打包成jar放到WEB-INF/lib内-->
<archiveClasses>true</archiveClasses>
<!--设置jar包名字,如果A中没有定义该名字,那么名字为classes,如下图:-->
<classesClassifier>api</classesClassifier>
<!--
相同点:
packagingExcludes与webResources 均可以排除某些文件。
不同点:
packagingExcludes针对拷贝到target后的资源进行处理。
webResources针对编译前的资源进行处理。
-->
<packagingExcludes>WEB-INF/classes/**/**</packagingExcludes>
<webResources>
<resource>
<directory>target/${project.artifactId}/WEB-INF/classes</directory>
<excludes>
<exclude>**/**</exclude>
</excludes>
</resource>
</webResources>
</configuration>
</plugin>
</plugins>
这样就可以生成一个war包跟一个jar包了!!!!
2、在B(pom.xml)配置:
<dependency>
<groupId>com.xxx</groupId>
<artifactId>A</artifactId>
<version>${xxx.version}</version>
<type>jar</type>
<!--如果A中定义的名字要一样!!!-->
<classifier>api</classifier>
</dependency>
然后编译B项目,项目编译成功!!!!