2.1 मावेन-संसाधन-प्लगइन कॉपी संसाधन प्लगइन
यदि आप एक वेब एप्लिकेशन बना रहे हैं, तो आपके पास इसमें विभिन्न संसाधनों का एक समूह होगा। ये जार लाइब्रेरी, जेएसपी सर्वलेट्स, सेटिंग्स फाइल हैं। और निश्चित रूप से, यह html
, css
, js
, जैसी स्थिर फाइलों का एक समूह है, साथ ही विभिन्न चित्र भी हैं।
डिफ़ॉल्ट रूप से, प्रोजेक्ट बनाते समय, मावेन आपकी सभी फाइलों को फ़ोल्डर से src/main/resources
लक्ष्य निर्देशिका में कॉपी कर देगा। अगर आप इस व्यवहार में बदलाव करना चाहते हैं, तो प्लगइन आपकी मदद करेगा maven-resources-plugin
।
ऐसी प्लगइन के लिए नमूना कोड:
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>2.6</version>
<executions>
<execution>
<id>copy-resources</id>
<phase>validate</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>
${basedir}/target/resources
</outputDirectory>
<resources>
<resource> instructions for copying a resource 1 </resource>
<resource> instructions for copying a resource 2 </resource>
<resource> instructions for copying a resource N </resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
इस प्लगइन को सत्यापन चरण के दौरान बुलाया जाएगा। टैग का उपयोग करके, <outputDirectory>
आप उस निर्देशिका को सेट कर सकते हैं जहां प्लगइन को <resources>
. और यह वह जगह है जहाँ प्लगइन अपनी पूरी ताकत से प्रकट हो सकता है।
2.2 मावेन-संसाधन-प्लगइन के साथ संसाधनों को फ़िल्टर करना
प्लगइन संसाधनों को न केवल फाइलों के रूप में, बल्कि तुरंत निर्देशिकाओं के रूप में भी निर्दिष्ट किया जा सकता है। इसके अलावा, निर्देशिका में एक मुखौटा जोड़ा जा सकता है, जो निर्दिष्ट करता है कि इस संसाधन में कौन सी फाइलें शामिल की जाएंगी।
उदाहरण:
<resource>
<directory>src/main/resources/images</directory>
<includes>
<include>**/*.png</include>
</includes>
</resource>
मास्क के रूप में दो तारांकन किसी भी संख्या में निर्देशिकाओं का प्रतिनिधित्व करते हैं । उपरोक्त उदाहरण में, निर्देशिका src/main/resources/images
(और इसकी उपनिर्देशिका) में निहित सभी png फ़ाइलों को संसाधन डेटा के रूप में लिया जाएगा।
अगर आप कुछ फाइलों को बाहर करना चाहते हैं, तो आप इसका उपयोग कर सकते हैं exclude
। उदाहरण:
<resource>
<directory>src/main/resources/images</directory>
<includes>
<include>**/*.png</include>
</includes>
<excludes>
<exclude>old/*.png</exclude>
</excludes>
</resource>
टैग क्रमिक रूप से लागू होते हैं: सबसे पहले, शामिल फ़ाइलों में निर्दिष्ट फ़ाइलों को संसाधन में जोड़ा जाएगा, और फिर बाहर की गई फ़ाइलों को इस सूची से बाहर कर दिया जाएगा।
लेकिन वह सब नहीं है। प्लगइन फ़ाइलों के अंदर देख सकता है (यदि वे पाठ हैं, तो निश्चित रूप से)। और, उदाहरण के लिए, application.properties
असेंबली के आवश्यक संस्करण को फ़ाइल में जोड़ें। फ़ाइल की सामग्री को संसाधित करने के लिए प्लगइन के लिए, आपको पैरामीटर निर्दिष्ट करने की आवश्यकता है <filtering>true</filtering>
।
उदाहरण:
<resource>
<directory>src/main/resources/properties</directory>
<filtering>true</filtering>
<includes>
<include>**/*. properties </include>
</includes>
</resource>
इस प्लगइन के बारे में अधिक जानकारी लिंक पर देखी जा सकती है: https://maven.apache.org/plugins/maven-resources-plugin/examples/filter.html
2.3 मावेन-स्रोत-प्लगइन स्रोत समावेशन प्लगइन
एक और उपयोगी प्लगइन - maven-source-plugin
आपको असेंबली में अपनी जावा फाइलों के स्रोत कोड को शामिल करने की अनुमति देता है। किसलिए?
बात यह है कि वेब एप्लिकेशन के अलावा, मावेन का उपयोग करके बहुत बड़ी संख्या में पुस्तकालयों को इकट्ठा किया जाता है। बहुत सारे जावा प्रोजेक्ट ओपन-सोर्स की अवधारणा का पालन करते हैं और जावा समुदाय को अपने स्वयं के स्रोतों से वितरित किए जाते हैं।
आपको एक अलग प्लगइन की आवश्यकता क्यों है? आप सिर्फ स्रोत की नकल क्यों नहीं कर सकते और बस हो गया?
सबसे पहले, किसी भी जटिल परियोजना में स्रोतों को कई स्थानों पर संग्रहित किया जा सकता है।
दूसरे, एक्सएमएल विनिर्देशों के आधार पर स्रोतों की पीढ़ी का अक्सर उपयोग किया जाता है, ऐसे स्रोतों को भी असेंबली में शामिल करने की आवश्यकता होती है।
और तीसरा, आप अपनी असेंबली में किसी विशेष रूप से गुप्त फाइल को शामिल नहीं करने का निर्णय ले सकते हैं।
मेवेन-स्रोत-प्लगइन प्लगइन का उपयोग करने का एक उदाहरण:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>2.2.1</version>
<executions>
<execution>
<id>attach-sources</id>
<phase>verify</phase>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
2.4 मावेन-डिपेंडेंसी-प्लगइन डिपेंडेंसी कॉपी प्लगइन
प्रोजेक्ट बनाते समय आपको निर्भरता (पुस्तकालयों) को चालाकी से कॉपी करने की आवश्यकता हो सकती है। इसके लिए एक प्लगइन का उपयोग किया जाता है maven-dependency-plugin
।
उदाहरण:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.5.1</version>
<configuration>
<outputDirectory>
${project.build.directory}/lib/
</outputDirectory>
</configuration>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
</execution>
</executions>
</plugin>
इस उदाहरण में, प्लगइन का डिफ़ॉल्ट व्यवहार लिखा है - पुस्तकालयों को ${project.build.directory}/lib
.
निष्पादन अनुभाग बताता है कि प्लगइन को बिल्ड चरण - पैकेज, लक्ष्य - प्रति-निर्भरता के दौरान बुलाया जाएगा।
सामान्य तौर पर, इस प्लगइन में लक्ष्यों का एक बड़ा समूह है, यहाँ सबसे लोकप्रिय हैं:
1 | निर्भरता: विश्लेषण | निर्भरता विश्लेषण (प्रयुक्त, अप्रयुक्त, निर्दिष्ट, अनिर्दिष्ट) |
2 | निर्भरता: विश्लेषण-डुप्लिकेट | डुप्लिकेट निर्भरताओं की पहचान करना |
3 | निर्भरता: समाधान | सभी निर्भरताओं का संकल्प (परिभाषा)। |
4 | निर्भरता: संकल्प-प्लगइन | सभी प्लगइन्स की अनुमति (परिभाषा)। |
5 | निर्भरता: पेड़ | निर्भरता के पेड़ को प्रदर्शित करना |
आप कॉन्फ़िगरेशन अनुभाग में अतिरिक्त पैरामीटर भी सेट कर सकते हैं:
1 | उत्पादन निर्देशिका | निर्देशिका जहां निर्भरताओं की प्रतिलिपि बनाई जाएगी |
2 | ओवरराइट रिलीज | रिलीज़ बनाते समय निर्भरताओं को अधिलेखित करने के लिए ध्वजांकित करें |
3 | ओवरराइट स्नैपशॉट | स्नैपशॉट वाले गैर-टर्मिनल निर्भरता को अधिलेखित करने के लिए ध्वजांकित करें |
4 | overWriteIfNewer | नए संस्करणों के साथ पुस्तकालयों को अधिलेखित करने के लिए फ़्लैग करें |
उदाहरण:
<configuration>
<outputDirectory>
${project.build.directory}/lib/
</outputDirectory>
<overWriteReleases>false</overWriteReleases>
<overWriteSnapshots>false</overWriteSnapshots>
<overWriteIfNewer>true</overWriteIfNewer>
</configuration>
डिफ़ॉल्ट रूप से <overWriteReleases>
, और <overWriteSnapshots>
असत्य है, क्योंकि <overWriteIfNewer>
सत्य है।
GO TO FULL VERSION