繁体   English   中英

maven-dependency-plugin忽略outputDirectory配置

[英]maven-dependency-plugin ignores outputDirectory configuration

我想用我的主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直接在命令行上的dependency:copy-dependencies创建一个默认执行,这与您配置的默认执行不同。 因此,不考虑您的配置。

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

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

  • <configuration>移动到<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> 

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

  • 在命令行上执行特定的执行,即您配置的执行。 这是可能的,因为Maven 3.3.1并且您将执行

     mvn dependency:copy-dependencies@copy-dependencies 

    @copy-dependencies用于引用要调用的执行的<id>

  • 将您的执行绑定到Maven生命周期的特定阶段,并让它以生命周期的正常流程执行。 在您的配置中,它已经与<phase>package</phase>绑定到package阶段。 因此,调用mvn clean package可以在配置的位置复制您的依赖项。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM