我有一个使用Kotlin DSL的Gradle 5.3构建脚本,类似于:
plugins {
`kotlin-dsl`
`java-library`
}
group = "my.company"
version = "1.2.3"
在这里,version=
解析为 org.gradle.api.Project.setVersion
。
现在,再往下,我想这样做(从Groovy DSL构建文件移植):
tasks.named<Jar>("jar") {
manifest {
attributes(
"Product-Version" to version
)
}
}
在这里,版本
解析为抽象ArchiveTask。getVersion
——不是我想要的(也不推荐使用)!
计算我可以使用静态编程语言的合格this
,我尝试使用
"${this@Project.version}"
相反(注意:额外的字符串换行消除了一个额外的类型错误),但是我现在得到了< code > Unresolved reference:@ Project 。
如何从 Kotlin DSL 表达式中访问项目版本?
Gradle脚本似乎没有嵌套在<code>项目</code>中,而是将访问器委托给它的相关属性。事实上,这个的顶级<code>类型是<code>Build_gradle</code>。
当这些访问器被阴影化时,可以使用变量项目
;那是
project.version
解决了手头的问题。作为替代方案,
this@Build_gradle.version
也是有效的,但可读性较差。
为了描述Gradle构建脚本,我们可以通过< code>build.gradle.kts文件使用Kotlin。在< code>dependencies和build 部分全局定义要使用的Kotlin版本是一个常见的问题(在给定的情况下使用不同的版本是相当罕见的)。 请考虑以下代码 (Gradle 4.3.1): 如您所见,kotlin(在本例中为1.2.30)定义了两次:和,它们通常没有区别。由于D
我试图用OkHttp和Cucumber在静态编程语言中设置一个Spring启动项目,并且在运行Cucumber任务时遇到以下错误。如何修复? 还有build gradle kts片段 我看到了这个错误https://github.com/square/okio/issues/647看起来可能是它,并修复了这个build.gradle,我如何将其翻译为kotlinbuild.gradle.kts?
正如标题所说,我正在尝试将Java和Kotlin混合在一个项目中。这里有一个很好的例子。混合java kotlin hello world。除了kotlin在src/main/Java/somepackage/SomeClass中找不到我的任何Java类之外,所有的东西都正常工作。Java语言 这是什么原因? 我的身材。gradle看起来像这样 而不是开始尝试在更大的项目上实现这一点。我试图通过创
到目前为止,我一直在使用这个静态编程语言密封类: 这在我的Kotlin和Java代码中都非常有效。今天我尝试将这个类改为使用对象(建议减少额外的类实例化): 我可以在我的其他静态编程语言文件中引用这个简单的版本,但是我现在正在努力在我的Java文件中使用它。 当我尝试在Java中引用时,我尝试了以下两种回弹编译错误: 有人知道我现在如何在Java中引用该实例吗?
有可能从Java代码中访问扩展函数吗? 我在静态编程语言文件中定义了扩展函数。 其中MyModel是(生成的)java类。现在,我想在我的普通java代码中访问它: 然而,那是行不通的。IDE无法识别bar()方法,编译失败。 work使用kotlin的静态函数: 通过使用导入com.test.extensions.ExtensionsPackage我的IDE似乎配置正确。 我从kotlin文档中
下面是Groovy的一个示例,它正好代表了我想要实现的目标: 命令行: 这个例子的来源在这里-选项3。 如何读取Kotlin DSL中的pass和值?