在war文件中不包含src / lib / *。jar

时间:2019-05-17 15:52:55

标签: maven

我想跑步时  mvn验证

/lib/文件夹中的所有文件包括在'web-inf / lib`文件夹中的war归档文件中

所以这里是我的pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<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/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.myhost</groupId>
    <artifactId>sailero</artifactId>
    <name>myapp</name>
    <version>1.0-SNAPSHOT</version>
    <packaging>war</packaging>


  <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
            <version>1.2.3</version>
        </dependency>
        <dependency>
            <groupId>com.auth0</groupId>
            <artifactId>java-jwt</artifactId>
            <version>3.7.0</version>
        </dependency>
<dependency>
            <groupId>com.host</groupId>
            <artifactId>some-lib</artifactId>
            <scope>system</scope>
            <version>0.0.1</version>
            <systemPath>${project.basedir}/lib/some-lib-0.0.1.jar</systemPath>
</dependency>


<plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <version>3.2.2</version>
                <configuration>
                    <configuration>
                        <packagingIncludes>lib/*.jar</packagingIncludes>
                    </configuration>
                </configuration>
</plugin>

在控制台中:

mvn verify

但是在战争中不包括 some-lib-0.0.1.jar

\target\myapp-1.0-SNAPSHOT.war\WEB-INF\lib\->的战争中不存在“ some-lib-0.0.1.jar”,但包括所有其他依赖项。

4 个答案:

答案 0 :(得分:2)

Maven war插件会自动将所有项目依赖项复制到WEB-INF / lib。因此,如果您的战争需要依赖关系,只需将相关的GAV放入此模块的依赖关系部分即可。

示例: 在pom中,您依赖于:

    <dependency>
        <groupId>com.auth0</groupId>
        <artifactId>java-jwt</artifactId>
        <version>3.7.0</version>
    </dependency>

因此它将被自动包含在WAR的WEB-INF/lib中。

现在范围system中的依赖项无法像这样工作,这是此问题的根本原因。 长话短说,这个问题已经是asked/answered了。

最重要的是,我建议摆脱对系统的依赖,并将其至少放置在本地存储库中,或者最好放置在某些代理(如Nexus或Artifactory)中。但是,当然,欢迎您测试提供的链接中建议的其他方法。

答案 1 :(得分:0)

此修复问题:

<plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <version>3.2.2</version>
                <configuration>
                    <webResources>
                        <resource>
                            <directory>lib</directory>
                            <targetPath>WEB-INF/lib</targetPath>
                        </resource>
                    </webResources>
                </configuration>
            </plugin>

答案 2 :(得分:0)

我也找到了另一种方法:

在您的项目下创建一个“ lib ”文件夹,如下所示:“ \src\main\webapp\WEB-INF\lib” 复制要包含在WAR包文件夹中的所需“ jars”等。 像平常一样调用您的Maven构建。我使用“ mvn install”,它将创建构建战争文件

答案 3 :(得分:0)

这里是正确的方法:

首先在本地Maven存储库中安装“ some-lib-0.0.1.jar”:

mvn install:安装文件-Dfile = myproject \ lib \ some-lib-0.0.1 -DgroupId = com.host -DartifactId = some-lib -Dversion = 0.0.1 -Dpackaging = jar

和第二个pom.xml

   <dependency>
                   <groupId>com.host</groupId>
                   <artifactId>some-lib</artifactId>
                   <version>0.0.1</version>
               </dependency>