如何获取 kotlin 代码中 'gradle.properties 中定义的自定义属性?

2024-02-16

我添加了一个自定义属性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(使用前将#替换为@)

如何获取 kotlin 代码中 'gradle.properties 中定义的自定义属性? 的相关文章

  • 如何动态创建新属性

    如何从对象方法内的给定参数创建属性 class Foo public function createProperty var name val here how can I create a property named var name
  • 实体框架 - 循环更新属性

    我正在尝试找到一种方法来循环 EF 对象的属性并更新这些属性的值 更具体地说 我有 50 个字段 其中最多填充 50 个下拉列表 所有 50 个可能都需要填充 也可能不需要填充 为了解决这个问题 我有一个中继器 最多可以创建 50 个 DD
  • Jetpack 中的波浪框组成

    有没有办法用Canvas制作一个顶部有波浪形的盒子 我想知道这个效果是否可以直接用Canvas来实现 不需要有滚动动画 不太清楚你为什么在谈论Canvas 要裁剪这样的视图 您可以使用自定义Shape并将其应用到您的视图中Modifier
  • 用于 Kotlin 中单元测试的 BuildConfigField 模拟

    我正在尝试尽可能多地涵盖Kotlin Android 库我遇到了有关自定义 BuildConfig 变量的问题 更广为人知的是buildConfigField 我想模拟这个变量来测试两者true and false values 从 Gra
  • Jetpack Compose:制作全屏(绝对定位)组件

    我怎样才能在全屏渲染树的深处制作一个可组合的 类似于Dialog可组合作品 例如 当用户单击图像时 它会显示该图像的全屏预览 而无需更改当前路线 我可以用 CSS 来做到这一点position absolute or position fi
  • Android计算两个日期之间的天数

    我编写了以下代码来查找两个日期之间的天数 startDateValue new Date startDate endDateValue new Date endDate long diff endDateValue getTime star
  • 来自java的kotlin函数默认参数

    给出以下 Kotlin 类 class Foo public fun bar i Int 0 Int 2 i 我应该如何在没有 java groovy 代码中的任何参数的情况下调用 bar 函数 def f new Foo f bar th
  • Android Gradle 问题 - Flutter / Dart

    我的 Gradle 同步有问题 我使用 IntelliJ 和 Android Studio 构建 Flutter Dart 应用程序 我添加了 2 个新的依赖项 现在 Gradle 出现了问题 在 Android Studio 中一切正常
  • 如何使用表内的 JSONB 数据类型和 PostgreSQL JDBC 驱动程序将 JSON 对象存储到 PostgreSQL 中

    我想将以下 json 对象保存到 PostgreSQL 数据库表中as jsonb fname john lname doe 我当前使用 PGObject 创建对象并将类型设置为 jsonb 并将值作为 json 字符串传递 寻找更好的 m
  • Kotlin 和惯用的书写方式,基于可变值“如果不为空,则...”

    假设我们有这样的代码 class QuickExample fun function argument SomeOtherClass if argument mutableProperty null doSomething argument
  • Jenkins + Gradle + Artifactory:无法读取生成的构建信息

    我正在尝试使用 Jenkins Pipeline 调用 Gradle 工具 将我的工件推送到 Artifactory 我正在关注 GitHub 上发布的示例 Example1 https github com JFrogDev projec
  • 具有自定义源集的 Android Gradle 风格 - gradle 文件应该是什么样子?

    我有一个旧的 eclipse 项目 我已经转移到 android studio 并设置为使用flavor 它似乎工作得很好 直到我开始尝试在我的风格之间使用不同的 java 文件 我的项目设置是这样的 ProjectRoot acitonb
  • Gradle 列出本地项目依赖项

    我有以下项目结构 root A B B1 B2 C 其中 B1 依赖于 B2 和 A B2 也依赖于 A 和 C 所有这些项目还具有从中央存储库下载的外部依赖项 是否有一个 gradle 任务来获取所有本地依赖项 传递 我想要某种 B1 A
  • kotlin 从数组中获取随机字符串

    刚接触 kotlin 有不少问题和解答 大部分是 Java 方面的 在遵循文档并针对大量 SO 进行验证之后问题和答案 https stackoverflow com questions 6726963 random string from
  • Python 属性和 Swig

    我正在尝试使用 swig 为一些 C 代码创建 python 绑定 我似乎遇到了一个问题 试图从我拥有的一些访问器函数创建 python 属性 方法如下 class Player public void entity Entity enti
  • 使用 Android Gradle 插件生成 JavaDocs

    如何使用新的 Gradle 构建系统为 Android 项目生成 JavaDocs 这是我想出的 但它不起作用 task generateJavadoc type Javadoc source android sourceSets main
  • C# 在不创建实例的情况下获取属性值?

    是否可以在不创建实例的情况下获得价值 我有这门课 public class MyClass public string Name get return David public MyClass 现在我需要获取值 David 而不创建 MyC
  • 在 Anko DSL 中创建自定义 View/ViewGroup 类

    我想创建一个自定义视图 它只是一些 Android 视图的包装 我考虑创建一个自定义 ViewGroup 来管理其子视图的布局 但我不需要这么复杂 我基本上想做的是 class MainActivity verticalLayout tex
  • Android Studio更新到1.5后Gradle错误

    今天我已将 Android Studio 更新到 v1 5 我的 libgdx 项目在这次更新之前运行良好 现在我收到此错误消息 Error Unable to load class org gradle mvn3 org sonatype
  • Gradle SignArchives 无法读取 Secret Key

    我正在尝试将我的 Java 库发布到 Maven Central 其中一部分涉及使用signinggradle 插件来签署工件 我需要在不使用密钥环文件的情况下对其进行签名作为此处的文档 https docs gradle org curr

随机推荐