假设我在maven中定义了war和jar项目。
Jar项目依赖于战争项目
我已设法通过添加
使其在包模式下工作在战争插件中战争项目<attachClasses>
为真。
依赖于
<groupId>com</groupId>
<artifactId>oneway-delegator</artifactId>
<version>1.0</version>
<classifier>classses</classifier>
在jar pom。
但是当只运行编译时,没有创建类jar并且一切都失败了。
任何想法的人?
答案 0 :(得分:12)
但是当只运行编译时,没有创建类jar并且一切都失败了。
您确实可以配置maven-war-plugin将您的webapp中包含的类和资源打包/部署为具有以下配置的分类器的“附加”JAR工件:
<project>
...
<artifactId>mywebapp</artifactId>
<version>1.0-SNAPSHOT</version>
...
<build>
<plugins>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>X.Y</version>
<configuration>
<attachClasses>true</attachClasses>
</configuration>
</plugin>
</plugins>
</build>
...
</project>
但是这个工件是在package
阶段创建的,所以如果你只运行compile
,就不要指望它存在。
请注意,此配置选项是针对一个非常特殊的用例,即瘦的战争用例引入的。如果您需要在另一个项目中重用此JAR,建议的方法通常是将类移动到构建JAR的单独模块,然后从Web应用程序以及任何其他项目中声明对该JAR的依赖关系。需要它。
答案 1 :(得分:7)
不要这样做。
这不是一个可接受的依赖项,使jar(普通的java代码)依赖于war(Java EE特定的应用程序包)。如果您在战争中拥有依赖的代码,那么该代码应该在它自己的jar中,然后Web应用程序和jar项目都会对它有共同的依赖。