Apache Maven1.0.2 の maven.xml(Jellyスクリプト)についての質問です。


以下のような独自ゴールを書いたのですが、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

よろしくお願いします。

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2006/08/24 19:59:17
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答1件)

id:miyamuko No.1

回答回数29ベストアンサー獲得回数11

ポイント60pt

ドキュメント探したのですが見つからないですねぇ。。。

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'}">
id:F57PB

調査して頂き、ありがとうございましす。

ご提示頂いた2つの方法で試したところ、いずれもうまく動作しました。

ただ、解せないのは ${hoge.value == 'yes'}でも、以前は動作していたんです。。。

それが急に動作しなくなりました。

この間にどこをどう変更したかは覚えていないのですが、

何らかのライブラリのバージョンが変わった(Mavenで自動的にダウンロードされて)

のかもしれません。

2006/08/24 12:40:24

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません