3

AntでJarJarを実行し、外部のルールファイルでルールを渡す方法を知りたいです。


1)私は以下のようにルールを1つずつ渡すことができることを知っています:

    <jarjar destfile="B.jar" >
        <zipfileset src="A.jar" />

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

2)コマンドラインからルールを実行すると、ファイルでルールを渡すことができることを知っています。

    java -jar jarjar.jar process <rulesFile> <inJar> <outJar>

3)上記のコマンドラインをAnt<exec>タスクで使用できます。(最善の回避策)

<rulesFile>4) Mavenでタグを使用することへの参照を見つけました。


上記のオプションは、私がやりたいことには理想的ではありません。

ルールファイルを渡して、AntタスクからJarJarを実行したいと思います。

4

1 に答える 1

2

私はこれに関する情報をフォーラムから、またはJarJarの開発者にメールで送ることによって得ることができなかったので、私が使用している回避策でこの質問に答えることに決めました:

例として、以下のbuild.xmlファイルには、別のtest.txtファイルの内容がインラインで含まれています。タグを使用してテキストファイルをインポートしますinclude_this(これは私の名前です。ここでは任意の名前を使用できます)。

<?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ファイルの内容は次のとおりです。

<echo>This is a test.</echo>

jarjarそのため、この回避策を使用して、呼び出しのルールを置き換えています。ルールをtest.txtファイルに入れる:

<rule pattern="com.**" result="${project.output}.com.@1" />
<rule pattern="org.**" result="${project.output}.org.@1" />

その後、私のjarjar呼び出しは次のようになります。

<!-- 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>
于 2012-07-23T07:57:41.503 に答える