【问题标题】:Gradle generate java source code from .tmpl fileGradle 从 .tmpl 文件生成 java 源代码
【发布时间】:2020-09-14 10:26:51
【问题描述】:

使用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 build build.gradle


    【解决方案1】:

    据我了解,您正在寻找一种将 java 源文件中的标记替换为某些值的方法;有很多 gradle 插件可以做到这一点,这里有一个例子: https://github.com/HexoMod-tools/gradle.replace.token.preprocessor.plugin; 您可以尝试直接在 gradle 插件注册表中搜索,例如https://plugins.gradle.org/search?term=replace

    【讨论】:

    • 感谢@alexander-makarov。您的建议实际上帮助我清楚地了解了我的要求,并且我能够解决问题
    • @SwapnilKotwal 完全不用担心,那你能接受我的回答吗?
    【解决方案2】:

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

    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',
            ...
        ])
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-25
      • 1970-01-01
      • 2020-07-27
      • 2018-05-15
      • 2019-09-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多