首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何将war文件添加到另一个java web应用程序依赖项中?

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

Stack Overflow用户
提问于 2015-06-24 15:12:32
回答 2查看 35.1K关注 0票数 24

我有一个web maven项目。项目的输出是一个war文件。我想将这个war文件作为依赖项添加到project_b中。

project_b的pom.xml文件有一个插件,如下所示:

代码语言:javascript
复制
...
<plugin>
    <inherited>true</inherited>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-war-plugin</artifactId>
    <version>2.3</version>
    <configuration>
        <warName>geoserver</warName>
        <webappDirectory>${project.build.directory}/geoserver</webappDirectory>
        <packagingExcludes>WEB-INF/lib/servlet-api*.jar</packagingExcludes>
        <archive>
            <manifest>
                <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
                <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
            </manifest>
            <manifestEntries>
                <GeoServerModule>core</GeoServerModule>
                <Application-Name>${project.build.finalname}</Application-Name>
                <Project-Version>${project.version}</Project-Version>
                <Iteration-Name>${iteration}</Iteration-Name>
                <Build-Timestamp>${maven.build.timestamp}</Build-Timestamp>
                <Git-Revision>${build.commit.id}</Git-Revision>
            </manifestEntries>
        </archive>
    </configuration>
    <executions>
        <execution>
            <phase>package</phase>
            <goals>
                <goal>war</goal>
            </goals>
        </execution>
    </executions>
</plugin>
...

如何使用<groupId>org.itsme</groupId><artifactId>spring3-mvc-maven-xml-hello-world</artifactId><packaging>war</packaging><version>1.0-SNAPSHOT</version>将web应用程序的war添加到project_b

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-07-04 20:17:33

在Maven中,添加依赖项只是小菜一碟。请看下面的pom.xml。

代码语言:javascript
复制
<project
    xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"
>
    <modelVersion>4.0.0</modelVersion>

    <!-- Project Details -->
    <groupId>ykyuen</groupId>
    <artifactId>project-apple</artifactId>
    <packaging>jar</packaging>
    <version>1.0</version>
    <name>project-apple</name>

    <dependencies>
        <!-- project-apple depends on project-banana -->
        <dependency>
            <groupId>ykyuen</groupId>
            <artifactId>project-banana</artifactId>
            <version>1.0</version>
        </dependency>
    </dependencies>
</project>

设置上述依赖关系与导入project-apple中的project-banana.jar相同。

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

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

  1. 创建一个Maven模块,该模块包含项目的类-使用jar打包的项目橙色。现在,您可以将新的Maven模块视为maven- dependency.
  2. Configure - .jar插件,以便它在构建.war文件时构建.war文件。在war项目的节点下添加以下代码。下面是一个示例。

代码语言:javascript
复制
...
<build>
    <plugins>
        <plugin>
            <artifactId>maven-war-plugin</artifactId>
            <version>2.1.1</version>
            <configuration>
                <attachClasses>true</attachClasses>
                <classesClassifier>classes</classesClassifier>
            </configuration>
        </plugin>
    </plugins>
</build>
...

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

  • project-orange.war
  • project-orange-classes.jar

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

代码语言:javascript
复制
<project
    xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"
>
    <modelVersion>4.0.0</modelVersion>

    <!-- Project Details -->
    <groupId>ykyuen</groupId>
    <artifactId>project-apple</artifactId>
    <packaging>jar</packaging>
    <version>1.0</version>
    <name>project-apple</name>

    <dependencies>
        <!-- project-apple depends on project-banana -->
        <dependency>
            <groupId>ykyuen</groupId>
            <artifactId>project-banana</artifactId>
            <version>1.0</version>
        </dependency>
        <!-- project-apple depends on project-orange -->
        <dependency>
            <groupId>ykyuen</groupId>
            <artifactId>project-orange</artifactId>
            <version>1.0</version>
            <!-- To map the project-orange-classes.jar -->
            <classifier>classes</classifier>
        </dependency>
    </dependencies>
</project>

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

票数 46
EN

Stack Overflow用户

发布于 2016-09-20 22:32:42

最近,我也面临着同样的问题。这就是我非常简单地解决这个问题的方法。

步骤1:在原始项目(不依赖于任何项目)的pom中的配置maven war插件,使其能够构建war和jar。当我们进行mvn全新安装时,jar将被上传到maven存储库中。

我的pom的第一部分是这样的:

代码语言:javascript
复制
<modelVersion>4.0.0</modelVersion>
<groupId>com.pancharatna</groupId>
<artifactId>TestWebApp</artifactId>
**<packaging>jar</packaging>**
<version>1.0-SNAPSHOT</version>

接下来,在build部分添加另一个插件:

代码语言:javascript
复制
<build>
    <finalName>TestWebApp</finalName>
    <plugins>
        **<plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-war-plugin</artifactId>
            <executions>
                <execution>
                    <id>make-a-war</id>
                    <phase>compile</phase>
                    <goals>
                        <goal>war</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>**

        <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <source>1.6</source>
                <target>1.6</target>
            </configuration>
        </plugin>

    </plugins>
</build>

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

代码语言:javascript
复制
   <dependency>
        <groupId>com.pancharatna</groupId>
        <artifactId>TestWebApp</artifactId>
        <version>1.0-SNAPSHOT</version>
        <scope>compile</scope>
    </dependency>

第3步:对项目执行mvn全新安装,然后对第二个项目执行

步骤4:可选:我们可以创建一个父pom,而不是像步骤3中提到的那样顺序和单独地构建项目。我们可以简单地运行mvn全新安装:

代码语言:javascript
复制
C:/Test/
        ├───Project1
        │   └───src/main/...
        │   └───pom.xml
        │
        ├───Project2
        │   └───src/main/...
        │   └───pom.xml
        │
        ├───pom.xml   <!-- parent pom -->

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.MyApp</groupId>
    <artifactId>myproject</artifactId>
    <packaging>pom</packaging>
    <version>1.0-SNAPSHOT</version>
    <name>myproject</name>
    <url>http://maven.apache.org</url>
    </dependencies>
    <modules>
        <module>/Project1</module>
        <module>/Project2</module>
    </modules>
</project>
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31020038

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档