Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Maven Maven依赖插件复制依赖忽略outputDirectory_Maven_Maven Dependency Plugin - Fatal编程技术网

Maven Maven依赖插件复制依赖忽略outputDirectory

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

我正在尝试使用maven依赖插件的复制依赖目标。 我查看了下面的代码片段

我的问题是:依赖项总是复制到
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分钟内接受你的回答。谢谢