पर एक नज़र डालें। हालांकि आप उन्हें maven-exec-plugin का उपयोग कर मेवेन बिल्ड के भीतर से इनकार करने का प्रयास कर सकते हैं।
जहां तक आपकी कंपनियां जीपीएल-लाइसेंस प्राप्त उत्पादों का उपयोग करने के बारे में आरक्षण करती हैं, तो उपयोग के प्रभावों पर पढ़ने के लायक है। निगमों के डर के रूप में यह विषाक्त नहीं है। यहां एक interpretation of the GPL है। इसमें निश्चित रूप से कानून में कोई वज़न नहीं है (और यह सही नहीं हो सकता है या उदाहरण के द्वारा समर्थित नहीं है, मैं वकील नहीं हूं), लेकिन आपके कानूनी लोगों के साथ बातचीत शुरू करने की अनुमति देने के लिए पर्याप्त हो सकता है।
संदर्भित पृष्ठ से
:
, बस एक और काम के साथ एक कॉपीराइट कार्य के संयोजन व्युत्पन्न कार्य बनाने नहीं करता है। मूल कॉपीराइट किए गए काम को किसी भी तरह से संशोधित किया जाना चाहिए। परिणामी व्युत्पन्न कार्य स्वयं ही "लेखकत्व के मूल कार्य का प्रतिनिधित्व करना चाहिए।" इसलिए यदि लाइसेंसधारक मूल जीपीएल-लाइसेंस प्राप्त कार्यक्रम को संशोधित नहीं करता है, लेकिन केवल इसे चलाता है, तो वह व्युत्पन्न कार्य नहीं बना रहा है।
मुझे लगता है कि आप (हालांकि यह जेएसडब्ल्यू रैपर बनाने करता है) क्या आवश्यकता है Appassembler Maven plugin नहीं है। यह एक शेल स्क्रिप्ट (और एक बल्ले फ़ाइल) बनाता है, और सभी अनुप्रयोग जार निर्देशिका में एकत्र करता है। JSW- आधारित डेमॉन कॉन्फ़िगरेशन बनाने के लिए यह वैकल्पिक रूप से configured हो सकता है।
यहां एक उदाहरण कॉन्फ़िगरेशन है जो लक्ष्य/एपसेम्बलर फ़ोल्डर में स्टैंडअलोन एप्लिकेशन उत्पन्न करेगा, और जेएसडब्लू रैपर फ़ाइलों को लक्ष्य/एपसेम्बलर/जेएसडब्ल्यू/myApp निर्देशिका में जेनरेट करेगा। ध्यान दें कि प्रोजेक्ट के जार को सुनिश्चित करने के लिए इकट्ठा लक्ष्य एकीकरण-परीक्षण चरण से जुड़ा हुआ है। उत्पन्न करने के लिए उत्पादन रन mvn को सत्यापित या बस उत्पन्न करने के लिए सेवा रैपर mvn पैकेज चलाएँ:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>appassembler-maven-plugin</artifactId>
<version>1.0</version>
<executions>
<execution>
<id>assemble-standalone</id>
<phase>integration-test</phase>
<goals>
<goal>assemble</goal>
</goals>
<configuration>
<programs>
<program>
<mainClass>name.seller.rich.MyMainClass</mainClass>
<name>myShellScript</name>
</program>
</programs>
<platforms>
<platform>windows</platform>
<platform>unix</platform>
</platforms>
<!--collect all jars into the lib directory-->
<repositoryLayout>flat</repositoryLayout>
<repositoryName>lib</repositoryName>
</configuration>
</execution>
<execution>
<id>generate-jsw-scripts</id>
<phase>package</phase>
<goals>
<goal>generate-daemons</goal>
</goals>
<configuration>
<!--declare the JSW config -->
<daemons>
<daemon>
<id>myApp</id>
<mainClass>name.seller.rich.MyMainClass</mainClass>
<commandLineArguments>
<commandLineArgument>start</commandLineArgument>
</commandLineArguments>
<platforms>
<platform>jsw</platform>
</platforms>
</daemon>
</daemons>
<target>${project.build.directory}/appassembler</target>
</configuration>
</execution>
</executions>
</plugin>
संदर्भ के लिए उत्पन्न फ़ाइलों इस प्रकार हैं:
myApp\bin\myApp
myApp\bin\myApp.bat
myApp\bin\wrapper-linux-x86-32
myApp\bin\wrapper-macosx-universal-32
myApp\bin\wrapper-solaris-x86-32
myApp\bin\wrapper-windows-x86-32.exe
myApp\conf\wrapper.conf
myApp\lib\libwrapper-linux-x86-32.so
myApp\lib\libwrapper-macosx-universal-32.jnilib
myApp\lib\libwrapper-solaris-x86-32.so
myApp\lib\wrapper-windows-x86-32.dll
myApp\lib\wrapper.jar
स्रोत
2009-08-21 12:55:12
@Rich - के लिए धन्यवाद जवाब। मैंने मूल रूप से ऐसा कुछ किया था, लेकिन जेएसडब्ल्यू का लाइसेंस मेरे लिए बहुत ही सीमित है (अच्छी तरह से मेरे नियोक्ता!)। वैसे, क्या एकाधिक प्रोजेक्ट वाले प्रोजेक्ट पर मुख्य परियोजना पीओएम से एपसेम्बलर को कॉन्फ़िगर करना संभव है? ऐसा करने का एकमात्र तरीका यह था कि सेवा स्क्रिप्ट (और मेरे मामले में आरपीएम) बनाने के विशिष्ट काम के साथ एक नया मॉड्यूल बनाना था जो अन्य सभी मॉड्यूल पैक किए जाने के बाद भाग गया ... – Lehane
यदि आप इकट्ठा करते हैं मॉड्यूल पर लक्ष्य जो अन्य सभी पर निर्भर करता है, उन निर्भरताओं को appassembler निर्देशिका में पैक किया जाएगा। तो शायद यह आपके एग्रीगेटर पोम पर नहीं चलाया जाएगा, लेकिन "मुख्य" वर्ग –
के साथ मॉड्यूल पर भी जीपीएल लाइसेंस प्रतिबंधित नहीं है क्योंकि निगमों का मानना है। इसका एक पठन लें: http://www.sitepoint.com/article/public-license-explained/ –