gpt4 book ai didi

maven - 过滤Maven的copy-dependency复制的依赖关系?

转载 作者:行者123 更新时间:2023-12-02 18:04:38 24 4
gpt4 key购买 nike

我需要基本上完成以下任务:

  1. 将我的库构建成 JAR。 (简单,已经完成了。)
  2. 将我的库的依赖项复制到本地文件夹,包括主项目 JAR,不包括标记为已提供的依赖项。

我似乎无法完成第二部分。有没有比我下面的方法更好的方法来做到这一点?我实质上是将这些 JAR 部署到服务器上的 lib 目录中。不幸的是,下面的代码包含所有 JAR,甚至是提供的 JAR,但不包含项目输出 JAR。我应该为此使用不同的插件吗?

<?xml version="1.0"?>
<project>
...

<dependencies>
<dependency>
<groupId>com.provided</groupId>
<artifactId>provided-lib</artifactId>
<version>1.2.3</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.6.1</version>
</dependency>

...

</dependencies>

<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>/hello</outputDirectory>
<excludeTransitive>true</excludeTransitive>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>

最佳答案

为了防止插入收集提供的依赖项,您可以使用@Raghuram解决方案(为此+1)。我还尝试跳过 test 范围内的依赖项,并发现 issue它不能那么简单地完成 - 因为测试在插件语义中意味着“一切”。

因此,排除提供测试范围的解决方案是包含运行时范围。

<includeScope>runtime</includeScope>

收集依赖项后,您可以使用maven-antrun-plugin复制项目jar。到目标目录,例如:

<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.2</version>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${java.io.tmpdir}/test</outputDirectory>
<includeScope>runtime</includeScope>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.6</version>
<executions>
<execution>
<phase>package</phase>
<configuration>
<tasks>
<copy
file="${build.directory}/${project.artifactId}-${project.version}.jar"
todir="${java.io.tmpdir}/test" />
</tasks>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>

我不知道任何其他解决方案 - 除了创建一个新的 pom-dist.xml (可能 <packaging>pom</packaging> )它只保存对您的库的依赖项并收集所有传递依赖项独占测试/提供范围。您可以使用mvn -f pom-dist.xml package执行此操作如果您不想提供一个全新的项目。

关于maven - 过滤Maven的copy-dependency复制的依赖关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5850788/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com