4

maven-assembly-plugin 一直让我感到奇怪的是,apache 网站上的jar-with-dependencies 示例文件有一条关于 jarjar 格式的 TODO 注释。

这只是一个不断被无限复制的代码工件,还是示例文件上的 TODO 背后有一些实际原因?

4

2 回答 2

1

该文档指出以下内容

使用 jar-with-dependencies 作为您的程序集插件配置的descriptorRef,以创建一个包含项目二进制输出的JAR,以及解压后的依赖项。

因此,jar-with-dependencies创建一个 JAR 将包含项目的所有类文件以及依赖项的所有解压缩类文件。

我猜,“jarjar”指的是类似于Spring Boot Maven 插件的东西:它还创建一个 JAR 文件,但依赖项包含在它们的原始 JAR 文件中,而不是解包。与汇编插件方法相比,这需要自定义类加载器。

但是,您可能应该在Maven 邮件列表中提出这个问题。我只是这样做了,如果我得到任何新信息,我会更新这个答案。

更新

  • 发现网页的这个特定部分(包括 TODO)是 10 多年前添加的。显然 TODO 从那以后就没有改变过。
于 2015-09-01T18:42:32.417 回答
0

我怀疑这是指一种 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 会更好。也就是说,“这就是你的做法,但你应该这样做”。

于 2015-09-01T15:50:27.577 回答