如何将war文件添加到另一个java Web应用程序依赖项?

我有web maven项目。 Project的输出是war文件。 我想将此war文件添加为project_b的依赖项。
project_b的pom.xml文件有一个插件如下:

 ...  true org.apache.maven.plugins maven-war-plugin 2.3  geoserver ${project.build.directory}/geoserver WEB-INF/lib/servlet-api*.jar   true true   core ${project.build.finalname} ${project.version} ${iteration} ${maven.build.timestamp} ${build.commit.id}      package  war     ... 

如何使用org.itsmespring3-mvc-maven-xml-hello-worldwar将web应用程序的war添加到project_b和1.0-SNAPSHOT

在Maven中,添加依赖只是一块蛋糕。 看看下面的pom.xml。

  4.0.0  ykyuen project-apple jar 1.0 project-apple    ykyuen project-banana 1.0    

设置上述依赖项与在project-apple中导入project-banana.jar相同。

现在我有另一个名为project-orange的Maven Web应用程序项目,其打包类型等于war。 添加上述依赖关系链接根本不起作用,因为Java没有将.war文件视为类路径。

要解决这个问题,有两种方法:

  1. 创建一个Maven模块,其中包含带有jar包装的项目橙色类。 现在,您可以将新的Maven模块视为正常依赖项。

  2. 配置maven-war-plugin,以便在构建.war文件时构建.jar文件。 在war项目的节点下添加以下代码。 以下是一个例子。

 ...    maven-war-plugin 2.1.1  true classes     ... 

运行mvn install后,您可以在目标文件夹中找到以下存档文件

  • 项目orange.war
  • 项目 – 橙 – classes.jar

现在,您可以编辑project-apple的pom.xml以添加新的依赖项。

  4.0.0  ykyuen project-apple jar 1.0 project-apple    ykyuen project-banana 1.0    ykyuen project-orange 1.0  classes    

参考 : http : //eureka.ykyuen.info/2009/10/30/maven-dependency-on-jarwar-package/

最近,我也遇到了同样的问题。 这就是我非常简单地解决它的方法。

第1步:在原始项目的pom中(不依赖于任何项目)以这样的方式配置maven war插件,它将构建war以及jar。 当我们进行mvn clean install时,jar将被上传到maven存储库。

我的pom的第一部分看起来像这样:

 4.0.0 com.pancharatna TestWebApp **jar** 1.0-SNAPSHOT 

接下来,在构建部分中添加另一个插件:

  TestWebApp  ** org.apache.maven.plugins maven-war-plugin   make-a-war compile  war    **  maven-compiler-plugin  1.6 1.6     

步骤2:在第二个项目(取决于第一个项目)中,将依赖jar(原始项目)放在pom中。

   com.pancharatna TestWebApp 1.0-SNAPSHOT compile  

第3步:为项目执行mvn clean install,然后为第二个项目执行mvn clean install

第4步:可选:我们可以创建父pom,而不是像步骤3中提到的那样按顺序和单独构建项目。 我们可以简单运行mvn clean install:

 C:/Test/ ├───Project1 │ └───src/main/... │ └───pom.xml │ ├───Project2 │ └───src/main/... │ └───pom.xml │ ├───pom.xml   4.0.0 com.MyApp myproject pom 1.0-SNAPSHOT myproject http://maven.apache.org   /Project1 /Project2