تحديد الممتلكات النمل من البيئة ذات القيمة الافتراضية

StackOverflow https://stackoverflow.com/questions/936793

سؤال

أود أن أتصرف البرنامج النصي الخاص بي ببيئات الإفراج والتطوير.

لهذا أود تحديد العقار في النمل، اتصل به (على سبيل المثال) fileTargetName

fileTargetName سوف تحصل عليه قيمة من متغير البيئة RELEASE_VER إذا كان ذلك متاحا، إذا لم يكن متاحا، فستحصل على القيمة الافتراضية لل ديف

مساعدة مع النمل <condition><value></condition> & <property> للحصول عليه العمل موضع تقدير.

هل كانت مفيدة؟

المحلول

مثال من وثائق النمل من كيفية الحصول على متغير بيئة في خاصية:

<property environment="env"/>
<echo message="Number of Processors = ${env.NUMBER_OF_PROCESSORS}"/>
<echo message="ANT_HOME is set to = ${env.ANT_HOME}"/>

في حالتك، ستستخدم ${env.RELEASE_VER}.

ثم للجزء الشرطي، الوثائق هنا يقول أن هناك ثلاث سمات محتملة:

وصف السمة مطلوب خاصية اسم الخاصية لتعيين. نعم قيمة القيمة لتعيين الخاصية إلى. الإعدادات الافتراضية إلى "صحيح". لا توجد قيمة أخرى لتعيين الخاصية إذا كان الشرط لا يقيم إلى False. بشكل افتراضي، ستبقى الخاصية دون تغيير. منذ النمل 1.6.3.

وضعه معا:

<property environment="env"/>
<condition property="fileTargetName" value="${env.RELEASE_VER}" else="dev">
    <isset property="env.RELEASE_VER" />
</condition>

نصائح أخرى

لا تحتاج إلى استخدام <condition> لهذا. العقارات في النمل هي ثابت, ، لذلك يمكنك فقط استخدام هذا:

<property environment="env"/>
<property name="env.RELEASE_VER" value="dev"/>

إذا كان RELEASE_VER تم تعيين متغير البيئة، ثم ستحصل الممتلكات على قيمتها من البيئة والثاني <property> بيان لن يكون لها أي تأثير. خلاف ذلك، سيتم إلغاء تحديد مكان الإقامة بعد العبارة الأولى، وسيضع البيان الثاني قيمته "dev".

أنا متأكد من أن هناك طرق أسهل من هذا، ولكن ماذا عن:

<project name="example" default="show-props">

    <property environment="env" />

    <condition property="fileTargetName" value="${env.RELEASE_VER}">
        <isset property="env.RELEASE_VER" />
    </condition>

    <condition property="fileTargetName" value="dev">
        <not>
            <isset property="env.RELEASE_VER" />
        </not>
    </condition>

    <target name="show-props">
        <echo>property is ${fileTargetName}</echo>
    </target>

</project>
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top