gpt4 book ai didi

java - 在 Maven 中生成一个 Version.java 文件

转载 作者:IT老高 更新时间:2023-10-28 20:25:44 27 4
gpt4 key购买 nike

我有一个使用 Ant 脚本构建的 Java 项目。我正在尝试将项目转换为 Maven。

其中一项任务生成一个名为 Version.java 的 Java 源文件,其中包含编译时间戳的静态字符串表示,如下所示:

package com.foo.bar;
public final class Version {
public static String VERSION="100301.1046";
}

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=&quot;${buildtime}&quot;;${line.separator}" />
<echo file="src/${package.dir}/Version.java" append="true" message="}${line.separator}" />
<echo message="BUILD ${buildtime}" />
</target>

是否可以在 Maven 中使用 generate-sources 或其他一些简单的方法做类似的事情?

最佳答案

我认为这不是解决此类问题的好方法。

更好的方法是将版本信息放在 properties 中。您的 Java 程序将读取的文件:

您的属性文件将包含以下行:

myapp.version=${project.version}

然后,在您的 pom.xml , 表示文件将是 filtered由 Maven :

<resources>
<resource>
<directory>the/directory/that/contains/your/properties/file</directory>
<filtering>true</filtering>
</resource>
</resources>

当 Maven 构建您的应用程序时,它将替换所有 ${...}根据他们的值(value)。默认情况下,${project.version}定义 pom.xml 的版本(即 <version> 标签的值)。

然后,在您的 Java 代码中,您只需加载 properties文件并检索 myApp.version属性值。

请注意,您可以使用 Build Number plugin设置比当前版本更“复杂”的东西(例如,如果您想将构建时间放在您的属性中)。

关于java - 在 Maven 中生成一个 Version.java 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2469922/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com