जैसा कि आपने वर्णन किया है, पैकेजिंग जार (जैसा कि here कहा गया है) के रूप में एक मेवेन प्रोजेक्ट बनाएं, क्योंकि मोोजो परिभाषाएं नहीं होंगी)। Src/main/resource/META-INF/plexus उप-फ़ोल्डर में निम्न सामग्री के साथ एक घटक.xml बनाएं (मान लें कि आप पैकेजिंग प्रकार "मेरा-कस्टम-प्रकार" होना चाहते हैं, इसे "foobar" में बदलें तमन्ना)।
<component-set>
<components>
<component>
<role>org.apache.maven.lifecycle.mapping.LifecycleMapping</role>
<role-hint>my-custom-type</role-hint>
<implementation>
org.apache.maven.lifecycle.mapping.DefaultLifecycleMapping
</implementation>
<configuration>
<phases>
<!--use the basic jar lifecycle bindings, add additional
executions in here if you want anything extra to be run-->
<process-resources>
org.apache.maven.plugins:maven-resources-plugin:resources
</process-resources>
<package>
org.apache.maven.plugins:maven-jar-plugin:jar
</package>
<install>
org.apache.maven.plugins:maven-install-plugin:install
</install>
<deploy>
org.apache.maven.plugins:maven-deploy-plugin:deploy
</deploy>
</phases>
</configuration>
</component>
<component>
<role>org.apache.maven.artifact.handler.ArtifactHandler</role>
<role-hint>my-custom-type</role-hint>
<implementation>
org.apache.maven.artifact.handler.DefaultArtifactHandler
</implementation>
<configuration>
<!--the extension used by Maven in the repository-->
<extension>foobar</extension>
<!--the type used when specifying dependencies etc.-->
<type>my-custom-type</type>
<!--the packaging used when declaring an implementation of
the packaging-->
<packaging>my-custom-type</packaging>
</configuration>
</component>
</components>
</component-set>
फिर एक पोम कस्टम पैकेजिंग है कि में, पैकेजिंग तत्व में आवश्यक प्रकार ऐलान करते हैं और सुनिश्चित करें कि आप प्लगइन निर्दिष्ट किया है तो कस्टम पैकेजिंग योगदान किया जा सकता है। < एक्सटेंशन > सत्य </एक्सटेंशन > मैवेन को बताता है कि प्लगइन पैकेजिंग और/या हैंडलर को मेवेन में टाइप करता है।
<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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>name.seller.rich</groupId>
<artifactId>test</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>my-custom-type</packaging>
<build>
<plugins>
<plugin>
<groupId>name.seller.rich.maven.plugins</groupId>
<artifactId>maven-foobar-plugin</artifactId>
<version>0.0.1</version>
<!--declare that this plugin contributes the component extensions-->
<extensions>true</extensions>
</plugin>
</plugins>
</build>
</project>
जब इस परियोजना से पैक किया जाता है, यह एक जार, एक .jar विस्तार के साथ हो जाएगा लेकिन जब यह स्थापित किया गया है/तैनात, Maven फ़ाइल ".foobar" विस्तार के साथ भंडार करने के लिए निर्दिष्ट के रूप में वितरित कर देगा components.xml में
स्रोत
2009-09-15 15:04:20
क्या फ़ोबबार एक्सटेंशन के साथ प्रोजेक्ट में बनाई गई फ़ाइल को रखने का कोई तरीका है? –
और क्या आपका मतलब एमईटी-आईएनएफ या मेटा-आईएनएफ है? –
मुझे ऐसा लगता है कि आपको जार आर्काइवर को कस्टम कार्यान्वयन के साथ प्रतिस्थापित करना होगा, या वैकल्पिक रूप से एक चरण में एक असेंबली-प्लगइन आमंत्रण को बाध्य करने के लिए लाइफसाइकिल.एक्सएमएल का उपयोग करना होगा (आपके अन्य प्रश्न के अनुसार: http: // stackoverflow। कॉम/प्रश्न/1427740/कैसे-करें-i-execute-a-set-of-target-before-my-maven-plugin-run/1427783 # 1427783) –