我有一个关于Maven的问题。我创建了一个名为“MyFinalFarFileName_1.0.0-SNAPHOT_20140730.jar”的Jar文件。这是我的pom.xml文件中的一个小代码片段:
<groupId>myGroupId</groupId>
<artifactId>myArtifactId</artifactId>
<version>1.0.0-SNAPSHOT</version>
<properties>
<timestamp>${maven.build.timestamp}</timestamp>
<maven.build.timestamp.format>yyyyMMdd</maven.build.timestamp.format>
</properties>
<build>
<finalName>MyFinalJarFile_${project.version}_${timestamp}</finalName>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<descriptorRefs>
<descriptorRef>
jar-with-dependencies
</descriptorRef>
</descriptorRefs>
<archive>
<addMavenDescriptor>false</addMavenDescriptor>
<manifestEntries>
<source-jdk>1.6</source-jdk>
<target-jdk>1.6</target-jdk>
</manifestEntries>
<manifest>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
<mainClass>myMainClass</mainClass>
</manifest>
</archive>
<appendAssemblyId>false</appendAssemblyId>
</configuration>
<executions>
<execution>
<id>assembly-jar-Id</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</build>
目前我在Java接口中设置了手动构建时间戳和项目版本号,如下所示:
public MyInterface {
public String versionNumber = "My Project Version: 1.0.0-SNAPSHOT";
public String versionBuildTimeStamp = "My Project BuildTimeStamp: 20140730 11:34";
}
是否可以使用maven设置这些信息?或者有必要使用maven创建一个包含这些信息的属性文件,并将这个popertie文件与我的Java接口结合起来?
仅在我创建的Jar文件的清单文件中设置此信息是不够的。
我该如何解决这个问题?
答案 0 :(得分:1)
然而,最好不要编写一个将这些属性写入属性文件的maven插件,然后你可以填写读取该属性文件的常量值
答案 1 :(得分:0)
有很多方法可以做到这一点,请查看Maven release plugin。
在特定情况下,最简单的方法是读取Maven resources plugin使用当前版本号和时间戳更新的属性文件(它可以轻松处理文件和替换变量)。
答案 2 :(得分:0)
也许Build Number Maven Plugin可以帮到你。