使用ant任务的Proguard中injar参数的问题



我使用proguard from ant(版本5.0 beta 2),当我尝试添加输入jar (AKA injars)与过滤器(!META-INF/MANIFEST-MF)参数转换为:

-injars '/path-to-my-file/myjar.jar(!META-INF/MANIFEST-MF)'

代替

-injars /path-to-my-file/myjar.jar(!META-INF/MANIFEST-MF)

所以过滤器(!META-INF/MANIFEST-MF)被忽略,并抛出一个错误,试图读取文件"/path-to-my-file/myjar.jar(!META-INF/MANIFEST-MF)"

我的build.xml类似于:
    <pathconvert property="other_injars" refid="injars">
        <mapper>
          <globmapper from="*.jar" to="*.jar(!META-INF/MANIFEST.MF)" casesensitive="no"/>
        </mapper>
    </pathconvert>
    <!-- obfuscate and optimize by ProGuard -->
    <taskdef resource="proguard/ant/task.properties" classpath="${proguard.home}/lib/proguard.jar" />
    <proguard configuration="${proguard.config.file}" >
        <injar refid="main_injar"/>
        <injar path="${other_injars}"/>
        <outjar path="${workdir}/${output.jar.file}"/>
        <libraryjar refid="third_parties" />
    </proguard>

我的问题是,当我使用过滤器时,如何避免生成的injar参数值中的'字符?

我认为保护任务正在转义文件路径由于字符:(!,但它不应该,因为实际上,它们不是文件路径的一部分。

在proguard风格的配置中,过滤器是在文件名之后的括号之间指定的:

-injars application.jar(!META-INF/MANIFEST.MF)

在Ant配置中,文件名和过滤器使用单独的属性指定:

<injar path="application.jar" filter="!META-INF/MANIFEST.MF" />

因此,在这种情况下,您不应该在文件名后面添加带括号的过滤器

相关内容

  • 没有找到相关文章

最新更新