मावेन - पोम

पीओएम का मतलब प्रोजेक्ट ऑब्जेक्ट मॉडल है। यह मावेन की मौलिक इकाई है। यह एक XML फ़ाइल है जो pom.xml के रूप में प्रोजेक्ट की आधार निर्देशिका में रहती है।

पीओएम में परियोजना के बारे में जानकारी और परियोजना के निर्माण के लिए मावेन द्वारा उपयोग किए जाने वाले विभिन्न कॉन्फ़िगरेशन विवरण हैं।

POM में गोल और प्लगइन्स भी होते हैं। किसी कार्य या लक्ष्य को निष्पादित करते समय, मावेन वर्तमान निर्देशिका में पीओएम की तलाश करता है। यह पीओएम को पढ़ता है, आवश्यक कॉन्फ़िगरेशन जानकारी प्राप्त करता है, और फिर लक्ष्य को निष्पादित करता है। पोम में निर्दिष्ट कुछ विन्यास निम्नलिखित हैं -

  • परियोजना निर्भरताएँ
  • plugins
  • goals
  • प्रोफाइल बनाएं
  • परियोजना संस्करण
  • developers
  • मेलिंग सूची

पीओएम बनाने से पहले, हमें पहले परियोजना तय करनी चाहिए group (groupId), इसके name (विरूपण साक्ष्य) और इसके संस्करण के रूप में इन विशेषताओं को विशिष्ट रूप से भंडार में परियोजना की पहचान करने में मदद मिलती है।

पीओएम उदाहरण

<project xmlns = "http://maven.apache.org/POM/4.0.0"
   xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation = "http://maven.apache.org/POM/4.0.0
   http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>

   <groupId>com.companyname.project-group</groupId>
   <artifactId>project</artifactId>
   <version>1.0</version>
</project>

यह ध्यान दिया जाना चाहिए कि प्रत्येक परियोजना के लिए एक एकल पीओएम फ़ाइल होनी चाहिए।

  • सभी POM फ़ाइलों की आवश्यकता होती है project तत्व और तीन अनिवार्य क्षेत्र: groupId, artifactId, version

  • रिपॉजिटरी में प्रोजेक्ट नोटेशन है groupId:artifactId:version

  • पोम के लिए न्यूनतम आवश्यकताएं -

अनु क्रमांक। नोड और विवरण
1

Project root

यह प्रोजेक्ट रूट टैग है। आपको अपाचे स्कीमा और w3.org विनिर्देश जैसे बुनियादी स्कीमा सेटिंग्स को निर्दिष्ट करने की आवश्यकता है।

2

Model version

मॉडल संस्करण 4.0.0 होना चाहिए।

3

groupId

यह प्रोजेक्ट के समूह का एक आईडी है। यह आमतौर पर एक संगठन या एक परियोजना के बीच अद्वितीय है। उदाहरण के लिए, एक बैंकिंग समूह com.company.bank के पास बैंक से संबंधित सभी परियोजनाएं हैं।

4

artifactId

यह प्रोजेक्ट का एक Id है। यह आमतौर पर परियोजना का नाम है। उदाहरण के लिए, उपभोक्ता-बैंकिंग। GroupId के साथ, विरूपण साक्ष्य भंडार के भीतर विरूपण साक्ष्य के स्थान को परिभाषित करता है।

5

version

यह प्रोजेक्ट का संस्करण है। GroupId के साथ, इसका उपयोग एक कलाकृति के भंडार में एक दूसरे से अलग संस्करणों के लिए किया जाता है। उदाहरण के लिए -

com.company.bank:consumer-banking:1.0

com.company.bank:consumer-banking:1.1.

सुपर पोम

सुपर पोम मावेन का डिफ़ॉल्ट पोम है। सभी POMs एक माता-पिता या डिफ़ॉल्ट (स्पष्ट रूप से परिभाषित या नहीं होने के बावजूद) से प्राप्त होते हैं। यह आधार POM के रूप में जाना जाता हैSuper POM, और डिफ़ॉल्ट रूप से विरासत में मिले मूल्यों को समाहित करता है।

मावेन प्रासंगिक लक्ष्य को निष्पादित करने के लिए प्रभावी पोम (सुपर पोम प्लस प्रोजेक्ट कॉन्फ़िगरेशन से कॉन्फ़िगरेशन) का उपयोग करते हैं। यह डेवलपर्स को उसके pom.xml में न्यूनतम कॉन्फ़िगरेशन विवरण निर्दिष्ट करने में मदद करता है। यद्यपि कॉन्फ़िगरेशन आसानी से ओवरराइड किया जा सकता है।

सुपर POM के डिफ़ॉल्ट कॉन्फ़िगरेशन को देखने का एक आसान तरीका निम्नलिखित कमांड चलाकर है: mvn help:effective-pom

अपने कंप्यूटर पर किसी भी निर्देशिका में pom.xml बनाएँ। उपर्युक्त उदाहरण pom की सामग्री का उपयोग करें।

नीचे दिए गए उदाहरण में, हमने C: \ MVN \ Project फ़ोल्डर में pom.xml बनाया है।

अब कमांड कंसोल खोलें, pom.xml वाले फ़ोल्डर पर जाएं और निम्नलिखित को निष्पादित करें mvn आदेश।

C:\MVN\project>mvn help:effective-pom

मावेन प्रसंस्करण शुरू करेगा और प्रभावी-पोम प्रदर्शित करेगा।

[INFO] Scanning for projects...
[INFO] Searching repository for plugin with prefix: 'help'.
[INFO] ------------------------------------------------------------------------
[INFO] Building Unnamed - com.companyname.project-group:project-name:jar:1.0
[INFO]    task-segment: [help:effective-pom] (aggregator-style)
[INFO] ------------------------------------------------------------------------
[INFO] [help:effective-pom {execution: default-cli}]
[INFO]

.....

[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------
[INFO] Total time: < 1 second
[INFO] Finished at: Thu Jul 05 11:41:51 IST 2012
[INFO] Final Memory: 6M/15M
[INFO] ------------------------------------------------------------------------

सांत्वना, परिणाम, प्रक्षेप और प्रोफाइल के बाद कंसोल में परिणाम के रूप में प्रभावी POM को प्रदर्शित किया जाता है।

<?xml version="1.0" encoding="UTF-8"?>
<!-- ============================================== -->
<!-- -->
<!-- Generated by Maven Help Plugin on 2015-04-09T11:41:51 -->
<!-- See: http://maven.apache.org/plugins/maven-help-plugin/ -->
<!-- -->
<!-- ==============================================-->

<!-- ==============================================-->
<!-- -->
<!-- Effective POM for project -->
<!-- 'com.companyname.project-group:project-name:jar:1.0' -->
<!-- -->
<!-- ============================================== -->

<project xmlns = "http://maven.apache.org/POM/4.0.0" xmlns:xsi = "http://www.w3.org/

2001/XMLSchema-instance" xsi:schemaLocation = "http://maven.apache.org/POM/4.0.0 

http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <groupId>com.companyname.project-group</groupId>
   <artifactId>project</artifactId>
   <version>1.0</version>
   <build>
      <sourceDirectory>C:\MVN\project\src\main\java</sourceDirectory>
      <scriptSourceDirectory>src/main/scripts</scriptSourceDirectory>

      <testSourceDirectory>C:\MVN\project\src\test\java</testSourceDirectory>
      <outputDirectory>C:\MVN\project\target\classes</outputDirectory>
      <testOutputDirectory>C:\MVN\project\target\test-classes</testOutputDirectory>
      <resources>
         <resource>
            <mergeId>resource-0</mergeId>
            <directory>C:\MVN\project\src\main\resources</directory>
         </resource>
      </resources>
      <testResources>
         <testResource>
            <mergeId>resource-1</mergeId>
            <directory>C:\MVN\project\src\test\resources</directory>
         </testResource>
      </testResources>
      <directory>C:\MVN\project\target</directory>
      <finalName>project-1.0</finalName>
   
      <pluginManagement>
         <plugins>
            <plugin>
               <artifactId>maven-antrun-plugin</artifactId>
               <version>1.3</version>
            </plugin>
            <plugin>
               <artifactId>maven-assembly-plugin<  /artifactId>
               <version>2.2-beta-2</version>
            </plugin>
            <plugin>
               <artifactId>maven-clean-plugin<  /artifactId>
               <version>2.2</version>
            </plugin>
         
            <plugin>
               <artifactId>maven-compiler-plugin</artifactId>
               <version>2.0.2</version>
            </plugin>
            <plugin>
               <artifactId>maven-dependency-plugin</artifactId>     
               <version>2.0</version>
            </plugin>
            <plugin>
               <artifactId>maven-deploy-plugin</artifactId>
               <version>2.4</version>
            </plugin>
         
            <plugin>
               <artifactId>maven-ear-plugin</artifactId>
               <version>2.3.1</version>
            </plugin>
            <plugin>
               <artifactId>maven-ejb-plugin</artifactId>
               <version>2.1</version>
            </plugin>
            <plugin>
               <artifactId>maven-install-plugin</artifactId>
               <version>2.2</version>
            </plugin>
         
            <plugin>
               <artifactId>maven-jar-plugin</artifactId>
               <version>2.2</version>
            </plugin>
            <plugin>
               <artifactId>maven-javadoc-plugin</artifactId>
               <version>2.5</version>
            </plugin>
            <plugin>
               <artifactId>maven-plugin-plugin</artifactId>
               <version>2.4.3</version>
            </plugin>
         
            <plugin>
               <artifactId>maven-rar-plugin</artifactId>
               <version>2.2</version>
            </plugin>
            <plugin>
               <artifactId>maven-release-plugin</artifactId>
               <version>2.0-beta-8</version>
            </plugin>
            <plugin>
               <artifactId>maven-resources-plugin</artifactId>
               <version>2.3</version>
            </plugin>
         
            <plugin>
               <artifactId>maven-site-plugin</artifactId>
               <version>2.0-beta-7</version>
            </plugin>
            <plugin>
               <artifactId>maven-source-plugin</artifactId>
               <version>2.0.4</version>
            </plugin>
            <plugin>
               <artifactId>maven-surefire-plugin</artifactId>
               <version>2.4.3</version>
            </plugin>
            <plugin>
               <artifactId>maven-war-plugin</artifactId>
               <version>2.1-alpha-2</version>
            </plugin>
         </plugins>
      </pluginManagement>
   
      <plugins>
         <plugin>
            <artifactId>maven-help-plugin</artifactId>
            <version>2.1.1</version>
         </plugin>
      </plugins>
   </build>
   
   <repositories>
      <repository>
         <snapshots>
            <enabled>false</enabled>
         </snapshots>
         <id>central</id>
         <name>Maven Repository Switchboard</name>
         <url>http://repo1.maven.org/maven2</url>
      </repository>
   </repositories>
   <pluginRepositories>
      <pluginRepository>
         <releases>
            <updatePolicy>never</updatePolicy>
         </releases>
         <snapshots>
            <enabled>false</enabled>
         </snapshots>
         <id>central</id>
         <name>Maven Plugin Repository</name>
         <url>http://repo1.maven.org/maven2</url>
      </pluginRepository>
   </pluginRepositories>
   <reporting>
      <outputDirectory>C:\MVN\project\target/site</outputDirectory>
   </reporting>
</project>

ऊपर pom.xml में, आप डिफ़ॉल्ट प्रोजेक्ट स्रोत फ़ोल्डर संरचना, आउटपुट निर्देशिका, प्लग-इन आवश्यक, रिपॉजिटरी, रिपोर्टिंग निर्देशिका देख सकते हैं, जिसे मावेन वांछित लक्ष्यों को निष्पादित करते समय उपयोग कर रहा होगा।

Maven pom.xml को मैन्युअल रूप से लिखे जाने की भी आवश्यकता नहीं है। मावेन परियोजनाओं को बनाने के लिए कई आर्कषक प्लगइन्स प्रदान करता है, जो क्रम में प्रोजेक्ट संरचना और pom.xml बनाते हैं