maven-assembly-plugin 一直让我感到奇怪的是,apache 网站上的jar-with-dependencies 示例文件有一条关于 jarjar 格式的 TODO 注释。
这只是一个不断被无限复制的代码工件,还是示例文件上的 TODO 背后有一些实际原因?
maven-assembly-plugin 一直让我感到奇怪的是,apache 网站上的jar-with-dependencies 示例文件有一条关于 jarjar 格式的 TODO 注释。
这只是一个不断被无限复制的代码工件,还是示例文件上的 TODO 背后有一些实际原因?
该文档指出以下内容
使用 jar-with-dependencies 作为您的程序集插件配置的descriptorRef,以创建一个包含项目二进制输出的JAR,以及解压后的依赖项。
因此,jar-with-dependencies
创建一个 JAR 将包含项目的所有类文件以及依赖项的所有解压缩类文件。
我猜,“jarjar”指的是类似于Spring Boot Maven 插件的东西:它还创建一个 JAR 文件,但依赖项包含在它们的原始 JAR 文件中,而不是解包。与汇编插件方法相比,这需要自定义类加载器。
但是,您可能应该在Maven 邮件列表中提出这个问题。我只是这样做了,如果我得到任何新信息,我会更新这个答案。
更新
我怀疑这是指一种 jarjar 格式,它重新打包 Java 库并将它们嵌入到您自己的发行版中,以允许没有依赖关系。
参见:jarjar
在示例文件的上下文中,其中包含:
<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3 http://maven.apache.org/xsd/assembly-1.1.3.xsd">
<!-- TODO: a jarjar format would be better -->
<id>jar-with-dependencies</id>
<formats>
<format>jar</format>
</formats>
<includeBaseDirectory>false</includeBaseDirectory>
<dependencySets>
<dependencySet>
<outputDirectory>/</outputDirectory>
<useProjectArtifact>true</useProjectArtifact>
<unpack>true</unpack>
<scope>runtime</scope>
</dependencySet>
</dependencySets>
</assembly>
我认为这todo
是为了表明这就是这种特定方法的完成方式,但 jarjar 会更好。也就是说,“这就是你的做法,但你应该这样做”。