0

以下のようなことをしようとしています..

 <property name="INSTANCE_NAME" value="${PRODUCT5_JBOSS_INSTANCE}" />

PRODUCT5_JBOSS_INSTANCE-プロパティファイルからそのキー名の値を取得しますしたがって、上記のようにINSTANCE_NAME = product5-jboss.

ただし、上記の行は、次のようなさまざまな製品に対して複数回繰り返されます

  <property name="INSTANCE_NAME" value="${PRODUCT6_JBOSS_INSTANCE}" />
   <property name="INSTANCE_NAME" value="${PRODUCT7_JBOSS_INSTANCE}" />

内部でvalue="${PRODUCT7_JBOSS_INSTANCE}"は、以下のように動的に product7 を渡したいと思います..

value="${${PRODUCT_NUMBER}_JBOSS_INSTANCE}"--しかし、これは機能しません。2 つの $ 記号が機能しないためです。私のターゲットは現在PRODUCT_NUMBER、値を取得する必要がPRODUCT7あり PRODUCT7_JBOSS_INSTANCE、ファイルから値を取得する必要があります。product7-jboss

このためのアプローチを手伝ってもらえますか

4

1 に答える 1

2

Ant のプロパティ ファイルからの変数の質問への回答に示されているように、マクロ定義を使用してこれを解決できます。

あなたの場合の同じ例を次に示します。

<project default="test">

    <!-- override on command line -->
    <property name="PRODUCT_NAME" value="PRODUCT5"/>

    <property file="test.properties"/>

    <macrodef name="property-read">
        <attribute name="name"/>
        <attribute name="from"/>
        <sequential>
            <property name="@{name}" value="${@{from}_JBOSS_INSTANCE}"/>
        </sequential>
    </macrodef>

    <target name="test">
        <echo>PRODUCT_NAME: ${PRODUCT_NAME}</echo>
        <property-read name="instance" from="${PRODUCT_NAME}"/>
        <echo>DYNAMIC PROPERTY VALUE: ${instance}</echo>
    </target>

</project>

プロパティ定義:

$ cat test.properties
PRODUCT5_JBOSS_INSTANCE=product5.jboss.instance
PRODUCT7_JBOSS_INSTANCE=product7.jboss.instance

出力:

$ ant -DPRODUCT_NAME=PRODUCT7
Buildfile: C:\Users\sudocode\tmp\ant\build.xml

test:
     [echo] PRODUCT_NAME: PRODUCT7
     [echo] DYNAMIC PROPERTY VALUE: product7.jboss.instance

BUILD SUCCESSFUL
Total time: 0 seconds
$
$
$ ant -DPRODUCT_NAME=PRODUCT5
Buildfile: C:\Users\sudocode\tmp\ant\build.xml

test:
     [echo] PRODUCT_NAME: PRODUCT5
     [echo] DYNAMIC PROPERTY VALUE: product5.jboss.instance

BUILD SUCCESSFUL
Total time: 0 seconds
于 2012-06-15T09:24:25.650 に答える