我想跑步时 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
”,但包括所有其他依赖项。
答案 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>