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

Java 如何使用Maven在接口中设置当前项目版本和项目构建时间戳?,java,maven,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> <prop

我有一个关于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>        
是否可以使用maven设置此类信息?或者有必要使用maven创建一个包含此类信息的属性文件,并将该属性文件与我的Java接口结合起来

在我创建的Jar文件的清单文件中设置此信息是不够的


如何解决这个问题?

有可能,但根本不合适,最好编写一个maven插件,将这些属性写入属性文件,然后您可以填写常量值读取该属性文件

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

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

也许可以帮助您。

看一看
public MyInterface {

    public String versionNumber = "My Project Version: 1.0.0-SNAPSHOT";
    public String versionBuildTimeStamp = "My Project BuildTimeStamp: 20140730 11:34";
}