maven依赖:跨模块复制

时间:2013-07-02 04:00:07

标签: maven-dependency-plugin

拥有一个包含多个模块项目的项目,并且自己拥有其他模块项目。我有一些模块生成一个特殊的工件类型'.kar',我在maven部署阶段将其部署到artifactory。

现在我想找到一种方法,使用现有的pom按版本从artifactory下载这些特定的工件。

mvn依赖:copy<>允许我按照特定的工件下载。

我希望通过生成这些工件的pom文件来完成。问题是当我使用依赖:copy时,它只在当前的pom上运行,它可能有也可能没有特殊的工件。

如果我在其中使用它,它会重新部署所有工件并正确下载特殊工件。但这不是正确的解决方案。

1 个答案:

答案 0 :(得分:0)

您可以向项目添加一个新模块,该模块<dependencies>包含所有.kar工件。在这个新模块的POM文件中,您可以使用maven-dependency-plugin的copy-dependencies目标。

<project>

  <!-- Integrate this module into your multi-module project. -->
  <parent>
    <groupId>my.group.id</groupId>
    <artifactId>my-parent-pom</artifactId>
    <version>1.0.0-SNAPSHOT</version<
  </parent>

  ...

  <!-- Add dependencies for all your .kar artifacts. -->
  <dependencies>
    <dependency>
      <groupId>my.group.id</groupId>
      <artifactId>kar-artifact-1</artifactId>
      <version>${project.version}</version>
      <type>kar</type>
    </dependency>
    <dependency>
      <groupId>my.group.id</groupId>
      <artifactId>kar-artifact-2</artifactId>
      <version>${project.version}</version>
      <type>kar</type>
    </dependency>
    ...
  </dependencies>

  <build>
    <plugins>
      <!-- Use the maven-dependency-plugin to copy your .kar artifacts. -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-dependency-plugin</artifactId>
        <version>2.8</version>
        <executions>
          <execution>
            <id>copy-kar-artifacts</id>
            <goals>
              <goal>copy-dependencies</goal>
            </goals>
            <configuration>
              <includeTypes>kar</includeTypes>
            </configuration>
          </execution>
        </executions>
      <plugin>
    </plugins>
  </build>

</project>