【问题标题】:How to use maven dependency:copy goal?如何使用 Maven 依赖:复制目标?
【发布时间】:2012-06-26 10:46:32
【问题描述】:

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

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

谁能帮我在命令行中使用这个目标。不幸的是,maven 没有在命令行中显示这个目标的用法。

【问题讨论】:

    标签: maven dependencies


    【解决方案1】:

    与其试图弄清楚如何通过命令行提供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>
    

    【讨论】:

      【解决方案2】:

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

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

      如果您使用属性在 pom.xml 中定义工件的版本,您也可以像这样使用该版本:

      mvn dependency:copy -Dartifact='group.id:artifact.id:${version.property}'
      

      【讨论】:

      • @BakedInhalf 答案假设您已安装 maven,请参见此处:maven.apache.org/index.html
      • Eclipse 默认安装 maven,但仅作为插件安装。我必须第二次安装 Maven 并将 /bin 文件夹添加到路径等等。现在可以使用了!所以现在只需要建立一个空项目,下载jars,将jars复制到你的正常项目并添加到构建路径
      • 仍然存在如何在命令行同时复制两个工件的问题——至少我是这样理解这个问题和我在寻找什么的。我无法让 -DartifactItems 工作 - 不确定这是否可能。 (实际上我想从命令行同时复制 8 个,因为 maven 启动时间在这里确实起到了相当大的作用,这将大大减少一次完成所有操作的时间。)
      【解决方案3】:

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

      【讨论】:

      • dependency:copy-dependencies 和 mvn dependency:copy 有什么区别?依赖项:复制依赖项不需要指定 &lt;artifactItems&gt; 吗?这是唯一的区别吗?
      猜你喜欢
      • 1970-01-01
      • 2011-06-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-12
      • 1970-01-01
      相关资源
      最近更新 更多