在Maven中生成Version.java文件 [英] Generate a Version.java file in Maven
问题描述
我有一个使用Ant脚本构建的Java项目。我正在尝试将项目转换为Maven。
I have a Java project that I build using an Ant script. I am trying to convert the project to Maven.
其中一个任务生成一个名为Version.java的Java源文件,其中包含编译时间戳的静态String表示形式,如如下:
One of the tasks generates a Java source file called Version.java that contains a static String representation of the compilation timestamp, as follows:
package com.foo.bar;
public final class Version {
public static String VERSION="100301.1046";
}
Ant任务非常简单:
The Ant task is very simple:
<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>
是否可以在Maven中使用generate-sources或其他简单方法执行类似操作?
Is it possible to do something similar in Maven, using generate-sources, or some other simple method?
推荐答案
经过更多Google搜索,我想出了这个(在pom.xml中):
After more Googling, I came up with this (in the pom.xml):
<plugins>
...
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.3</version>
<executions>
<execution>
<goals>
<goal>run</goal>
</goals>
<phase>generate-sources</phase>
<configuration>
<tasks>
<property name="src.dir" value="${project.build.sourceDirectory}" />
<property name="package.dir" value="com/foo/bar" />
<property name="package.name" value="com.foo.bar" />
<property name="buildtime" value="${maven.build.timestamp}" />
<echo file="${src.dir}/${package.dir}/Version.java" message="package ${package.name};${line.separator}" />
<echo file="${src.dir}/${package.dir}/Version.java" append="true" message="public final class Version {${line.separator}" />
<echo file="${src.dir}/${package.dir}/Version.java" append="true"
message=" public static String VERSION="${buildtime}";${line.separator}" />
<echo file="${src.dir}/${package.dir}/Version.java" append="true" message="}${line.separator}" />
<echo message="BUILD ${buildtime}" />
</tasks>
</configuration>
</execution>
</executions>
</plugin>
...
</plugins>
它似乎运行良好并生成此Java文件:
It seems to work well and produces this Java file:
package com.foo.bar;
public final class Version {
public static String VERSION="100318.1211";
}
这篇关于在Maven中生成Version.java文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!