当前位置: 首页 > 面试题库 >

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

黄兴业
2023-03-14
问题内容

我有Web Maven项目。项目的输出是一个war文件。我想将此war文件添加为对project_b的依赖项。
project_b的pom.xml文件,具有如下插件:

...
<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>
...

如何添加了war与Web应用程序来project_b
<groupId>org.itsme</groupId><artifactId>spring3-mvc-maven-xml-hello- world</artifactId><packaging>war</packaging><version>1.0-SNAPSHOT</version>


问题答案:

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

<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相同。

现在,我有另一个Maven Web应用程序项目,称为project-
orange,其包装类型等于war。由于Java不会将.war文件视为类路径,因此添加上述依赖关系链接根本无法进行。

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

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

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

...
<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-classes.jar

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

<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/



 类似资料:
  • 问题内容: Spring Boot的嵌入式tomcat非常便于开发和部署。 但是,如果应该添加另一个(第三方)WAR文件(例如GeoServer)怎么办? 也许以下是正常过程: 安装普通的Tomcat服务器。 将Spring Boot应用程序构建为WAR文件,并将其添加到Tomcat的webapps文件夹中。 还将另一个(第三方)WAR文件添加到webapps文件夹。 但是,如果可以进行以下配置,

  • 问题内容: 所以我尝试将本地.jar文件依赖项添加到build.gradle文件中: 你会看到我将.jar文件添加到了这里的文件夹中: 但是问题是,当我在命令行上运行命令:gradle build时,出现以下错误: 问题答案: 据文档,对本地jar依赖项使用相对路径,如下所示:

  • 我目前正在使用Android Studio 1.2开发一个Android应用程序 我想在Android应用程序中使用外部Java项目作为依赖项。这个Java项目是一个Maven项目 如何将此项目作为依赖项添加到Android应用程序中,以便在Android应用程序中引用Java/Maven项目的类? Android应用程序是使用Grandle构建的。

  • Spring Boot的嵌入式tomcat对于开发和部署都非常方便。 但是,如果应该添加另一个(第三方)WAR文件(例如,GeoServer)怎么办? 安装普通Tomcat服务器。 将Spring Boot应用程序构建为WAR文件,并将其添加到Tomcat的webapps文件夹中。 还要向webapps文件夹中添加另一个(第三方)WAR文件。 但如果有以下配置可能就好了。 将Spring Boot

  • 我已经制作了我的网络应用程序,我想把它放在互联网上。我听说用户可以使用 .war 文件在 cPanel 中部署 Web 应用程序。我一直在搜索这个,任何类型的教程或任何有关如何做到这一点的信息。但是没有一个真正告诉你如何做到这一点,你只会找到关于如何在Tomcat或Glassfish上部署的教程。我在这里错过了什么点吗?一旦我的 Web 应用程序打包为 .war 文件,我如何将它放到互联网上?如果

  • 我面临着以下问题。我有两个Gradle项目(ProjectA和ProjectB)在同一个层次结构上,没有任何根项目。由于ProjectA依赖于ProjectB,我尝试将其建模如下: ProjectA的settings.gradle: ProjectA的build.gradle: 然而,当我在ProjectA上执行gradle build时,我得到了以下错误: 我必须在ProjectB中定义某种默认