Java maven组件的替代品:单个用于包装

Java maven组件的替代品:单个用于包装,java,maven,maven-assembly-plugin,Java,Maven,Maven Assembly Plugin,除了创建一个大的胖程序集(在某些情况下会很可怕)之外,打包一个独立的java应用程序还有什么选择 1) 两个或多个JAR的资源路径中存在冲突的文件(名称相同,例如reference.xml)会被幸运的JAR覆盖 2) 如果不重新提取、合并和压缩,就不可能替换单个jar 在一个分解的war文件中,所有的lib都在一个lib文件夹中,主类文件的jar中包含清单条目,还有其他解决方案吗。 我相信我在ant中做到了这一点,在maven中也可以做到 汇编插件将是使用自定义描述符的最佳选择: <plu

除了创建一个大的胖程序集(在某些情况下会很可怕)之外,打包一个独立的java应用程序还有什么选择

1) 两个或多个JAR的资源路径中存在冲突的文件(名称相同,例如reference.xml)会被幸运的JAR覆盖

2) 如果不重新提取、合并和压缩,就不可能替换单个jar

在一个分解的war文件中,所有的lib都在一个lib文件夹中,主类文件的jar中包含清单条目,还有其他解决方案吗。
我相信我在ant中做到了这一点,在maven中也可以做到

汇编插件将是使用自定义描述符的最佳选择:

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
    <descriptors>
        <descriptor>assembly.xml</descriptor>
    </descriptors>
</configuration>
</plugin>

org.apache.maven.plugins
maven汇编插件
assembly.xml
在assembly.xml中:

<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd">
<id>bin</id>
<formats>
    <format>tar.gz</format>
</formats>
<includeBaseDirectory>true</includeBaseDirectory>
<fileSets>
    <fileSet>
        <directory>${project.build.directory}</directory>
        <outputDirectory>/</outputDirectory>
        <includes>
            <include>${project.artifactId}-${project.version}.jar</include>
        </includes>
    </fileSet>
</fileSets>
<dependencySets>
    <dependencySet>
        <outputDirectory>/lib</outputDirectory>
        <useProjectArtifact>false</useProjectArtifact>
        <unpack>false</unpack>
    </dependencySet>
</dependencySets>
</assembly>

箱子
tar.gz
真的
${project.build.directory}
/
${project.artifactId}-${project.version}.jar
/解放党
假的
假的
所有依赖项都将是项目jar文件旁边的lib目录中的独立jar。

我倾向于使用来进行分发,然后使用来将所有依赖项打包到包含分发的
tar.gz
zip
文件中。。。有时我会更进一步,使用创建
.deb
.rpm
安装程序,我从需要Windows安装程序的人那里听到了一些好消息,尽管他们应该能够做类似的事情,以前当我需要生成Windows安装程序时,我编写了自己的WiX Maven插件,但这方面的源代码仍由我以前的雇主负责


如果您继续这样做,我怀疑您可能更喜欢
平面

,您提供的配置文件运行良好,只是项目的jar本身没有内置到tar.gz文件中。为此,我必须做一个罐子,并把它放进瓶子里。但这仍然是我得到的最好的。${project.artifactId}-${project.version}.jar可能与项目的jar不匹配。它应该根据jar的名称进行更改。