如何使用Maven在界面中设置当前项目版本和项目构建时间戳?

时间:2014-07-30 06:31:40

标签: java maven

我有一个关于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文件的清单文件中设置此信息是不够的。

我该如何解决这个问题?

3 个答案:

答案 0 :(得分:1)

然而,最好不要编写一个将这些属性写入属性文件的maven插件,然后你可以填写读取该属性文件的常量值

答案 1 :(得分:0)

有很多方法可以做到这一点,请查看Maven release plugin

在特定情况下,最简单的方法是读取Maven resources plugin使用当前版本号和时间戳更新的属性文件(它可以轻松处理文件和替换变量)。

答案 2 :(得分:0)

也许Build Number Maven Plugin可以帮到你。