खोज…


परिचय

मावेन आपको कस्टम प्लगइन्स को लागू करने और उपयोग करने की अनुमति देता है। ये प्लगइन्स अतिरिक्त व्यवहार को मावेन जीवन चक्र के किसी भी चरण के लिए बाध्य करने की अनुमति देते हैं।

प्रत्येक मावेन लक्ष्य एक एमओजेओ (मावेन ऑर्डिनरी जावा ऑब्जेक्ट) को लागू करके बनाया गया है: एक जावा वर्ग एनोटेशन के साथ लागू किया गया है जो बताता है कि इसे कैसे लागू किया जाए।

किसी प्लगइन का लक्ष्य उपसर्ग उसके विरूपण साक्ष्य नाम से लिया गया है। एक विरूपण साक्ष्य hello-world-plugin एक लक्ष्य उपसर्ग hello-world बनाता है। hello गोल तब mvn hello-world:hello साथ चलाया जा सकता है।

टिप्पणियों

एक मावेन प्लगइन एक JAR है जिसमें एक मावेन maven/plugins.xml है जो प्लगइन मेटाडेटा का वर्णन करता है। यह फ़ाइल maven-plugin-plugin द्वारा बनाई गई है।

एक मावेन विरूपण साक्ष्य को मावेन प्लगइन के रूप में घोषित करना

मावेन द्वारा निर्मित एक कलाकृति को पैकेजिंग को pom.xml में मावेन maven-plugin रूप में निर्दिष्ट करके मावेन प्लगइन के रूप में घोषित किया जा सकता है।

<packaging>maven-plugin</packaging>

आपको प्लगइन एपीआई और एनोटेशन पर निर्भरता की घोषणा करने की आवश्यकता है।

<dependency>
    <groupId>org.apache.maven</groupId>
    <artifactId>maven-plugin-api</artifactId>
    <version>3.3.9</version>
    <scope>provided</scope>
</dependency>
<dependency>
    <groupId>org.apache.maven.plugin-tools</groupId>
    <artifactId>maven-plugin-annotations</artifactId>
    <version>3.5</version>
    <scope>provided</scope>
</dependency>

मेटाडेटा जनरेट करने के लिए आपको एक प्लगइन जोड़ने की आवश्यकता है।

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-plugin-plugin</artifactId>
    <version>3.5</version>
</plugin>

एक लक्ष्य बनाना

MOJO बनाकर लक्ष्यों को लागू किया जाता है। यह maven-plugin-annotations से एनोटेशन के साथ एनोटेट की गई एक क्लास फाइल है।

@Mojo(name = "hello")
public final class HelloWorldMojo extends AbstractMojo {

    public void execute() throws MojoExecutionException, MojoFailureException {
         getLog().info("Hello world");
    }
}

प्लगइन विन्यास का उपयोग करना

प्लगइन्स को @Parameter साथ फ़ील्ड एनोटेट करके कॉन्फ़िगर किया जा सकता है। MOJO को तब कॉन्फ़िगरेशन के साथ इंजेक्ट किया जाता है।

@Mojo(name = "greet")
public final class GreetMojo extends AbstractMojo {

    @Parameter(required = true)
    public String name;

    public void execute() throws MojoExecutionException, MojoFailureException {
        getLog().info("Hello " + name);
    }
}

name पैरामीटर POM में कॉन्फ़िगर किया जा सकता है:

<plugin>
    <groupId>com.mattunderscore</groupId>
    <artifactId>hello-world-plugin</artifactId>
    <version>1.0-SNAPSHOT</version>
    <configuration>
        <name>Matt</name>
    </configuration>
</plugin>

यदि greet लक्ष्य को स्टैंडअलोन लक्ष्य के रूप में चलाया जाता है तो name पैरामीटर को कमांड लाइन पर संपत्ति के रूप में परिभाषित किया जा सकता है:

mvn <plugin name>:greet -Dname=Geri

प्रोजेक्ट की जानकारी एक्सेस करना

प्लगइन, अन्य लोगों के बीच, वर्तमान मावेन परियोजना के निर्माण के बारे में जानकारी का उपयोग कर सकता है।

@Mojo(name = "project")
public final class ProjectNameMojo extends AbstractMojo {

    @Parameter(defaultValue = "${project}", readonly = true, required = true)
    private MavenProject project;

    public void execute() throws MojoExecutionException, MojoFailureException {
        getLog().info("Hello, this is " + project.getName());
    }
}

उपरोक्त उदाहरण कंसोल में उस पर चलाए जाने वाले मावेन प्रोजेक्ट के नाम को प्रिंट करेगा, जो इसके POM के <project>/<name> एलिमेंट में निर्दिष्ट है।

प्लगइन में प्रयुक्त MavenProject क्लास को प्लगइन के POM में एक डिफ़ॉल्ट (डिफ़ॉल्ट) compile गुंजाइश के साथ MavenProject maven-core की निर्भरता की आवश्यकता होती है:

<dependency>
    <groupId>org.apache.maven</groupId>
    <artifactId>maven-core</artifactId>
    <version>3.3.9</version>
</dependency>

इसके अलावा, एनोटेशन का उपयोग करने के लिए प्लगइन के पोम में निम्नलिखित निर्भरता की आवश्यकता होती है:

<dependency>
  <groupId>org.apache.maven.plugin-tools</groupId>
  <artifactId>maven-plugin-annotations</artifactId>
  <version>3.5</version>
  <scope>provided</scope> <!-- annotations are needed only to build the plugin -->
</dependency>

किसी लक्ष्य के लिए एक डिफ़ॉल्ट चरण घोषित करें

@Mojo(name = "hi", defaultPhase = LifecyclePhase.COMPILE)

एक फ़ाइल के रूप में निर्माण निर्देशिका प्राप्त करें

@Parameter(defaultValue = "${project.build.directory}")
private File buildDirectory;


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow