मेवेन बहुत अच्छा है। यह मुझे pom
कॉन्फ़िगरेशन में निर्भर पैकेज के संस्करण निर्दिष्ट करके जार निर्भरता नरक से बाहर रखता है, और उन्हें स्वचालित रूप से लागू करता है। यह एम 2 ई के माध्यम से एक्लिप्स के साथ भी महान एकीकरण है, ताकि चीजें आईडीई में सहजता से काम कर सकें।मेवेन और ग्रहण: किसी परियोजना में गैर-मेवेन या बाहरी जार जोड़ने का एक विश्वसनीय तरीका?
यह उन सभी निर्भरताओं के लिए बहुत अच्छा है जो विश्व स्तर पर मेवेन के लिए जाने जाते हैं। हालांकि, कभी-कभी, ऐसे पुस्तकालय होते हैं जिन्हें एक परियोजना में शामिल करने की आवश्यकता होती है जो मेवेन रिपोस में उपलब्ध नहीं है। इस मामले में, मैं आमतौर पर उन्हें अपनी परियोजना में lib/
निर्देशिका में जोड़ता हूं। जब तक वे कक्षा में होते हैं तब चीजें संकलित होती हैं।
हालांकि, किसी परियोजना को आयात करते समय समस्या उन्हें स्वचालित रूप से शामिल करने जा रही है। मैं इस समस्या को आधा बेक्ड फिक्सेस और हैक के साथ बहुत लंबे समय तक सहन कर रहा हूं। प्रत्येक बार जब कोई इस प्रोजेक्ट को इंस्टॉल करता है, तो मुझे उन्हें अपने ग्रहण निर्माण पथ में lib/
में जार मैन्युअल रूप से जोड़ने के लिए कहना होगा ताकि सभी त्रुटियां दूर हो जाएं। निम्नलिखित की तरह कुछ:
मैं एक तरह से एक तरीका है कि दोनों mvn
कमांड लाइन कार्यक्रम और ग्रहण के साथ काम करता में इस प्रक्रिया को स्वचालित करने के लिए खोज कर रहा हूँ: अधिक ग्रहण पर बल दिया जाता है क्योंकि यह अच्छा है ऐसी परियोजनाएं हैं जो आप उन्हें आयात करते समय संकलित करते हैं।
मैं इसके लिए एक रेपो सर्वर स्थापित नहीं करना चाहता, न ही मेरे पास घर में मालिकाना घटक हैं जो स्थानीय रूप से कुछ भी स्थापित करने की गारंटी देंगे। मेरे पास बस कुछ जार फ़ाइलें हैं जहां डेवलपर्स मेवेन का उपयोग नहीं करते हैं; और मैं उनके साथ संकलन करना चाहता हूं ... मुझे बस अपने सॉफ़्टवेयर के वितरण में शामिल करने में सक्षम होना चाहिए, है ना?
मैं वास्तव में इसे लागू करने के लिए एक उचित तरीका ढूंढ रहा हूं जो बिना किसी झगड़े के ग्रहण में काम करेगा। This is one solution मुझे आशाजनक मिला है, लेकिन निश्चित रूप से इस समस्या का आधिकारिक समाधान प्रतीत नहीं होता है। करीब आने वाली एकमात्र चीज maven-addjars-plugin है, जो ठीक काम करती है लेकिन केवल कमांडलाइन पर। इस प्लग बुरा नहीं है, और एक बहुत ही उचित विन्यास है:
<plugin>
<groupId>com.googlecode.addjars-maven-plugin</groupId>
<artifactId>addjars-maven-plugin</artifactId>
<version>1.0.5</version>
<executions>
<execution>
<goals>
<goal>add-jars</goal>
</goals>
<configuration>
<resources>
<resource>
<directory>${project.basedir}/lib/java-aws-mturk</directory>
</resource>
<resource>
<directory>${project.basedir}/lib/not-in-maven</directory>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
हालांकि, ग्रहण में चलाने के लिए अपने pom.xml
, जो मैं काम करने के लिए मिल गया कभी नहीं किया है के लिए जीवन चक्र मानचित्रण के बारे में निम्नलिखित गंदगी जोड़ने शामिल है इसे पाने के लिए कोशिश कर रहा है; मुझे यह भी नहीं लगता कि यह ग्रहण निर्माण पथ में वास्तव में कुछ भी जोड़ने के लिए कॉन्फ़िगर किया गया है।
<pluginManagement>
<plugins>
<!--This plugin's configuration is used to store Eclipse m2e settings only. It has no influence on the Maven build itself.-->
<plugin>
<groupId>org.eclipse.m2e</groupId>
<artifactId>lifecycle-mapping</artifactId>
<version>1.0.0</version>
<configuration>
<lifecycleMappingMetadata>
<pluginExecutions>
<pluginExecution>
<pluginExecutionFilter>
<groupId>
com.googlecode.addjars-maven-plugin
</groupId>
<artifactId>
addjars-maven-plugin
</artifactId>
<versionRange>
[1.0.5,)
</versionRange>
<goals>
<goal>add-jars</goal>
</goals>
</pluginExecutionFilter>
<action>
<execute />
</action>
</pluginExecution>
</pluginExecutions>
</lifecycleMappingMetadata>
</configuration>
</plugin>
</plugins>
</pluginManagement>
के रूप में एक निर्भरता को जोड़ने मैं स्थानीय नेक्सस स्थापना पर भरोसा करना पसंद करूंगा। –
मैं इस सॉफ्टवेयर को दूसरों को उपयोग करने में सक्षम होना चाहता हूं, इसलिए यह अनुचित लगता है। यह केवल कुछ जार है जिन्हें मैं साझा करना चाहता हूं, इसलिए यह जटिल नहीं होना चाहिए। –
नेक्सस (या कोई अन्य रेपो कार्यान्वयन) आपकी निर्माण प्रक्रिया में मदद करेगा, इसलिए आपके उपयोगकर्ताओं के लिए इसकी आवश्यकता नहीं होगी; जबकि यदि आप एफओएसएस हैं, तो अन्य पुस्तकालयों को मंत्रमुग्ध करना और पैच अपस्ट्रीम भेजना समुदाय में योगदान देगा। वैसे भी, आपकी पसंद। –