2011-04-25 13 views
20

मुझे मेवेन को पीओएम फ़ाइल से संस्करण संख्या को WW फ़ाइल में स्थित मेनिफेस्ट में /WEB-INF/manifest.mf के अंतर्गत डालने की आवश्यकता है।युद्ध फ़ाइल मेनिफेस्ट में मेवेन प्रोजेक्ट संस्करण कैसे रखा जाए?

मैं यह कैसे कर सकता हूं? मैं maven-jar-plugin का उपयोग कर एक JAR फ़ाइल में ऐसा करने के लिए आसानी से प्रलेखन फ़ाइल करने में सक्षम था, लेकिन यह एक WAR फ़ाइल पर काम नहीं करता है।

सहायता के लिए धन्यवाद!

उत्तर

29

मैवेन-वॉर-प्लगइन का उपयोग करके इसे समझ लिया। नीचे दिए गए विन्यास देखें:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-war-plugin</artifactId> 
    <version>2.1.1</version> 
    <configuration> 
     <archive> 
      <manifestEntries> 
       <version>${project.version}</version> 
      </manifestEntries> 
     </archive> 
    </configuration> 
</plugin> 
+0

यदि आप वेब यूआरएल के माध्यम से ऐसी संस्करण जानकारी पढ़ने में रुचि रखते हैं, उदाहरण के लिए 'http: // example.com/versioninfo.txt' पर आप एक' versioninfo.txt' टेम्पलेट फ़िल्टर कर सकते हैं, जिसमें आपका '$ {प्रोजेक्ट है .version} ', और [युद्ध में संस्करण फ़ाइल शामिल करें] (http://www.taringamberini.com/en/howto/java/2015/including-release-info-into-war/) 'maven का उपयोग करके -war-plugin'। – taringamberini

-1

अपने manifest.mf में ${project.version} रखें जहां आप संस्करण होना चाहते हैं। इस काम के लिए, मेरा मानना ​​है कि आपको संसाधन प्लगइन की आवश्यकता है ताकि मैनवेन आपके युद्ध फ़ाइल में शामिल किए गए संसाधनों को 'फिल्टर' कर सकें।

+0

लेकिन मैनिफ़ेस्ट फ़ाइल एक संसाधन नहीं है। यह निर्माण समय पर उत्पन्न होता है, सही? यदि यह निर्माण समय पर उत्पन्न होता है, तो इसे संसाधन के रूप में संसाधित नहीं किया जाएगा। क्या मैं कुछ गलत समझ रहा हूँ? –

+0

@ मैथ्यू यह एक संसाधन हो सकता है, लेकिन यह एक गलत दृष्टिकोण है। आप सही हैं, फ़ाइल मेवेन-वॉर-प्लगइन द्वारा ऑन-फ्लाई उत्पन्न होती है। आपका उत्तर नीचे सही है। – yegor256

17

या आप addDefaultImplementationEntries या addDefaultSpecificationEntries झंडे project.version संपत्ति सहित कई प्रविष्टियों जोड़ देगा जो उपयोग कर सकते हैं।

addDefaultImplementationEntries

Implementation-Title: ${project.name} 
Implementation-Version: ${project.version} 
Implementation-Vendor-Id: ${project.groupId} 
Implementation-Vendor: ${project.organization.name} 
Implementation-URL: ${project.url} 

addDefaultSpecificationEntries

Specification-Title: ${project.name} 
Specification-Version: ${project.version} 
Specification-Vendor: ${project.organization.name} 

डिफ़ॉल्ट मूल्य के लिए दोनों गलत है। यदि कोई संपत्ति परिभाषित नहीं की गई है (उदा। project.organization.name), तो उस पंक्ति को मैनिफेस्ट से बाहर रखा जाएगा।

इस प्रकार यह Maven युद्ध प्लगइन विन्यास में जा सकते हैं:

<plugin> 
    <artifactId>maven-war-plugin</artifactId> 
    <version>2.2</version> 
    <configuration> 
     <archive> 
      <manifest> 
       <addDefaultImplementationEntries>true</addDefaultImplementationEntries> 
      </manifest> 
     </archive> 
    </configuration> 
</plugin> 
संबंधित मुद्दे