Build Java源中的Gradle项目版本属性

Build Java源中的Gradle项目版本属性,build,gradle,Build,Gradle,在我的应用程序中,我在主类中将“user frendly”版本作为公共字符串常量进行维护 是否可以在build.gradle中检索此变量以设置项目的版本属性?目前我必须手动执行此操作,这当然会导致问题。维护“用户友好”版本的正确方法是version.properties文件,存储在源代码树中。例如,在src/main/resources下。然后可以在Gradle脚本中加载此属性文件: def config=new-ConfigSlurper().parse(新文件(“src/main/resou

在我的应用程序中,我在主类中将“user frendly”版本作为公共字符串常量进行维护


是否可以在build.gradle中检索此变量以设置项目的版本属性?目前我必须手动执行此操作,这当然会导致问题。

维护“用户友好”版本的正确方法是
version.properties
文件,存储在源代码树中。例如,在
src/main/resources
下。然后可以在Gradle脚本中加载此属性文件:

def config=new-ConfigSlurper().parse(新文件(“src/main/resources/version.properties”).toURL())
println(config.versionNumber)

维护“用户友好”版本的正确方法是存储在源代码树中的
version.properties
文件。例如,在
src/main/resources
下。然后可以在Gradle脚本中加载此属性文件:

def config=new-ConfigSlurper().parse(新文件(“src/main/resources/version.properties”).toURL())
println(config.versionNumber)

我已经加上了尼基塔的答案,非常好

但是,首先,
File.toURL()
现在被弃用。最好是这样:

ConfigObject conf = new ConfigSlurper().parse( file("src/main/resources/version.properties").toURI().toURL());
其次,注意这里的
文件(…
,而不是
新文件(…
如果这一行要包含在
build.gradle
中,则前者相对于gradle项目的根目录路径生成一个
文件
,实际上是一个方法。值得知道的是,
build.gradle
中似乎“不知从何而来”的每个方法或属性实际上是底层“不可见”Gradle
项目的方法或属性

如果你把
新文件(“src/main…”)
放在
build.gradle
中,就像Nikita的回答一样,如果在控制台上用当前目录project/root目录运行gradle任务,你实际上不会注意到任何问题……但是(根据我的实验)例如,如果在Eclipse中使用GradleTasks窗口,那么您将创建一个相对于Eclipse运行所在目录的
文件
路径……这将给出一条错误消息,说明“系统找不到指定的路径”

因此,使用
文件(…
),您可以(在
build.gradle
中)执行以下操作:

注意
version
这里是Project的另一个属性…但是如果您查看上面的
Project
的Javadoc,您会感到困惑,因为它不在那里!但是,您将看到
getVersion()
setVersion(…)
。使用Groovy,Groovy magic会自动为每个属性提供自己的getter和setter方法。我花了一周时间学习了一点Groovy,这实际上是一种很棒的语言,强烈建议您熟悉一下它,并使Gradle的学习过程大大减少了痛苦

但是,您可以在Gradle类
项目的DSL(域特定语言)API中找到
版本
属性

文件
version.properties
通常包含以下内容:

versionNumber='1.0.0'
NB从您的代码访问版本…如果您想从应用程序代码(或测试代码)访问此版本号,您确实需要使用
新文件(…

ConfigObject conf = new ConfigSlurper().parse( new File("src/main/resources/version.properties").toURI().toURL());

就像尼基塔的回答一样。

我已经加上了尼基塔的答案,这很好

但是,首先,
File.toURL()
现在已不推荐使用。类似这样的内容更可取:

ConfigObject conf = new ConfigSlurper().parse( file("src/main/resources/version.properties").toURI().toURL());
其次,注意这里的
文件(…
,而不是
新文件(…
如果这一行要包含在
build.gradle
中,则前者相对于gradle项目的根目录路径生成一个
文件
,实际上是一个方法。值得知道的是,
build.gradle
中似乎“不知从何而来”的每个方法或属性实际上是底层“不可见”Gradle
项目的方法或属性

如果你把
新文件(“src/main…”)
放在
build.gradle
中,就像Nikita的回答一样,如果在控制台上用当前目录project/root目录运行gradle任务,你实际上不会注意到任何问题……但是(根据我的实验)例如,如果在Eclipse中使用GradleTasks窗口,那么您将创建一个相对于Eclipse运行所在目录的
文件
路径……这将给出一条错误消息,说明“系统找不到指定的路径”

因此,使用
文件(…
),您可以(在
build.gradle
中)执行以下操作:

注意
version
这里是Project的另一个属性…但是如果您查看上面的
Project
的Javadoc,您会感到困惑,因为它不在那里!但是,您将看到
getVersion()
setVersion(…)
。使用Groovy,Groovy magic会自动为每个属性提供自己的getter和setter方法。我花了一周时间学习了一点Groovy,这实际上是一种很棒的语言,强烈建议您熟悉一下它,并使Gradle的学习过程大大减少了痛苦

但是,您可以在Gradle类
项目的DSL(域特定语言)API中找到
版本
属性

文件
version.properties
通常包含以下内容:

versionNumber='1.0.0'
NB从您的代码访问版本…如果您想从应用程序代码(或测试代码)访问此版本号,您确实需要使用
新文件(…

ConfigObject conf = new ConfigSlurper().parse( new File("src/main/resources/version.properties").toURI().toURL());

正如Nikita的回答一样。

你可能想用另一种方法:在属性文件中设置版本,然后从那里获取。我应该把这个属性文件放在哪里?你可能想