将每个依赖项复制到其自己的文件夹

时间:2014-10-24 11:51:09

标签: java maven maven-assembly-plugin

我想将每个依赖项及其传递依赖项复制到自己的专用文件夹中。我发现这很难解释,所以这是一个例子。

项目 - 我们称之为'myProject' - 有两个依赖关系
依赖性A
依赖性B

两个依赖项都具有传递依赖性 让我们将A的依赖关系称为A1和A2。 让我们将B的依赖关系称为B1,B2和B3

我想在构建项目时创建以下目录结构:

/myProject.jar  
/projects/A/A.jar  
/projects/A/jarlib/A1.jar  
/projects/A/jarlib/A2.jar    
/projects/B/B.jar  
/projects/B/jarlib/B1.jar  
/projects/B/jarlib/B2.jar  
/projects/B/jarlib/B3.jar  

这可以通过使用maven程序集插件,maven依赖插件或使用它们来实现吗?或者是否有任何其他插件来实现我正在寻求的东西?我一直在尝试使用这两个插件,但到目前为止,我已经能够获得所有传递依赖项仅被复制到单个文件夹的结果

3 个答案:

答案 0 :(得分:1)

尝试copy-dependenciesMaven Dependency Plugin目标并将useRepositoryLayout设置为true。

它不是完全相同的结构,而是Maven存储库的结构。

答案 1 :(得分:0)

说明" Puce"的想法。这个例子对我来说没问题。

<project>
  ...
  <profiles>
    <profile>
      <id>qa</id>
      <build>
        <plugins>
          <plugin>
            <artifactId>maven-dependency-plugin</artifactId>
            <executions>
              <execution>
                <phase>install</phase>
                <goals>
                  <goal>copy-dependencies</goal>
                </goals>
                <configuration>
                  <outputDirectory>${project.build.directory}/lib</outputDirectory>
                </configuration>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
  </profiles>
</project>

答案 2 :(得分:0)

我甚至不记得曾问过这个问题。好吧,自从我问了九个月以来,我已经找到了答案。一种方法是为所有这些项目创建父pom并在maven程序集插件中使用模块集。这样就可以确定每个模块的输出目录,并实现所需的目录结构。