【问题标题】:Is there a way with Apache Ant to update a jar file after it's been built?Apache Ant 有没有办法在构建 jar 文件后更新它?
【发布时间】:2011-02-12 21:27:17
【问题描述】:

有没有办法在 Ant 中更新 jar 文件?

编辑:例如,如果我想将一些附加文件添加到已经存在的 JAR 文件中?

【问题讨论】:

    标签: java ant jar


    【解决方案1】:

    当然,这完全有可能。 Ant Jar task 可以做任何jar 命令行可以做的事情。您可以将update 标志设置为true 而不是false。

      <jar destfile="/x/y/z/file.jar"
           basedir="/a/b/c/"
           update="true"
      />
    

    目标 jar 在该路径中已经存在的位置。

    编辑:设置路径

      <jar destfile="/x/y/z/file.jar"
           update="true">
          <zipfileset dir="/a/b/c"/ prefix="x/y/z" />
      </jar>
    

    【讨论】:

    • 更新操作是如何工作的?具体来说,如果我在 a/b/c/* 中设置了一个要添加到 jar 文件 x/y/z/* 中的文件,这可能吗?
    • 是的,这绝对是可能的。请记住 - jar 只是一个专门的 zip(真的)。如果您查看 Ant zip 任务,该 zip 甚至还有一个更新示例。因此,如果您想象我的示例中的“filesToAdd”是 /a/b/c* 并且 destfile 是 x/y/z/file.jar,那么您应该能够让它工作。不相信我?将 x/y/z/file.jar 复制到某处并使用测试 ant 脚本尝试并检查我的工作:)。
    • 澄清一下。假设我的原始 jar 文件中有一个 x/y/z 的文件结构。我在 a/b/c 中有一些额外的文件,我想添加到 z 中。更新是否会简单地将 a/b/c 添加到原始 jar 文件中。或者我可以指定添加时使用的文件路径吗?
    • 要指定路径,请查看 Jar 任务文档。它向您展示了如何使用文件集来做到这一点。总的来说,ant任务文档非常好。
    • 非常感谢您在更新答案时找到了 zipfileset。非常感谢。
    【解决方案2】:

    如果您将update 设置为true,您应该可以使用Jar Task 执行此操作。

    <jar update="true" jarfile="${jarfile}" >
        <!-- ... -->
    </jar>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-09-08
      • 2022-01-26
      • 2012-04-30
      • 1970-01-01
      • 2023-03-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多