gpt4 book ai didi

java - maven-dependency-plugin 忽略 outputDirectory 配置

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:05:22 26 4
gpt4 key购买 nike

我想用我的主要 java 项目及其所有依赖项创建一个 jar 文件。所以我在 pom 文件中创建了以下插件定义:

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.5.1</version>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<!-- exclude junit, we need runtime dependency only -->
<includeScope>runtime</includeScope>
<outputDirectory>${project.build.directory}/dependency-jars/</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>

所以我执行mvn dependency:copy-dependencies,它工作正常,它将所有依赖项复制到target/dependency而不是dependency-jars。有什么想法吗?

最佳答案

这很正常:您配置了 maven-dependency-plugin 的特殊执行, 命名为 copy-dependencies , 然而,调用目标 dependency:copy-dependencies直接在命令行上创建默认执行,这与您配置的不同。因此,不会考虑您的配置。

在 Maven 中,有两个地方可以配置插件:为所有执行(在 <configuration> 级别使用 <plugin>)或为每个执行(在 <configuration> 级别使用 <execution>)。

有几种方法可以解决您的问题:

  • 移动<configuration><execution>之外,并使其适用于所有处决。你会:

    <plugin>
    <artifactId>maven-dependency-plugin</artifactId>
    <version>2.5.1</version>
    <configuration>
    <!-- exclude junit, we need runtime dependency only -->
    <includeScope>runtime</includeScope>
    <outputDirectory>${project.build.directory}/dependency-jars/</outputDirectory>
    </configuration>
    </plugin>

    请注意,有了这个,插件的所有执行都将使用此配置(除非在特定执行配置中被覆盖)。

  • 在命令行上执行特定的执行,即您配置的那个。 This is possible since Maven 3.3.1然后你会执行

    mvn dependency:copy-dependencies@copy-dependencies

    @copy-dependencies用于指代 <id>您要调用的执行。

  • 将您的执行绑定(bind)到 Maven 生命周期的特定阶段,并让它与生命周期的正常流程一起执行。在您的配置中,它已经绑定(bind)到 package<phase>package</phase> 相.所以,调用 mvn clean package将工作并在配置的位置复制您的依赖项。

关于java - maven-dependency-plugin 忽略 outputDirectory 配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38815961/

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