java 10.0.1 2018-04-171.2.414.7如果我们可以使用拼图模块系统会更好
尝试将现有内容迁移build.gradle到Kotlin,并且在我的项目中遇到以下错误:
Script compilation error:
Line 86: from(sourceSets["main"].allSource)
^ Unresolved reference: sourceSets
1 error
Run Code Online (Sandbox Code Playgroud)
subprojects当我尝试定义sourcesJar任务时,错误来自我的代码块:
subprojects {
val sourcesJar by tasks.registering(Jar::class) {
classifier = "sources"
from(sourceSets["main"].allSource) // error here
}
configure<PublishingExtension> {
publications {
register("mavenJava", MavenPublication::class) {
from(components["java"])
artifact(sourcesJar.get())
}
}
}
val implementation by configurations
val compileOnly by configurations
val annotationProcessor by configurations
dependencies {
implementation("org.jetbrains.kotlin:kotlin-stdlib:$kotlinVersion")
implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8")
implementation("org.jetbrains.kotlin:kotlin-reflect")
compileOnly("org.springframework.boot:spring-boot-autoconfigure")
// ...
}
}
Run Code Online (Sandbox Code Playgroud)
我正在使用以下内容:
build.gradle.ktsbefore subprojects块的开始部分:
import com.diffplug.gradle.spotless.KotlinExtension
import com.diffplug.gradle.spotless.SpotlessExtension
import …Run Code Online (Sandbox Code Playgroud) Gradle 5.0、Kotlin DSL
创建gradle.properties文件:
kotlinVersion=1.3.10
Run Code Online (Sandbox Code Playgroud)
创建build.gradle.kts文件:
val kotlinVersion: String by project
println(kotlinVersion) // works
plugins {
kotlin("jvm").version(kotlinVersion)
// ^ Unresolved reference: kotlinVersion
}
repositories {
jcenter()
}
tasks.register("compute") {
doLast {
println(kotlinVersion) // works
}
}
Run Code Online (Sandbox Code Playgroud)
运行gradle compute,然后更改
kotlin("jvm").version(kotlinVersion)
Run Code Online (Sandbox Code Playgroud)
到
kotlin("jvm").version("1.3.10")
Run Code Online (Sandbox Code Playgroud)
然后再次运行。一切正常。
我只是做错了什么吗?或者这是某种限制或错误?
我只是想将 Kotlin 版本移出构建脚本,这样我就可以稍后更改它(例如通过命令行... -PkotlinVersion=1.3.0),并保持依赖项和插件相同。
val kotlinVersion = "1.3.72"
plugins {
// Error: 'val kotlinVersion: String' can't be called in this context by implicit receiver. Use the explicit one if necessary
kotlin("jvm").version(kotlinVersion)]
}
Run Code Online (Sandbox Code Playgroud)
我也使用 Kotlin 的标准库作为依赖项,我只想在一个地方指定版本,但是当我尝试像上面在 build.gradle.kts 中所做的那样时,我收到了您在评论中看到的错误。我该如何解决这个问题?
我正在使用 Gradle KTS 文件并尝试设置 React Native。我无法添加
应用NativeModulesAppBuildGradle(项目)
applyNativeModulesAppBuildGradleKTS有什么替代方案吗?另外在设置上,我们必须写applyNativeModulesSettingsGradle
我将我的 gradle 文件从 groovy 迁移到 kotlin dsl。一切正常,但从另一个 kotlin 文件将值导入到 gradle 时出现问题。我可以导入变量并且自动完成工作正常,但是当我构建项目时,它给了我未解决的参考错误。感谢任何帮助。
摇篮版本:7.1.1
Android 工作室:北极狐
我在 buildSrc 下创建的 build.gradle.kts :
plugins {
`java-gradle-plugin`
`kotlin-dsl`
`kotlin-dsl-precompiled-script-plugins`
}
repositories {
mavenCentral()
}
Run Code Online (Sandbox Code Playgroud)
我从 buildSrc/src/main/java/Dependency 导入的文件:
object Versions {
const val compose_version = "1.0.0"
}
object Dependencies {
const val compose_ui = "androidx.compose.ui:ui:${Versions.compose_version}"
const val compose_material = "androidx.compose.material:material:${Versions.compose_version}"
const val compose_ui_tooling_preview = "androidx.compose.ui:ui-tooling-preview:${Versions.compose_version}"
const val compose_ui_tooling = "androidx.compose.ui:ui-tooling:${Versions.compose_version}"
const val compose_ui_test = "androidx.compose.ui:ui-test-junit4:${Versions.compose_version}"
}
Run Code Online (Sandbox Code Playgroud)
应用程序 build.gradle.kts 文件:
plugins {
id("com.android.application")
kotlin("android")
} …Run Code Online (Sandbox Code Playgroud) 我正在从 Android Gradle 4.1.3 升级到 7.0.2。我注意到的一件事是,对于我的com.android.library模块,
getByName("foo") {
...
}
Run Code Online (Sandbox Code Playgroud)
现在的接收器类型LibraryBuildType与BuildType以前不同。现在LibraryBuildType不再具有以前拥有isDebuggable的属性BuildType。
Android 官方文档提到了这一点
如果您的应用程序依赖于您也想调试的库模块,则还必须打包该库,
debuggable true以便它保留其调试符号。
显然这些文档已经过时了,但是有什么用呢?不再debuggable true需要库模块?
我找到了git logfor ,它显示它是在 2020 年 4 月左右添加的,但我在LibraryBuildTypeandroid gradle 插件发行说明中没有找到任何有关此的信息
android gradle kotlin android-gradle-plugin gradle-kotlin-dsl
我是 Gradle 新手,我正在尝试将我的 android groovy 构建脚本移植到 kts。
我有一个可以工作的版本,但是 Android studio 正在抱怨(到处)我的语法。
例如:
defaultConfig: 'defaultConfig(kotlin.jvm.functions.Function1<? super com.android.build.api.dsl.ApplicationDefaultConfig,kotlin.Unit>)' 被 @Incubating 标记为不稳定
“setApplicationId(java.lang.String)”在不稳定的“com.android.build.api.dsl.ApplicationBaseFlavor”中声明,并用@Incubating标记
这一直持续下去。当我查看文档时,我可以看到它正在孵化,但它没有说明用它替换什么等等。
android {
compileSdk = 31
defaultConfig {
applicationId = "myappId"
minSdk = 21
targetSdk = 31
versionCode = 1
versionName = "1.0"
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
}
Run Code Online (Sandbox Code Playgroud)
我应该忽略这些警告吗?如果是这样,为什么要发出警告?
我刚刚在另一台机器上打开该项目,没有看到警告。该机器正在运行完全相同版本的 Android Studio:
当我单击 defaultConfig 之类的内容并导航到源代码时,我看到它来自完全相同的模块。它被标记为@Incubating。
我还检查了设置>编辑器>检查,它们都有相同的设置。
使用gradle-groovy,可以使用以下命令创建新配置:
configurations {
explode
}
dependencies {
explode (group: 'org.apache.samza', name: 'samza-shell', ext: 'tgz', classifier: 'dist', version: "$SAMZA_VERSION")
}
Run Code Online (Sandbox Code Playgroud)
但是我不知道如何用kotlin-dsl做到这一点。我试过了:
val explode by configurations
dependencies {
explode(group = "org.apache.samza", name = "samza-shell", ext = "tgz", classifier = "dist", version = samzaVersion)
// "explode"(group = "org.apache.samza", name = "samza-shell", ext = "tgz", classifier = "dist", version = samzaVersion)
}
Run Code Online (Sandbox Code Playgroud)
但没有成功。有任何想法吗?
我想要什么?
我想使用kotlintest运行测试,并且单击了测试类旁边的图标,从而成功地从IntelliJ运行了它们。我的项目中也有JUnit 5测试。我现在开始使用Gradle Kotlin DSL,并且设法运行了check执行JUnit 5任务的Gradle 任务。
问题是什么?
kotlintest测试未运行!似乎它没有被Gradle发现,因为失败的测试使Gradle任务成功。所以,
如何同时使用Gradle Kotlin DSL和JUnit 5运行kotlintest测试?
我尝试了什么?
如何使用Gradle运行kotlintest测试?基本上是问题的旧版本,但是由于使用了不同的技术:JUnit 4和Gradle而不是Gradle Kotlin DSL,已经过时了。我可以找到的所有其他问题是针对JUnit 4还是不带kotlintest的JUnit 5。
项目设置
我正在使用Gradle 4.6。我的测试是
import io.kotlintest.matchers.exactly
import io.kotlintest.matchers.shouldBe
import io.kotlintest.specs.FunSpec
class KotlinTest: FunSpec() {
init {
testCalculate()
}
/** This failing test will not fail the Gradle check. */
fun testCalculate() = test("one plus one is two") {
(1+1).toDouble() shouldBe exactly(42.0)
}
}
Run Code Online (Sandbox Code Playgroud)
我的build.gradle.kts是
import org.gradle.api.plugins.ExtensionAware
import org.junit.platform.gradle.plugin.FiltersExtension …Run Code Online (Sandbox Code Playgroud) gradle ×8
kotlin ×7
android ×3
junit5 ×2
build.gradle ×1
java ×1
kotlintest ×1
react-native ×1