file - सकत - एक चींटी लक्ष्य चलाने के लिए चींटी कार्य केवल तभी होता है जब कोई फ़ाइल मौजूद हो?




चींटी कितना वजन उठा सकती है (4)

क्या कोई एएनटी कार्य है जो केवल एक ब्लॉक निष्पादित करेगा यदि कोई दी गई फ़ाइल मौजूद है? मुझे समस्या है कि मेरे पास एक सामान्य एंटी स्क्रिप्ट है जो कुछ विशेष प्रसंस्करण करना चाहिए, लेकिन केवल तभी जब कोई विशिष्ट कॉन्फ़िगरेशन फ़ाइल मौजूद हो।

https://code.i-harness.com


फ़ाइल नाम फ़िल्टर जैसे DB_*/**/*.sql का उपयोग करके जांचें

वाइल्डकार्ड फ़िल्टर से संबंधित एक या अधिक फाइल मौजूद होने पर एक क्रिया करने के लिए यहां एक भिन्नता है। यही है, आप फ़ाइल का सही नाम नहीं जानते हैं।

यहां, हम " डीबी_ * " नामक किसी भी उप-निर्देशिका में " * .sql " फ़ाइलों की तलाश कर रहे हैं, जो पुनरावर्ती रूप से हैं। आप फ़िल्टर को अपनी जरूरतों के अनुसार समायोजित कर सकते हैं।

एनबी: अपाचे चींटी 1.7 और उच्चतम!

मेल खाने वाली फाइल मौजूद होने पर संपत्ति सेट करने का लक्ष्य यहां दिया गया है:

<target name="check_for_sql_files">
    <condition property="sql_to_deploy">
        <resourcecount when="greater" count="0">
            <fileset dir="." includes="DB_*/**/*.sql"/>
        </resourcecount>
    </condition>
</target>

यहां एक "सशर्त" लक्ष्य है जो केवल तभी चलाता है जब फाइल मौजूद हों:

<target name="do_stuff" depends="check_for_sql_files" if="sql_to_deploy">
    <!-- Do stuff here -->
</target>

आप इसे आवश्यक नामों के बराबर नाम वाली फाइलों की सूची के साथ ऑपरेशन करने के लिए कर सकते हैं। यह एक विशेष लक्ष्य बनाने के बजाय बहुत आसान और प्रत्यक्ष है। और आपको किसी भी अतिरिक्त उपकरण, केवल शुद्ध चींटी की आवश्यकता नहीं है।

<delete>
    <fileset includes="name or names of file or files you need to delete"/>
</delete>

देखें: FileSet


मुझे लगता है कि इस समान उत्तर का संदर्भ देने लायक है: https://.com/a/5288804/64313

यहां एक और त्वरित समाधान है। <available> टैग का उपयोग करके इस पर अन्य विविधताएं संभव हैं:

# exit with failure if no files are found
<property name="file" value="${some.path}/some.txt" />
<fail message="FILE NOT FOUND: ${file}">
    <condition><not>
        <available file="${file}" />
    </not></condition>
</fail>

यह कोडिंग परिप्रेक्ष्य से थोड़ा अधिक समझ सकता है (एंटी-कॉन्ट्रिब के साथ उपलब्ध: http://ant-contrib.sourceforge.net/ ):

<target name="someTarget">
    <if>
        <available file="abc.txt"/>
        <then>
            ...
        </then>
        <else>
            ...
        </else>
    </if>
</target>




build-automation