2012-03-28 11 views
3

を取得するどのようにこのようなANTタスク:ANT - 現在のタスク名

<target name="mytask"> 
    <echo>processing ${blabla}</echo> 
</target> 

印刷processing mytask

blablaはどのように置き換える必要がありますか?これは実際には可能ですか?

+0

ご利用のケースは? Antがこれを行うことができるので、タスクの開始時と終了時に印刷するだけです。 – skaffman

+0

いいえ、これは単なる例でした。私はターゲット名でファイルを作成したい。 –

+0

ファイル作成者はAntか外部(出力を読み込み中)になっていますか? – sudocode

答えて

3

あなたのバージョンが最近のバージョンのjavascriptサポートを含む場合は、これはvanilla Antでうまくいくかもしれません。

<scriptdef name="currenttarget" language="javascript"> 
    <attribute name="property"/> 
    <![CDATA[ 
    importClass(java.lang.Thread); 

    project.setProperty(
     attributes.get("property"), 
     project.getThreadTask(
      Thread.currentThread()).getTask().getOwningTarget().getName()); 
    ]]> 
</scriptdef> 

<target name="foobar"> 
    <currenttarget property="my_target" /> 
    <echo message="${my_target}" /> 
</target> 

scriptdefあなたが合うようにあなたがして使用することができますプロパティで現在のターゲットを取得するために使用することができるタスクcurrenttargetを設定します。

+0

それは、ありがとうございます。 –

+0

それは美しいです。 –

0

タスク名は、常にANTでコンソールに出力される。ここで

は一例です。ここで

<project default="test"> 

    <target name="test" depends="mytask-silent, mytask-echo"/> 

    <target name="mytask-echo"> 
     <echo>processing</echo> 
    </target> 

    <target name="mytask-silent"/> 

</project> 

が出力されます。

C:\tmp\ant>ant 
Buildfile: c:\tmp\ant\build.xml 

mytask-silent: 

mytask-echo: 
    [echo] processing 

test: 

BUILD SUCCESSFUL 
Total time: 0 seconds 
+0

これはあなたの元の質問に答えますが、実際の要件はコメントで更新されたものではありません。 – sudocode

+0

確かに。ありがとうございますが、あなたの答えは役に立たない。 –

0

私はそれが何を知っている唯一の方法ANTタスクを作成するか、次のようにgroovy scriptを使用します。

<target name="mytask" depends="init"> 
    <taskdef name="groovy" classname="org.codehaus.groovy.ant.Groovy" classpathref="build.path"/> 

    <groovy> 
     println "processing ${target}" 
    </groovy> 
</target> 
関連する問題