java - ग्रहण से स्वचालित रूप से चींटी build.xml फ़ाइल उत्पन्न करने का कोई तरीका?




eclipse ant (7)

ग्रहण से, मैंने पाया कि मैं आसानी से अपनी परियोजना के लिए एक चींटी निर्माण फ़ाइल निर्यात कर सकता हूं । यह तृतीय पक्ष पुस्तकालयों और कुछ आधार लक्ष्यों के संदर्भ प्रदान करता है। मैं इसे अपनी वैश्विक बिल्ड फ़ाइल से उपयोग कर रहा हूं। एकमात्र चीज जो मुझे इस बारे में परेशान करती है, यह है कि यदि परियोजना संरचना में कुछ संशोधित किया गया है (जैसे कि एक नई तृतीय पक्ष लाइब्रेरी जोड़ना), तो हमें build.xml फ़ाइल को पुन: उत्पन्न करने के बारे में सोचना होगा (हां यह कभी-कभी कठिन हो सकता है!)। मैं सोच रहा हूं कि अगर कोई यहां स्वचालित रूप से अपडेट होने का तरीका जानता है। "स्वचालित रूप से" मेरा मतलब है कि स्पष्ट रूप से ग्रहण से यह आवश्यक नहीं होगा कि हर बार इसकी आवश्यकता हो। मुझे नहीं पता कि ट्रिगर क्या हो सकता है ...

इस पर कोई विचार या ज्ञान?

धन्यवाद!

एमजे


Answers

मुझे एक ही समस्या है, हमारा कार्य वातावरण ग्रहण जावा परियोजनाओं पर आधारित है, और हमें स्वचालित रूप से एक एएनटी फ़ाइल बनाने की आवश्यकता है ताकि हम निरंतर एकीकरण सर्वर (जेनकींस, हमारे मामले में) का उपयोग कर सकें।

हमने अपने स्वयं के ग्रहण जावा को चींटी उपकरण में घुमाया, जो अब गिटहब पर उपलब्ध है:

ant-build-for-java

इसका उपयोग करने के लिए, कॉल करें:

java -jar ant-build-for-java.jar <folder with repositories> [<.userlibraries file>]

पहला तर्क भंडार के साथ फ़ोल्डर है। यह किसी भी .project फ़ाइल के लिए फ़ोल्डर को रिकर्सिवली .project । टूल दिए गए फ़ोल्डर में build.xml बनाएगा।

वैकल्पिक रूप से, दूसरी तर्क एक निर्यातित .userlibraries फ़ाइल हो सकती है, ग्रहण से, जब कोई भी परियोजना ग्रहण उपयोगकर्ता पुस्तकालयों का उपयोग करती है। टूल को केवल सापेक्ष पथों का उपयोग करके उपयोगकर्ता पुस्तकालयों के साथ परीक्षण किया गया था, इस प्रकार हम उन्हें अपने रेपो में उपयोग करते हैं। इसका तात्पर्य है कि परियोजनाओं द्वारा जार और अन्य अभिलेखागार एक ग्रहण परियोजना के अंदर हैं, और वहां से संदर्भित हैं।

टूल केवल अन्य ग्रहण परियोजनाओं और ग्रहण उपयोगकर्ता पुस्तकालयों से निर्भरताओं का समर्थन करता है।


मैं वह हूं जिसने ग्रहण के लिए चींटी निर्यात फ़िल्टर दान किया। मैंने ऑटो निर्यात सुविधा को जोड़ा, लेकिन केवल मेरे व्यक्तिगत प्लग-इन eclipse2ant , जिसे मैं अभी भी बग फिक्स को समन्वयित करने के लिए बनाए रखता हूं।

दुर्भाग्य से मेरे पास आधिकारिक ग्रहण निर्माण में विलय करने का कोई समय नहीं है।


मैं खुद ऐसा करने की कोशिश कर रहा हूं। मुझे जो मिला वह यह था कि "एक्सपोर्ट एंट बिल्डफाइल" को org.eclipse.ant.internal.ui.datatransfer.AntBuildfileExportPage.java फ़ाइल में लात मार दिया गया है। यह org.eclipse.ant.ui प्लगइन में रहता है।

स्रोत देखने के लिए, प्लग-इन विकास परिप्रेक्ष्य का उपयोग करें और प्लग-इन दृश्य खोलें। फिर org.eclipse.ant.ui प्लगइन पर राइट-क्लिक करें और> स्रोत प्रोजेक्ट के रूप में आयात करें का चयन करें।

मेरी योजना जावा प्रोग्राम बनाने के लिए प्रोग्राम प्रोग्रामिक रूप से चींटी बिल्डफाइल पीढ़ी को बंद करने के लिए है और इसे हर बार जब मैं अपनी परियोजनाओं के बिल्डरों को चींटी फ़ाइल जोड़कर निर्माण करता हूं तो एक एंट फ़ाइल में कॉल करता हूं (बिल्डरों के तहत प्रोजेक्ट पर वरीयताओं पर राइट-क्लिक करें) टैब)।


ग्रहण परियोजना पर राइट-क्लिक करें, फिर "निर्यात करें" फिर "सामान्य" फिर "चींटी बिल्ड फाइलें" पर क्लिक करें। मुझे नहीं लगता कि आउटपुट प्रारूप को अनुकूलित करना संभव है।


  • मुख्य मेनू से फ़ाइल> निर्यात का चयन करें (या प्रोजेक्ट नाम पर राइट क्लिक करें और निर्यात> निर्यात करें ... ) चुनें।
  • निर्यात संवाद में, सामान्य> चींटी बिल्डफाइल का चयन निम्नानुसार करें:

  • अगला क्लिक करें। जेनरेट एंट बिल्डफिलस्क्रीन में:

    • सूची में परियोजना की जांच करें।
    • "ग्रहण कंपाइलर का उपयोग कर प्रोजेक्ट संकलित करने के लिए लक्ष्य बनाएं" विकल्प को अनचेक करें - क्योंकि हम एक बिल्ड फ़ाइल बनाना चाहते हैं जो ग्रहण से स्वतंत्र है।
    • डिफ़ॉल्ट रूप से Ant buildfile के लिए नाम छोड़ दें: build.xml

  • समाप्त क्लिक करें , ग्रहण परियोजना के निर्देशिका के तहत build.xml फ़ाइल उत्पन्न करेगा:
  • चींटी संपादक में अपनी सामग्री खोलने के लिए build.xml फ़ाइल पर डबल क्लिक करें:

source


अपनी परियोजना में .classpath फ़ाइल पर एक नज़र डालें, जिसमें संभवतया आपकी अधिकांश जानकारी शामिल है। सबसे आसान विकल्प अपने स्वयं के "build.xml export" को रोल करना है, यानी प्रक्रिया। क्लासपाथ बिल्ड के दौरान एक नए build.xml में, और उसके बाद इसे एंटी सबटास्क के साथ कॉल करें।

एक्लिप्स जेडीटी में हुक करने के बजाय थोड़ा एक्सएमएल पार्स करना मेरे लिए बहुत आसान लगता है।


विस्तार के बिना फ़ाइल नाम वापस करने के लिए और पैरामीटर के बिना निम्नलिखित का उपयोग करें:

String filenameWithParams = FilenameUtils.getBaseName(urlStr); // may hold params if http://example.com/a?param=yes
return filenameWithParams.split("\\?")[0]; // removing parameters from url if they exist

पैराम्स के बिना एक्सटेंशन के साथ फ़ाइल नाम वापस करने के लिए इसका उपयोग करें:

/** Parses a URL and extracts the filename from it or returns an empty string (if filename is non existent in the url) <br/>
 * This method will work in win/unix formats, will work with mixed case of slashes (forward and backward) <br/>
 * This method will remove parameters after the extension
 *
 * @param urlStr original url string from which we will extract the filename
 * @return filename from the url if it exists, or an empty string in all other cases */
private String getFileNameFromUrl(String urlStr) {
    String baseName = FilenameUtils.getBaseName(urlStr);
    String extension = FilenameUtils.getExtension(urlStr);

    try {
        extension = extension.split("\\?")[0]; // removing parameters from url if they exist
        return baseName.isEmpty() ? "" : baseName + "." + extension;
    } catch (NullPointerException npe) {
        return "";
    }
}




java eclipse ant build.xml