以下のような独自ゴールを書いたのですが、maven.xml 4行目のif分岐が
思ったように動作しません。
○maven.xml
1: <project xmlns:j="jelly:core" xmlns:ant="jelly:ant" default="hoge">
2: <goal name="hoge">
3: <echo message="hoge.value = '${hoge.value}'"/>
4: <j:if test="${hoge.value == 'yes'}">
5: <echo message="YES"/>
6: </j:if>
7: <j:else>
8: <echo message="NO"/>
9: </j:else>
10: </goal>
11: </project>
○project.properties
1: hoge.value = yes
○実行結果
bash-3.1$ maven hoge
:
build:start:
hoge:
[echo] hoge.value = 'yes'
<j:else> [echo] NO
BUILD SUCCESSFUL
Total time: 3 seconds
実行結果のように、プロパティhoge.valueの値は取れているのですが、
それを${hoge.value == 'yes'}で評価するとfalseになってしまいます。
文字列評価式の書き方がまずいのでしょうか?
既存のプラグインのmaven.xmlを見ても、同様の評価式を良く見るのですが。。。
原因及び対処法をご存知でしたらご教授下さい。
環境は以下の通りです。
・OS・・・Windows XP Pro
・J2SE・・・JavaSE5.0
・Maven・・・1.0.2
よろしくお願いします。
ドキュメント探したのですが見つからないですねぇ。。。
project.properties の値を参照するには、以下のように context.getVariable を使うか、
<j:if test="${context.getVariable('hoge.value') == 'yes'}">
一旦、j:set で変数に設定すればよさそうです。
<j:set var="hogeValue" value="${hoge.value}"/> <j:if test="${hogeValue == 'yes'}">
調査して頂き、ありがとうございましす。
ご提示頂いた2つの方法で試したところ、いずれもうまく動作しました。
ただ、解せないのは ${hoge.value == 'yes'}でも、以前は動作していたんです。。。
それが急に動作しなくなりました。
この間にどこをどう変更したかは覚えていないのですが、
何らかのライブラリのバージョンが変わった(Mavenで自動的にダウンロードされて)
のかもしれません。