先说说背景:前两天收到任务,需要将一个web项目a打包成一个功能提供给另一个项目b使用;
问题:于是我就将项目a打成war包并依赖进了项目b,结果发现在项目b能搜索到项目a的所有class文件,但在类中不能直接使用,会提示找不到文件。
排错:
1.我检查了External Librares是否有成功依赖并且正确打包,确认没有问题;
2.我对maven里关于项目a的文件删除重新打包并更新项目b,没有发现问题;
3.查阅相关资料,有网友建议说:
在pom.xml中<type>属性后面加一个<scope>compile</scope>
于是我检查了一下依赖
发现目前已经是compile了,所以也没有问题。
最后快下班于是去问了一下领导。
结论是:javaweb项目如果希望整个打包提供给另一个项目使用,需要同时打两个包,一个jar包一个war包。
听到结果后我立马领悟了,是啊,class文件怎么能通过war使用到呢,傻了傻了。
下面是maven打jar包的配置
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.4</version>
<executions>
<execution>
<id>你项目的artifactId</id>
<phase>package</phase>
<goals>
<goal>jar</goal>
</goals>
<configuration>
<classifier>api</classifier>
</configuration>
</execution>
</executions>
</plugin>