java - 将库及其所有依赖项打包到一个文件夹中,但将其他依赖项打包到单独的文件夹中

标签 java maven dependencies zip maven-assembly-plugin

我有 Maven 项目。我使用 maven-assembly-plugin 创建 zip 文件,其中包含所有模块依赖项。 需要创建具有以下结构的 zip:

/my-libs
/other-libs

my-libs 需要打包来自my-lib 依赖的依赖+它的所有传递依赖。 TO other-libs 需要从当前 maven 模块中打包所有 other 依赖项。

基本上我需要有条件地选择目标文件夹:

if (dependency in transitive-dependencies(my-lib))
   copy to /my-libs
else
   copy to /other-libs

是否可以使用 maven-assembly-plugin ?是否有任何替代的 Maven 插件可以这样做?

最佳答案

需要在程序集XML文件中定义两个dependencySet

<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.xsd">
    ...                                                                                                                        
    <dependencySets>                                                                                                                         
        <dependencySet>                                                                                                                      
            <useProjectArtifact>false</useProjectArtifact>                                                                                   
            <useTransitiveFiltering>false</useTransitiveFiltering>                                                                            
            <includes>                                                                                                                       
                <include>com.example:dependency1:jar</include>                                                                       
                <include>com.example:dependency2:jar</include>                                                                       
                ...
            </includes>                                                                                                                      
            <outputDirectory>/my-libs</outputDirectory>                                                                                             
        </dependencySet>                                                                                                                     
        <dependencySet>                                                                                                                      
            <useProjectArtifact>false</useProjectArtifact>                                                                                   
            <useTransitiveFiltering>false</useTransitiveFiltering>                                                                            
            <includes>                                                                                                                       
                <include>com.example:other1:jar</include>                                                                       
                <include>com.example:other2:jar</include>                                                                       
                ...
            </includes>                                                                                                                      
            <outputDirectory>/other-libs</outputDirectory>                                                                                             
        </dependencySet>                                                                                                                     
    </dependencySets>         
    ...                                                                                                               
</assembly>   

文档:

http://maven.apache.org/plugins/maven-assembly-plugin/usage.html

http://maven.apache.org/plugins/maven-assembly-plugin/assembly.html

关于java - 将库及其所有依赖项打包到一个文件夹中,但将其他依赖项打包到单独的文件夹中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54557225/

相关文章:

dependencies - Bitbake 运行时 vs 构建依赖

php - Docker Image Build(摆脱依赖)

java - 仅在 finally block 中关闭 JDBC 连接?

java - 如何使用java在azure文件存储帐户上写入CSV文件?

java - 在 LibGDX 中检测圆是否与矩形的上半部分或下半部分相交

java - 是否有可能拥有一个从封闭项目继承依赖项次要版本的 Maven 库?

java - 如何删除java项目中未使用的类?

java - 监听器无法启动专用服务器进程

java - NamedEntityGraph 无法解析为类型

java - Vaadin 8 : Widgetset not compiling com. vaadin.terminal.gwt.DefaultWidgetSet 在项目中找不到