CodeGym/Java Course/मॉड्यूल 3/मावेन प्रकल्प तयार करताना फायली व्यवस्थापित करणे

मावेन प्रकल्प तयार करताना फायली व्यवस्थापित करणे

उपलब्ध

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>सत्य आहे.

टिप्पण्या
  • लोकप्रिय
  • नवीन
  • जुने
टिप्पणी करण्यासाठी तुम्ही साईन इन केलेले असणे आवश्यक आहे
या पानावर अजून कोणत्याही टिप्पण्या नाहीत