Antタスクを使用してJavaクラス名をファイルパスに変換するにはどうすればよいですか?Ant:クラス名をファイルパスに変換する
たとえば、foo.bar.Duck
を含むプロパティを指定すると、foo/bar/Duck.class
を取得したいと考えています。
<pathconvert>
と<regexpmapper>
の点でこれを実装しようとしましたが失敗しました。
Antタスクを使用してJavaクラス名をファイルパスに変換するにはどうすればよいですか?Ant:クラス名をファイルパスに変換する
たとえば、foo.bar.Duck
を含むプロパティを指定すると、foo/bar/Duck.class
を取得したいと考えています。
<pathconvert>
と<regexpmapper>
の点でこれを実装しようとしましたが失敗しました。
Ant resourcesとunpackagemapper
を使用する別の方法ですが、この目的のために設計されています。反対のpackage mapper
も利用可能です。
<property name="class.name" value="foo.bar.Duck"/>
<resources id="file.name">
<mappedresources>
<string value="${class.name}" />
<unpackagemapper from="*" to="*.class" />
</mappedresources>
</resources>
あなたは例えば、プロパティヘルパー構文${toString:...}
によってリソース値を使用します。
<echo message="File: ${toString:file.name}" />
利回り
[echo] File: foo/bar/Duck.class
はここでこれを行うための可能な方法です:
<property name="class.name" value="foo.bar.Duck"/>
<loadresource property="file.name">
<string value="${class.name}" />
<filterchain>
<replaceregex pattern="\." replace="/" flags="g" />
<replaceregex pattern="$" replace=".class" />
</filterchain>
</loadresource>
これはfile.name
プロパティに希望foo/bar/Duck.class
を置きます。
私はこのためにAntスクリプト・JavaScriptを使用して感じることは、はるかに簡単です
<property name="class.name" value="foo.bar.duck" />
<script language="javascript">
var className = project.getProperty("class.name");
println("before: " + className);
var filePath= className.replace("\\", "/");
println("File Path: "+filePath);
project.setProperty("filePath", filePath);
</script>
<echo message="${filePath}" />
注:あなたの変数に引数と同じ名前を付けることができます。例:var wsPathがエラーを起こす可能性があります。
このソリューションが動作する**のみとする場合にのみ**リソースが他の場所で見つけることができます。それ以外の場合は、[@matt](http://stackoverflow.com/a/9135198/1099452)のソリューションを使用してください。 – lucasvc