Java代码:
public static String VERSION = "version_number";
Gradle 构建.gradle
version = '1.0'
如何从grade中设置java代码中的版本?该版本必须是源代码。
有什么方便的方法吗?一个不太好的方法:
- 将 java 文件复制到另一个位置,例如构建/更改源
- 通过替换 token 来更改源中的版本
- 在主源集中添加构建/更改源。
最佳答案
我会做与迈克尔·复活节类似的事情,但有这些差异
- 将生成的源代码与主源代码(
src/main/java
和$buildDir/generated/java
)分开存储。这样做的额外好处是不需要自定义 gitignore - 在
$buildDir
的子目录中生成,以便 clean 任务将删除生成的源 - 使用单独的任务进行代码生成,并提供适当的最新和跳过支持
- 使用Copy.expand(Map)进行 token 替换
- 由于其基于目录,因此
src/template/java
中的所有内容都将替换 token 。您将来可以轻松添加更多模板
src/template/java/com/foo/BuildInfo.java
package com.foo;
public class BuildInfo {
public static String getVersion() {
return "${version}";
}
}
build.gradle
task generateJava(type:Copy) {
def templateContext = [version: project.version]
inputs.properties templateContext // for gradle up-to-date check
from 'src/template/java'
into "$buildDir/generated/java"
expand templateContext
}
sourceSets.main.java.srcDir "$buildDir/generated/java" // add the extra source dir
compileJava.dependsOn generateJava // wire the generateJava task into the DAG
关于Gradle如何更改源代码中的版本号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51937034/