Java Ant - 如何传递 ProGuard 任务参数并在配置文件中使用它们?

标签 java ant proguard

我的 build.xml 中有这个:

<target depends="build-jar" name="proguard">
    <taskdef resource="proguard/ant/task.properties" classpath="tools/proguard4.6/lib/proguard.jar" />
    <proguard configuration="ant/proguard.conf" />
</target>

它工作正常。

在配置文件(即“ant/proguard.conf”)中,我试图访问此 build.xml 文件中定义的属性,但我总是遇到这种错误:

Value of system property 'jar.final_name' is undefined in '<jar.final_name>' in line 1 of file '.......\ant\proguard.conf'

错误很明显。问题是我该怎么做?
如果我按照“嵌入式 ProGuard 配置选项”的方式进行操作,我可以像使用 build.xml 中的任何其他属性一样使用这些属性,但我试图将文件分开。

那我该怎么做呢?

最佳答案

默认情况下,Ant 不提供为其任务设置 Java 系统属性的方法。启动 Ant 本身时,您只能在 ANT_OPTS 系统变量中指定 -D 选项。

我会考虑支持在引用的 ProGuard 配置中使用 Ant 属性(作为 ProGuard 的开发者)。

目前,可接受的解决方案可能是以 Ant 的 XML 样式指定输入和输出 jar:

<proguard configuration="ant/proguard.conf">
  <injar      name="${injar}" />
  <outjar     name="${outjar}" />
  <libraryjar name="${java.home}/lib/rt.jar" />
</proguard>

无论如何,这部分配置与 Ant 脚本的联系更紧密。

关于Java Ant - 如何传递 ProGuard 任务参数并在配置文件中使用它们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7015742/

相关文章:

java - 将 Gradle 项目转换为 Netbeans IDE

java - Ant : What is the simplest way to add version number to built jar?

android - Proguard 错误,无法导出应用程序

java - 如何在第 3 方 jar 上调试 log4j(代码不可用)?

Java - 如何在 Apache Ivy 中创建 JavaDocs

java - 在爆炸前更新 tomcat war 文件(未压缩)

java - Android-如何消除这些gradle/proguard警告?

java - Proguard 混淆导致神秘错误

java - 如何在读取属性文件时关闭 fileInputStream

java - 如何通过 URL 发送当前文本字段值?