Gradle 从 .tmpl 文件生成 java 源代码

Gradle generate java source code from .tmpl file

我们使用 Ant 生成一些 Java 代码,其中大部分包含一些运行时生成的信息。

对于 ant task 我们使用下面的 VersionConstants.tmpl 文件并生成

public class VersionConstants {

    /**
     * This class does not need to be instantiated.
     */
    private VersionConstants() { }


    public static final String VERSION = "@VERSION@";

    public static final String PATCH_LEVEL = "@PATCH_LEVEL@";

    public static final String REVISION = "@REVISION@";

    public static final String BUILDTIME = "@BUILDTIME@";

    public static final String BUILDHOST = "@BUILDHOST@";
}

使用这个我们生成 VersionConstants.java 文件。我看到了这个问题 Generate a Java class using Gradle for Java plugin 但是 Gradle 是否支持任何本机支持?

据我了解,您正在寻找一种方法来用某些值替换 java 源文件中的标记;有很多 gradle 插件可以做到这一点,这里是其中一个例子: https://github.com/HexoMod-tools/gradle.replace.token.preprocessor.plugin; you may try to search directly in gradle plugins registry, e.g. https://plugins.gradle.org/search?term=replace

我什至避开了第三方插件,实现如下

task generateSources(type: Copy) {
    from 'src/replaceme/VersionConstants.java'
    into "$buildDir/generated-src"
    filter(org.apache.tools.ant.filters.ReplaceTokens, tokens: [
        "VERSION" : '1.0.0', 
        "PATCH_LEVEL" : '0.5',
        ...
    ])
}