तुम भी एक संस्करण जानकारी फ़ाइल का उत्पादन करने के लिए एक ग्रूवी स्क्रिप्ट का उपयोग कर सकते हैं। मुझे यह विधि अधिक पसंद है क्योंकि आपको असेंबली-प्लगइन के डिस्क्रिप्टर में सामान को बाहर करने की आवश्यकता नहीं है। यदि आप जेनकींस/हडसन (उदाहरण के लिए oug BUILD_ID आदि ...) से बना रहे हैं तो आप वैकल्पिक रूप से उपलब्ध सामानों को वैकल्पिक रूप से उपलब्ध कराने के लिए इस विधि का उपयोग भी कर सकते हैं। pom.xml में
<plugin>
<groupId>org.codehaus.mojo.groovy</groupId>
<artifactId>groovy-maven-plugin</artifactId>
<version>1.0-beta-3</version>
<executions>
<execution>
<phase>test</phase>
<goals>
<goal>execute</goal>
</goals>
<configuration>
<source>
<![CDATA[
println("==== Creating version.txt ====");
File mainDir = new File("src/main");
if(mainDir.exists() && !mainDir.isDirectory()) {
println("Main dir does not exist, wont create version.txt!");
return;
}
File confDir = new File("src/main/conf");
if(confDir.exists() && !confDir.isDirectory()) {
println("Conf dir is not a directory, wont create version.txt!");
return;
}
if(!confDir.exists()) {
confDir.mkdir();
}
File versionFile = new File("src/main/conf/version.txt");
if(versionFile.exists() && versionFile.isDirectory()) {
println("Version file exists and is directory! Wont overwrite");
return;
}
if(versionFile.exists() && !versionFile.isDirectory()) {
println("Version file already exists, overwriting!");
}
println("Creating Version File");
BufferedWriter writer = new BufferedWriter(new FileWriter(versionFile));
writer.write("groupId = ${project.groupId}");
writer.newLine();
writer.write("artifactId = ${project.artifactId}");
writer.newLine();
writer.write("version = ${project.version}");
writer.newLine();
writer.write("timestamp = ${maven.build.timestamp}");
String buildTag = "";
String buildNumber = "";
String buildId = "";
try {
buildTag = "${BUILD_TAG}";
buildNumber = "${BUILD_NUMBER}";
buildId = "${BUILD_ID}";
writer.write("BUILD_TAG = " + buildTag + "\n");
writer.write("BUILD_NUMBER = " + buildNumber + "\n");
writer.write("BUILD_ID = " + buildId + "\n");
} catch (Exception e) {
println("============= Could not find BUILD_TAG probably this is not a Jenkins/Hudson build ===========");
}
writer.close();
]]>
</source>
</configuration>
</execution>
</executions>
</plugin>
और फिर अपने विधानसभा प्लगइन प्लगइन है कि इस तरह दिखेगा::
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.2.1</version>
<!-- Produce the all-dependencies-included jar for java classloaders -->
<executions>
<execution>
<id>all</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<finalName>${project.artifactId}</finalName>
<descriptors>
<descriptor>dist-all.xml</descriptor>
</descriptors>
</configuration>
</execution>
</executions>
</plugin>
तो तुम एक फ़ाइल पैदा करने ग्रूवी इस तरह pom.xml में स्क्रिप्ट के लिए होता है
और अंत में अपने विधानसभा वर्णनकर्ता जिले-all.xml इस प्रकार दिखाई देगा:
<?xml version="1.0" encoding="UTF-8"?>
<assembly>
<id>all</id>
<formats>
<format>dir</format>
<format>zip</format>
</formats>
<includeBaseDirectory>false</includeBaseDirectory>
<fileSets>
<fileSet>
<directory>target</directory>
<outputDirectory></outputDirectory>
<includes>
<include>*.jar</include>
</includes>
</fileSet>
<fileSet>
<directory>src/main/conf</directory>
<outputDirectory></outputDirectory>
<includes>
<include>**</include>
</includes>
</fileSet>
</fileSets>
</assembly>
किसी कारण से पहला ब्लॉक संस्करण/लक्ष्य में संस्करण को प्रतीत नहीं करता है। यदि मैं version.txt बनाता हूं तो कोड का दूसरा ब्लॉक काम करता प्रतीत होता है। – sanz
क्या आपकी परियोजना एक वेबपैप है? फिर संसाधन फ़िल्टरिंग थोड़ा अलग काम करता है। मैं कुछ घंटों में अपना उत्तर अपडेट करूंगा (रात्रिभोज पहले) :-) –
नहीं, लेकिन जिस परियोजना पर मैं काम कर रहा हूं वह एक मूल परियोजना के साथ एक मेवेन मॉड्यूल है जिसमें संपूर्ण एप्लिकेशन शामिल है। – sanz