【问题标题】:Gradle task replace string in .java file not workingGradle任务替换.java文件中的字符串不起作用
【发布时间】:2020-09-14 17:09:32
【问题描述】:

我在VersionConstants.java文件下面..

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@";
}

我从这里https://stackoverflow.com/a/33475075/1665592 遵循了这个答案并尝试了

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

但是,它正在处理 VersionConstants.java 文件,而不是用所需的值替换关键字,即 1.0.0 或 0.5 等。

为什么?

【问题讨论】:

    标签: java gradle build build.gradle


    【解决方案1】:

    默认情况下,ReplaceTokens 具有 beginToken='@' 和 endToken='@'。所以改成

    filter(ReplaceTokens, tokens: [
            "VERSION" : '1.0.0', 
            "PATCH_LEVEL" : '0.5',
            ...
        ])
    

    【讨论】:

      【解决方案2】:

      知道了,我刚刚用VERSION 替换了@VERSION@,它就像一个魅力!

      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
        • 1970-01-01
        • 2011-09-07
        • 2015-06-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-01-08
        相关资源
        最近更新 更多