Jar依赖于war项目中的类

时间:2010-03-24 11:41:53

标签: java maven-2

假设我在maven中定义了war和jar项目。

Jar项目依赖于战争项目

我已设法通过添加

使其在包模式下工作

在战争插件中战争项目<attachClasses>为真。

依赖于

        <groupId>com</groupId>
        <artifactId>oneway-delegator</artifactId>
        <version>1.0</version>
        <classifier>classses</classifier>

在jar pom。

但是当只运行编译时,没有创建类jar并且一切都失败了。

任何想法的人?

2 个答案:

答案 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项目都会对它有共同的依赖。