我添加了一个自定义属性gradle.properties
:
libraryVersion=0.1.0-beta
如何在我发布的代码中阅读此内容?我想在我的 Kotlin 库中使用这个值,而不需要对其进行硬编码。
您可以访问中定义的系统属性gradle.properties
。他们应该有systemProp.
字首。然后在 gradle 构建文件中,您应该将其传递到程序内部。
这是控制台应用程序的示例,它打印在中定义的属性gradle.properties
.
File gradle.properties
:
systemProp.libraryVersion=0.1.0-beta
File Main.kt
:
fun main(args: Array<String>) {
val libraryVersion = System.getProperty("libraryVersion") ?: ""
println(libraryVersion)
}
File build.gradle.kts
:
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
plugins {
kotlin("jvm") version "1.5.10"
application
}
group = "me.yunir"
version = "0.1"
repositories {
mavenCentral()
}
dependencies {
testImplementation(kotlin("test"))
}
tasks.test {
useJUnitPlatform()
}
tasks.withType<KotlinCompile> {
kotlinOptions.jvmTarget = "11"
}
application {
mainClass.set("MainKt")
// applicationDefaultJvmArgs = listOf( // 1
// "-DlibraryVersion=${System.getProperty("libraryVersion")}"
// )
}
tasks.named<JavaExec>("run") { // 2
systemProperty("libraryVersion", System.getProperty("libraryVersion"))
}
将系统属性传递给程序有两种变体:
- 使用“应用程序”插件特定的属性
applicationDefaultJvmArgs
- using
systemProperty
特定任务的方法
程序的输出:
0.1.0-beta
附加链接:
- https://docs.gradle.org/current/userguide/build_environment.html#sec:gradle_system_properties https://docs.gradle.org/current/userguide/build_environment.html#sec:gradle_system_properties
- https://docs.oracle.com/javase/tutorial/essential/environment/properties.html https://docs.oracle.com/javase/tutorial/essential/environment/properties.html
- https://stackoverflow.com/a/61801906/16341604 https://stackoverflow.com/a/61801906/16341604
UPD. 1
或者如果您不想使用前缀systemProp.
并使用 gradle 项目属性,那么第二个变体将如下所示:
File gradle.properties
:
libraryVersion=0.1.0-beta
File build.gradle.kts
:
...
tasks.named<JavaExec>("run") { // 2
systemProperty("libraryVersion", findProperty("libraryVersion") ?: "")
}
...
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)