【问题标题】:Appending attributes to manifest.mf of a JAR将属性附加到 JAR 的 manifest.mf
【发布时间】:2013-06-30 15:22:51
【问题描述】:

我的应用程序需要我向不同 jar 的 ma​​nifest.mf 添加一些属性,而无需更改以前版本的 manifest.mf。简而言之,我想将一些属性附加到 JAR 的 manifest.mf 中。我正在使用 ANT 来构建我的应用程序。在 JAVA 中,我可以在使用命令创建 jar 时执行此操作 jar cfm jar-file manifest-addition input-file(s) 给定 here 但我想用一个 ANT 任务来做到这一点。 我可以为此使用任何 ANT 任务吗?如果不是,那么我剩下的唯一解决方案是

  1. 解压jar
  2. 更新 MANIFEST.MF
  3. 再次 JAR 更新内容

这似乎是一个漫长的过程。

请提出建议。

【问题讨论】:

    标签: java ant jar manifest.mf


    【解决方案1】:

    您可以使用 <exec> 任务通过 Ant 运行该命令行。

    【讨论】:

    • 任务是一个不错的选择。会试试这个,让你知道。
    • 此外,<exec> 任务用于运行 CLI 命令。但我正在寻找执行此操作的 ANT 任务。这没有任何ANT任务吗?因为运行 任务使我的应用程序情况复杂化。
    • 没有为此定义的任务。有一个清单任务,但它只执行列表的第 2 步。您可以编写自己的任务,但这比 exec 更复杂。我不确定whey exec 是否使您的代码复杂化。这不是一项长期的任务。它肯定比 unjar/update/jar 更短更简单。
    • 我同意它非常简单的任务。但它增加了额外的构建时间。我已经为目录路径定义了变量,jar 名称应该是 ${projectname} 并且有很多项目。所以我必须首先将我的所有类复制到一个临时文件夹。然后运行在该临时文件夹上创建 jar 的 CLI 命令。创建 jar 后,我必须将该 jar 复制到 ${Projectname} 并删除该临时文件夹和临时 jar。这些额外的任务可能会增加构建时间。我还有其他选择吗?
    • 您在计时时花了多少额外的时间?为什么你认为 Ant 任务会更有效率?同样的工作需要在幕后进行。
    【解决方案2】:

    我知道您想添加其他文件的内容,但也许您 只需要添加简单的属性,这会有所帮助

    <jar destfile="${web.home}/signapplet.jar" 
         basedir="${build.home}/applet/signer/classes">
        <manifest>
            <attribute name="Permissions" value="all-permissions"/>
        </manifest>
    </jar>
    

    【讨论】:

    • 我通过更新 jar 目标的属性更新清单并添加清单属性解决了这个问题。感谢您的回复。
    猜你喜欢
    • 2010-10-03
    • 1970-01-01
    • 2013-11-08
    • 2013-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-03
    • 1970-01-01
    相关资源
    最近更新 更多