java - 将子项目 pom 中的所有 Maven 依赖项复制到目录

标签 java maven maven-dependency-plugin

我正在尝试将项目及其子模块的所有依赖项复制到特定文件夹(假设是parent/target/lib)

该项目是这样的:

parent
|- module1
|- module2    
|- module3
   |- module3.1
   |- module3.2
|- module4

据我了解,唯一的方法是在每个子模块中使用 Maven 复制依赖项,如下所示:

<execution>
    <id>copy-dependencies</id>
    <phase>package</phase>
    <goals>
        <goal>copy-dependencies</goal>
    </goals>
    <configuration>
        <includeScope>runtime</includeScope>
        <outputDirectory>${parent.dir}/target/lib</outputDirectory>
        <overWriteReleases>false</overWriteReleases>
        <overWriteSnapshots>false</overWriteSnapshots>
        <overWriteIfNewer>true</overWriteIfNewer>
        <excludeGroupIds>xerces</excludeGroupIds>
        <excludeArtifactIds>junit,testng,easymock</excludeArtifactIds>
    </configuration>
</execution>

但是我遇到了多个问题:

  1. lib 文件夹将包含 Artifact 的所有版本(我只想要最新版本)
  2. 对于每个包含/排除规则,所有 pom 都需要更新(有很多)

是否有一些东西可以与 dependency:list 一起使用来获取所有依赖项,保留最新的并将它们复制到我的/lib 文件夹中?

最佳答案

我最终在一个新的子项目中使用了程序集插件,如下所示:

parent
|- module1
|- module2    
|- module3
   |- module3.1
   |- module3.2
|- module4
|- assembly-module

程序集模块调用maven- assembly-plugin (pom.xml):

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-assembly-plugin</artifactId>
            <version>2.4</version>
            <configuration>
                <descriptor>src/assembly/bin.xml</descriptor>
                <finalName>module-assembly</finalName>
            </configuration>
            <executions>
                <execution>
                    <id>make-assembly</id>
                    <phase>package</phase>
                    <goals>
                        <goal>single</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

最后我的程序集文件如下所示( assembly-module/src/assembly/bin.xml )

<id>bin</id>
<formats>
    <format>dir</format>
</formats>
<includeBaseDirectory>false</includeBaseDirectory>

<dependencySets>
    <dependencySet>
        <outputDirectory>lib</outputDirectory>
        <scope>runtime</scope>
        <useProjectArtifact>false</useProjectArtifact>
        <includes/>
        <excludes>
            <exclude>org.eclipse.jdt:core</exclude>
        </excludes>
    </dependencySet>
</dependencySets>

关于java - 将子项目 pom 中的所有 Maven 依赖项复制到目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24783044/

相关文章:

java - 在 Axis2 中启用 JSON 响应

java - 使用spring boot和spring-boot-maven-plugin生成war时排除application.properties

java - 将子类存储在父类(super class)数组中并使用子类的方法(Java)

java - 创建可点击的图形java

maven - wildfly maven插件https证书问题

eclipse - 无法解析 MavenProject 的依赖项

由于执行顺序,将子用作模块时父中的 Maven 依赖管理失败

Maven 依赖树 - 加号 (+) 与反斜杠 (\)

maven - 如何确定哪个 Maven 依赖项需要缺少的依赖项?

java - 在 Android 中的 AlertDialog 中按下 OK 时返回 MainActivity