Maven Maven依赖插件复制依赖忽略outputDirectory
我正在尝试使用maven依赖插件的复制依赖目标。 我查看了下面的代码片段 我的问题是:依赖项总是复制到Maven Maven依赖插件复制依赖忽略outputDirectory,maven,maven-dependency-plugin,Maven,Maven Dependency Plugin,我正在尝试使用maven依赖插件的复制依赖目标。 我查看了下面的代码片段 我的问题是:依赖项总是复制到 target\dependency文件夹,即使我指定了节点 下面是我的pom.xml的一部分: <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactI
target\dependency
文件夹,即使我指定了
节点
下面是我的pom.xml
的一部分:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.10</version>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
</execution>
<configuration>
<outputDirectory>${project.build.directory}/aaa</outputDirectory>
<overWriteReleases>true</overWriteReleases>
<overWriteSnapshots>true</overWriteSnapshots>
<overWriteIfNewer>true</overWriteIfNewer>
</configuration>
</executions>
</plugin>
</plugins>
</build>
org.apache.maven.plugins
maven依赖插件
2.10
复制依赖项
包裹
复制依赖项
${project.build.directory}/aaa
真的
真的
真的
问题:我做错了什么?是否可以在项目外部声明输出目录?例如:
c:\temp
?您使用仅在其范围内定义的配置配置执行了maven依赖插件
,因此该插件只能在mvn包
调用期间(即在执行包
阶段和插件(执行)时)拾取它有约束力的
如果从命令行调用插件,如下所示:
mvn dependency:copy-dependencies
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.10</version>
<configuration>
<outputDirectory>${project.build.directory}/aaa</outputDirectory>
<overWriteReleases>true</overWriteReleases>
<overWriteSnapshots>true</overWriteSnapshots>
<overWriteIfNewer>true</overWriteIfNewer>
</configuration>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
它实际上只使用默认值,因为您的配置将被忽略
事实上,该选项的默认值实际上是:
默认值:${project.build.directory}/dependency
在maven中,插件配置可以定义为常规配置(在执行
部分之外,应用于所有执行和命令行调用)或每次执行(在执行
部分内,就像在您的案例中一样)
在您的情况下,您可能希望配置在这两种情况下都有效,因此只需将插件部分更改为以下内容:
mvn dependency:copy-dependencies
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.10</version>
<configuration>
<outputDirectory>${project.build.directory}/aaa</outputDirectory>
<overWriteReleases>true</overWriteReleases>
<overWriteSnapshots>true</overWriteSnapshots>
<overWriteIfNewer>true</overWriteIfNewer>
</configuration>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
org.apache.maven.plugins
maven依赖插件
2.10
${project.build.directory}/aaa
真的
真的
真的
复制依赖项
包裹
复制依赖项
注意:我们将配置从执行范围提升到插件(全局)范围
还要注意,在上面的配置中,我们保留了执行,这意味着maven将始终在每次
mvn包调用时执行这个插件目标。如果您不希望出现这种行为,只希望使用命令行执行,那么您可以完全删除executions
部分。(请参阅使用executions标记部分末尾的注释):
由于Maven 3.3.1不再是这种情况,您可以在命令行上指定直接插件目标调用的执行id
要直接执行复制依赖项执行而不修改pom,请执行以下操作:
mvn dependency:copy-dependencies@copy-dependencies
请注意,在以@分隔的两个副本依赖项中,前者指的是插件目标,后者指的是执行id。执行的一般直接调用是:
mvn <plugin-prefix>:<goal>@<execution>
mvn:@
另请参见如何调用Maven?命令是什么?我从eclipse和命令行尝试过。命令是:mvn dependency:copy dependencies你们太棒了!我可以在3分钟内接受你的回答。谢谢