首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Ant的JarJar -如何使用规则文件

使用Ant的JarJar -如何使用规则文件
EN

Stack Overflow用户
提问于 2012-07-09 14:19:20
回答 1查看 3.7K关注 0票数 3

我想知道如何使用Ant运行JarJar,通过外部规则文件传递规则。

( 1)我知道我可以一个接一个地通过以下规则:

代码语言:javascript
复制
    <jarjar destfile="B.jar" >
        <zipfileset src="A.jar" />

        <rule pattern="com.a.**" result="test.b.@1" />
    </jarjar>

2)我知道,如果从命令行运行规则,就可以在文件中传递规则:

代码语言:javascript
复制
    java -jar jarjar.jar process <rulesFile> <inJar> <outJar>

3)我可以在Ant <exec>任务中使用上面的命令行。(最佳解决办法)

4)我发现了在Maven中使用<rulesFile>标记的一些参考。

上述方案对我想做的工作来说并不理想。

我想从Ant任务中运行JarJar,传入一个规则文件。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-07-23 07:57:41

我一直无法从任何论坛或通过邮寄JarJar的开发人员获得有关这方面的任何信息,因此我决定使用解决方案来回答这个问题:

  • 使用DOCTYPE & ENTITY实体(按关于Ant网站的建议)

例如,下面的build.xml文件包含另一个test.txt文件的内联内容。我使用标记include_this导入文本文件(这是我的名字-您可以在这里使用任何名称):

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE project [
    <!ENTITY include_this SYSTEM "test.txt">
]>

<project name="Test" default="build" >

    <target name="build" >
        &include_this;
    </target>

</project>

在这个简单的例子中,test.txt文件的内容是:

代码语言:javascript
复制
<echo>This is a test.</echo>

因此,我一直在使用这个变通方法来替换jarjar调用中的规则。将规则放入test.txt文件中:

代码语言:javascript
复制
<rule pattern="com.**" result="${project.output}.com.@1" />
<rule pattern="org.**" result="${project.output}.org.@1" />

然后,我的jarjar调用变成:

代码语言:javascript
复制
<!-- jarjar uses the same syntax as the jar task -->
<jarjar destfile="${jarjar.output.dir}/${project.output}.jar" >
    <!-- source files -->
    <zipfileset src="${jar.output.dir}/${project.output}.jar" />

    <!-- refactoring rules -->
    &include_this;
</jarjar>
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11396931

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档