9

我有 2 个工件,我想从本地存储库复制到文件系统中的目录。

我认为 dependency:copy 可以完成这项工作。但是,它需要一个参数 artifactItems。 http://maven.apache.org/plugins/maven-dependency-plugin/examples/copying-artifacts.html

任何人都可以帮助我在命令行中使用这个目标。不幸的是,maven 没有在命令行中显示这个目标的用法。

4

3 回答 3

5

我不会试图弄清楚如何提供artifactItem命令行,而是为依赖插件配置命令行执行。通过指定default-cli为执行 ID 来做到这一点。如果您总是想复制相同的依赖项,您可以在工件项中硬编码 GAV 坐标。或者,硬编码在命令之间保持不变的任何值。

要通过命令行复制不同的工件,请使用属性作为元素值并在命令行上指定值。例如,如果artifactItem包含的配置,<artifactId>${copy.artifactId}</artifactId>

mvn dependency:copy -Dcopy.artifactId=myArtifact

将复制 myArtifact(示例假设其他元素具有硬编码值)。

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-dependency-plugin</artifactId>
    <version>2.4</version>
    <executions>
    <execution>
    <id>default-cli</id> 
    <configuration>
      <artifactItems>
        <artifactItem>
          <!-- hardcode values, or use properties, depending on what you want to do -->
          <groupId>[ groupId ]</groupId>
          <artifactId>[ artifactId ]</artifactId>
          <version>[ version ]</version>
          <type>[ packaging ]</type>
          <outputDirectory>/the/filesystem/dir</outputDirectory>
        </artifactItem>
      </artifactItems>
      <!-- other configurations here -->
    </configuration>
    </execution>
    </executions>
  </plugin>
于 2012-06-26T15:32:54.650 回答
3

不确定您是想在 Maven 项目中还是没有项目中执行此操作。如果是前者,您可以使用:

mvn dependency:copy -Dartifact='group.id:artifact.id:your.version'

如果您在pom.xmlusing 属性中定义工件的版本,您也可以让它使用该版本,如下所示:

mvn dependency:copy -Dartifact='group.id:artifact.id:${version.property}'
于 2016-02-25T03:07:39.553 回答
2

如果您不想在 pom.xml 中编写artifactItems,您可以只使用命令:“mvn dependency:copy-dependencies”而不是“mvn dependency:copy”。

于 2017-08-22T10:45:45.217 回答