1

大文字と小文字を区別せずに 2 つの値が等しいかどうかを確認する方法はありますか? たとえば、「myValue」は「myvalue」と等しく、大文字と小文字は区別されません。

<if>
    <equals arg1="myValue" arg2="myvalue" />
    <then>
        ...
    </then>
</if>
4

4 に答える 4

7

ant-contrib は最悪です。通常、非常に読みにくいスパゲッティ コードになり、ant-contrib jar を追加する必要があります。
通常は、ant を ant のままにしておく方がよいでしょう... これはスクリプト言語ではなく、ビルド ステップの単純な宣言です。凝りたい場合は、Java で独自のタスクを作成し、IDE、デバッガー、および単体テストを実行します。

Ant では、<condition>タスクでこれを行います。具体的<equals>casesensitive="false"は、プロパティを設定し、そのプロパティに基づいて条件付きでターゲットを実行します。たとえば、この男をant -Darg1="foo" -Darg2="foo"

<?xml version="1.0" encoding="utf-8"?>
<project name="condition" default="condition-true" basedir=".">

<condition property="strings-match">
    <equals arg1="${arg1}" arg2="${arg2}" casesensitive="false"/>
</condition>

<target name="display-props">
    <echo>"arg1 = ${arg1}"</echo>
    <echo>"arg2 = ${arg2}"</echo>
    <echo>"strings-match = ${strings-match}"</echo>
</target>

<target name="condition-true" depends="display-props" if="${strings-match}">
    <echo>true</echo>
</target>
</project>

これは特にant-contribに関するあなたの質問に答えないことを知っています。新しいantファイルを作成することは決してないと言って、さらに道に迷います(gradleまたはmavenを好みます)興味深い読書:

于 2013-01-09T17:55:11.633 に答える
0

<matches>条件を使用してこれを行うことができます。条件は<matches>文字列を正規表現と比較でき、大文字と小文字を区別しません。正規表現に一致させる文字列を作成するだけです。

頭のてっぺんから:

<property name="arg1" value="MY_VALUE"/>
<property name="arg2" value="my_value"/>
<if>
    <matches
        string="${arg1}"
        pattern="^${arg2}$"
        casesensitive="false">
    <then>
          <echo>${arg1} and ${arg2} are the same, but may differ in case</echo>
    </then>
</if>
于 2013-01-08T21:11:21.220 に答える
-1

内でこれを行うことはできないと思います<if>。ただし、小さな JavaScript を追加できます。

<script language="javascript"> 
  <![CDATA[
  // getting value for myValue
  myValue = test.getProperty("myValue");  
  // TODO add some check here to handle empty property value
  // convert to uppercase 
  valueUpper = myValue.toUpperCase();  
  // store the result in a new property 
  test.setProperty("myValue.upper",valueUpper); 
   ]]> 
</script>

<if>
    <equals arg1="${myValue.upper}" arg2="MYVALUE" />
    <then>
        ...
    </then>
</if>

: testAnt プロジェクト名を参照します。

または、別の ant-contrib function を探すこともできますpropertyRegex。文字列を大文字または小文字に変換するためにそれを使用する方法の実際の例が見つからなかったので、javascript をより良い選択と考えます。

于 2013-01-08T18:34:32.897 に答える