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

Pon*_*oni 3 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>
Run Code Online (Sandbox Code Playgroud)

它工作正常.

在配置文件(即"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'
Run Code Online (Sandbox Code Playgroud)

错误很明显.问题是我如何做我想做的事情?
如果我使用"嵌入式ProGuard配置选项"方式,我可以像build.xml中的任何其他属性一样使用这些属性,但我正在尝试将文件保持分离.

那我该怎么办?

Eri*_*une 6

默认情况下,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>
Run Code Online (Sandbox Code Playgroud)

无论如何,这部分配置与Ant脚本关系更紧密.