首页 > 解决方案 > 不在 war 文件中包含 src/lib/*.jar

问题描述

我想要运行 mvn verify

将文件夹中的所有文件包含/lib/到文件夹“web-inf/lib”中的战争档案中

所以这里是我的 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”,但包括所有其他依赖项。

标签: maven

解决方案


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

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

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

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

现在它不适用于范围内的依赖关系,system这是问题的根本原因。长话短说,这个问题已经在 SO 中提出/回答。

最重要的是,我建议摆脱系统依赖并将其至少放在本地 repo 中,或者理想情况下放在 Nexus 或 Artifactory 等代理中。但是,当然,欢迎您测试提供的链接中建议的其他方法。


推荐阅读