2.1 maven-resources-plugin कॉपी संसाधन प्लगइन
जर तुम्ही वेब अॅप्लिकेशन तयार करत असाल, तर तुमच्याकडे त्यामध्ये विविध संसाधनांचा समूह असेल. या जार लायब्ररी, जेएसपी सर्व्हलेट्स, सेटिंग्ज फाइल्स आहेत. आणि अर्थातच, हा 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 maven-resources-plugin सह संसाधने फिल्टर करणे
प्लगइन संसाधने केवळ फायलींच्या स्वरूपातच नव्हे तर त्वरित निर्देशिकांच्या स्वरूपात निर्दिष्ट केली जाऊ शकतात. शिवाय, निर्देशिकेत एक मुखवटा जोडला जाऊ शकतो, जो या स्त्रोतामध्ये कोणत्या फायली समाविष्ट केल्या जातील हे निर्दिष्ट करते.
उदाहरण:
<resource>
<directory>src/main/resources/images</directory>
<includes>
<include>**/*.png</include>
</includes>
</resource>
मुखवटा म्हणून दोन तारका कितीही डिरेक्टरी दर्शवतात . वरील उदाहरणामध्ये, निर्देशिकेत असलेल्या सर्व png फाइल्स src/main/resources/images
(आणि त्याच्या उपनिर्देशिका) संसाधन डेटा म्हणून घेतल्या जातील.
तुम्हाला काही फाइल्स वगळायच्या असल्यास, तुम्ही वापरू शकता 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 source inclusion plugin
आणखी एक उपयुक्त प्लगइन - maven-source-plugin
तुम्हाला तुमच्या जावा फाइल्सचा स्त्रोत कोड असेंब्लीमध्ये समाविष्ट करण्याची परवानगी देतो. कशासाठी?
गोष्ट अशी आहे की वेब ऍप्लिकेशन्स व्यतिरिक्त, मावेन वापरून मोठ्या संख्येने लायब्ररी एकत्र केल्या जातात. जावाचे बरेच प्रकल्प ओपन-सोर्सच्या संकल्पनेचे अनुसरण करतात आणि जावा समुदायाला त्यांच्या स्वतःच्या स्त्रोतांसह वितरित केले जातात.
तुम्हाला वेगळ्या प्लगइनची गरज का आहे? आपण फक्त स्त्रोत कॉपी का करू शकत नाही आणि तेच आहे?
प्रथम, कोणत्याही जटिल प्रकल्पात, स्त्रोत अनेक ठिकाणी संग्रहित केले जाऊ शकतात.
दुसरे म्हणजे, xml वैशिष्ट्यांवर आधारित स्त्रोतांची निर्मिती बर्याचदा वापरली जाते, अशा स्त्रोतांना असेंब्लीमध्ये देखील समाविष्ट करणे आवश्यक आहे.
आणि तिसरे म्हणजे, तुम्ही तुमच्या असेंब्लीमध्ये विशेषत: गुप्त फाइल्स समाविष्ट न करण्याचा निर्णय घेऊ शकता.
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 अवलंबन कॉपी प्लगइन
प्रकल्प तयार करताना तुम्हाला अवलंबित्व (लायब्ररी) चाणाक्षपणे कॉपी करण्याची देखील आवश्यकता असू शकते. यासाठी एक प्लगइन वापरला जातो 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
.
अंमलबजावणी विभागात असे म्हटले आहे की प्लगइनला बिल्ड फेज - पॅकेज, ध्येय - कॉपी-डिपेंडन्स दरम्यान कॉल केले जाईल.
सर्वसाधारणपणे, या प्लगइनमध्ये उद्दिष्टांचा बराच मोठा संच आहे, येथे सर्वात लोकप्रिय आहेत:
१ | अवलंबित्व: विश्लेषण करा | अवलंबित्व विश्लेषण (वापरलेले, न वापरलेले, निर्दिष्ट, अनिर्दिष्ट) |
2 | अवलंबित्व: विश्लेषण-डुप्लिकेट | डुप्लिकेट अवलंबित्व ओळखणे |
3 | अवलंबित्व: निराकरण | सर्व अवलंबनांचे निराकरण (व्याख्या). |
4 | अवलंबित्व: निराकरण-प्लगइन | सर्व प्लगइनची परवानगी (व्याख्या). |
५ | अवलंबित्व: झाड | अवलंबित्व वृक्ष प्रदर्शित करणे |
तुम्ही कॉन्फिगरेशन विभागात अतिरिक्त पॅरामीटर्स देखील सेट करू शकता:
१ | outputDirectory | डिरेक्ट्री जिथे अवलंबित्व कॉपी केले जाईल |
2 | overwriteReleases | रिलीझ तयार करताना अवलंबन अधिलिखित करण्यासाठी ध्वजांकित करा |
3 | स्नॅपशॉट्स overwrite | स्नॅपशॉट नसलेल्या टर्मिनल अवलंबित्वांवर अधिलिखित करण्यासाठी ध्वजांकित करा |
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