Jar依赖战争项目中的类

Rom*_*man 6 java maven-2

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

Jar项目依赖于War项目

我已经设法通过添加在包模式下工作

在战争项目<attachClasses>中真实的战争插件.

并依赖于

        <groupId>com</groupId>
        <artifactId>oneway-delegator</artifactId>
        <version>1.0</version>
        <classifier>classses</classifier>
Run Code Online (Sandbox Code Playgroud)

在罐子里.

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

任何想法的人?

Pas*_*ent 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>
Run Code Online (Sandbox Code Playgroud)

但是这个工件是在package阶段创建的,所以如果你compile只运行,不要指望它在那里.

请注意,此配置选项是针对一个非常特殊的用例,即瘦的战争用例引入的.如果您需要在另一个项目中重用此JAR,建议的方法通常是将类移动到构建JAR的单独模块,然后从Web应用程序以及任何其他项目中声明对该JAR的依赖关系.需要它.


Rob*_*bin 7

不要这样做.

这不是一个可接受的依赖,使jar(普通的Java代码)依赖于war(Java EE特定的应用程序包).如果您在战争中拥有依赖的代码,那么该代码应该在它自己的jar中,然后Web应用程序和jar项目都会对它有共同的依赖关系.

  • 它是一个常见的情况,当你有一个战争和第二个maven模块包含第一个webapp的一些集成测试.在这种情况下,能够使用webapp类和依赖项将非常有用. (2认同)