java导入项目版本_如何从Java类访问build.gradle中的项目版本

我对Gradle很新,所以答案可能很简单,所以如果答案很简单,我会道歉:我有一个测试工具需要获取它的版本并将其与正在测试的应用程序版本进行比较.但是,我的工具版本在我的build.graddle中

version '1.0'

我尝试了不同的方式来访问它(例如):

task generateSources {

File outDir

outDir = file("$buildDir/classes/test/tests/Version.java")

doFirst {

outDir.exists() || outDir.mkdirs()

new File(outDir).write("public class Version { public static final String VERSION = \"$project.version\"; }")

}

}

compileJava.dependsOn generateSources

compileJava.source generateSources.outputs.files, sourceSets.main.java

我发现这段代码将版本输出到另一个java文件,但我没有看到我之后如何能够检索该信息(我的意思是,我的测试是在src中定义的,我需要指向一个文件在编译时不存在 – 如果我在这里错了,请纠正我).

关于如何完成这项任务的任何想法?

解决方法:

首先,您正在尝试在构建/类中创建Java源文件(它应该包含已编译的类,而不是源代码),但您必须在源中执行此操作,否则将无法编译.如果你需要这个新类可以不用于测试,那么使用src / main / java,而不是src / test / java /

但无论如何,我认为对于你的情况,使用一些属性文件更容易,并在构建期间替换其中的一些标记.这将允许您创建一些静态逻辑来获取此属性值并在运行构建之前使用它.所以你需要的是:

1-在资源src / main / resources(例如app.properties)中有一些属性文件,应该存储版本变量,其值如APP_VERSION_TOKEN

version=%APP_VERSION_TOKEN%

2-配置Gradle processResources来替换令牌,如下所示:

processResources {

filesMatching('**/app.properties') {

filter {

it.replace('%APP_VERSION_TOKEN%', version)

}

}

}

3-制作一些方法来读取该文件并返回属性的值并在需要的地方使用它.

就这样.对于单元测试,您可以在src / test / resource下使用具有相同名称的另一个文件,并使用您需要进行测试的不变值.

标签:java,gradle

来源: https://codeday.me/bug/20190623/1266734.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值