我有一个使用Ant脚本构建的Java项目.我正在尝试将项目转换为Maven.
其中一个任务生成一个名为Version.java的Java源文件,其中包含编译时间戳的静态String表示形式,如下所示:
package com.foo.bar;
public final class Version {
public static String VERSION="100301.1046";
}
Run Code Online (Sandbox Code Playgroud)
Ant任务非常简单:
<target name="version" depends="init" description="Create Version.java">
<echo file="src/${package.dir}/Version.java" message="package ${package.name};${line.separator}" />
<echo file="src/${package.dir}/Version.java" append="true" message="public final class Version {${line.separator}" />
<echo file="src/${package.dir}/Version.java"
append="true"
message=" public static String VERSION="${buildtime}";${line.separator}" />
<echo file="src/${package.dir}/Version.java" append="true" message="}${line.separator}" />
<echo message="BUILD ${buildtime}" />
</target>
Run Code Online (Sandbox Code Playgroud)
是否可以使用生成源或其他简单方法在Maven中执行类似的操作?
每个人pom.xml都有:
<groupId>com.vendor</groupId>
<artifactId>product</artifactId>
<version>1.0.13.0-dev</version> <!-- THIS FIELD -->
<packaging>war</packaging>
Run Code Online (Sandbox Code Playgroud)
version piece对于捆绑应用程序非常有用,因此用户可以查看和报告它们.
但我不喜欢代码重复,并寻找一种方法来避免将带有版本信息的属性文件放到VCS(Git/SVN),因为每次我碰到版本时我必须提交到两个地方(pom.xml和version.properties).
我可以通过哪种方式在Java应用程序中以编程方式提供版本属性pom.xml?