标签: gradle-kotlin-dsl

IDEA 在命令行 gradle run 成功时报告 build.gradle.kts 中的错误

我正在使用 Kotlin DSL 和 Gradle 构建工具。从命令行运行时,我的 gradle 构建在本地和 jenkins 服务器上运行良好。

然而,IDEA 抱怨并将几个项目标记为红色,并显示以下错误:

  • 无法访问类“java.lang.Object”。检查您的模块类路径是否缺少或冲突的依赖项
  • 不能使用提供的参数调用以下任何函数

我在项目设置中尝试了所有 3 个选项: - 使用默认的 gradle 包装器 - 使用 gradle 'wrapper' 任务配置 - 使用本地 gradle 分发

结果如果完全相同

问题:配置有问题,或者是否有修复或解决方法?

IntelliJ IDEA 2018.1.2 (Community Edition)
Build #IC-181.4668.68, built on April 24, 2018
JRE: 1.8.0_152-release-1136-b29 amd64
JVM: OpenJDK 64-Bit Server VM by JetBrains s.r.o
Linux 4.15.0-20-generic
Run Code Online (Sandbox Code Playgroud)

.

Kotlin plugin: 1.2.41-release-IJ2018.1-1
Run Code Online (Sandbox Code Playgroud)

.

Gradle 4.7
------------------------------------------------------------

Build time:   2018-04-18 09:09:12 UTC Revision:     b9a962bf70638332300e7f810689cb2febbd4a6c

Groovy:       2.4.12 Ant:          Apache Ant(TM) version 1.9.9 …
Run Code Online (Sandbox Code Playgroud)

intellij-idea gradle gradle-kotlin-dsl

7
推荐指数
1
解决办法
1241
查看次数

如何将 Kotlin 源码的测试报告上传到 Coveralls?

我想在 Travis 构建完成后自动将我的 Jacoco 测试报告上传到 Coveralls。它适用于 Java,但如何为 Kotlin 配置它?

错误信息

我可以在本地和 Travis 上生成 Jacoco 测试报告,但是当 Travis 尝试提交给工作服时,它会失败并显示消息

> Task :coveralls
No source file found on the project: "kotlin-template-project"
With coverage file: /home/travis/build/myname/myreponame/build/reports/jacoco/test/jacocoTestReport.xml
Run Code Online (Sandbox Code Playgroud)

Google 将我链接到 Gradle 插件实现,它显示了它在哪里抛出此消息,它告诉我(我认为)找到了 Jacoco 报告文件,但没有找到工作人员显然需要的源文件。

我试过的

因此,我尝试通过所有这些方式将工作服任务指向我的源文件:

coveralls {
    sourceDirs += allprojects.sourceSets.main.allSource.srcDirs.flatten()
    sourceDirs += files(sourceSets.main.kotlin.srcDirs).files.absolutePath
    project.extensions.coveralls.sourceDirs += project.sourceSets.main.kotlin.srcDirs
    sourceDirs += ['src/main/kotlin']
    jacocoReportPath = 'build/reports/jacoco/test/jacocoTestReport.xml'
    sourceDirs += ['src/test/kotlin']
    sourceDirs += ["${projectDir}/src/main/kotlin"]
}
Run Code Online (Sandbox Code Playgroud)

我也尝试添加sourceSets project.sourceSets.mainjacocoTestReport任务中。

项目设置

我的最小build.gradle文件:

plugins {

    id 'org.jetbrains.kotlin.jvm' …
Run Code Online (Sandbox Code Playgroud)

gradle jacoco kotlin coveralls gradle-kotlin-dsl

7
推荐指数
1
解决办法
858
查看次数

迁移到 gradle kotlin dsl 后未解析的 buildSrc kotlin 常量引用

我正在尝试将我的 android 项目迁移到使用 gradle kotlin dsl,用 build.gradle.kts 文件替换所有 build.gradle 文件并在那里使用 kotlin。之前,我曾经有一个 kotlin 文件,其中包含带有库和版本常量的对象元素(在 buildSrc -> src -> main -> kotlin 中),例如:

object Versions {
    const val anyLibVersion = "1.0.0"
}

object Lib {
    const val anyLib = "x:y:${Versions.anyLibVersion}"
}
Run Code Online (Sandbox Code Playgroud)

在 build.gradle 文件中,我可以毫无问题地访问这些常量,但是一旦我将它们切换到 build.gradle.kts,它就无法再解析它们。对此有什么解释吗?

android build.gradle gradle-kotlin-dsl

7
推荐指数
1
解决办法
4972
查看次数

Gradle kotlin-dsl 配置不起作用,无法识别 android 扩展功能

我正在尝试使用 kotlin-dsl 配置我的 gradle 设置。我的项目 gradle 是这样的:

buildscript {
    repositories {
        google()
        jcenter()
    }

dependencies {
        classpath("com.android.tools.build:gradle:3.3.2")
        classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.21")
    }
}

allprojects {
    repositories {
        google()
        jcenter()
    }
}
Run Code Online (Sandbox Code Playgroud)

和我的应用程序级gradle:

plugins {
    id("com.android.application")
    id("kotlin-android")
}

android {  // marked red

}
Run Code Online (Sandbox Code Playgroud)

两个文件名都是 build.gradle.kts。Gradle 版本是 5.2.1。我遇到的问题是 IDE 无法识别 app-gradle 文件中的 android {} 部分,我无法配置 compileSdkVersion 等内容。我又一次尝试将项目迁移到 kotlin-dsl再一次,只有失败和沮丧。不知道为什么这永远行不通,总是让我保持旧的方式。我做错了什么,为什么不起作用?

android gradle gradle-kotlin-dsl

7
推荐指数
1
解决办法
4257
查看次数

android studio项目中未生成构建文件夹

迁移到 gradle kotlin dsl 并且自从从 android studio 运行项目以来无法生成构建文件夹和 apk。构建成功但安装失败并显示以下消息:

The APK file /Users/user/AndroidStudioProjects/project/app/build/outputs/apk/Stage/debug/stage-debug.apk does not exist on disk.
Error while Installing APK
Run Code Online (Sandbox Code Playgroud)

根本没有生成此构建文件夹。在迁移到 gradle kotlin dsl 之前,将从 build/intermediates/.....splitapk.apk 中选取 apk

我正在使用 android studio 3.4 RC3

android build apk android-studio-3.0 gradle-kotlin-dsl

7
推荐指数
1
解决办法
1578
查看次数

Gradle 属性中的参考属性

我的gradle.properties.kts文件有以下内容:

build_version=develop
build_version_code=2
include_vas=false
Run Code Online (Sandbox Code Playgroud)

在我的build.gradle.kts中如下所示:

plugins {
    id(Plugins.androidApplication)
    kotlin(Plugins.kotlinAndroid)
    kotlin(Plugins.kotlinExtensions)
    kotlin(Plugins.kapt)
}


android {
    compileSdkVersion(Configs.compileVersion)
    defaultConfig {
        applicationId = Configs.applicationId
        minSdkVersion(Configs.minSdkVersion)
        targetSdkVersion(Configs.targetSdkVersion)
        testInstrumentationRunner = Configs.testInstrumentationRunner
        versionCode =
    }


  buildTypes{

  }
    repositories {
        flatDir {
            dirs("libs")
        }
    }

    dependencies {
        implementation(fileTree(mapOf("dir" to "libs", "include" to listOf("*.jar", "*.arr"))))
        implementation(Libs.stdLib)
        implementation(Libs.sunmiui)
        implementation(Libs.slf4j)
        implementation(Libs.appCompact)
        implementation(Libs.otpView)
        implementation(Libs.vectordrawableAnimated)
        implementation(Libs.materialComponents)
        implementation(Libs.recyclerView)
        implementation(Libs.constraintLayout)
        implementation(Libs.junit)
        implementation(Libs.testRunner)
        implementation(Libs.expressoCore)
        implementation(Libs.lifecyleExtensions)
        implementation(Libs.lifecyleCompiler)
        implementation(Libs.roomRuntime)
        implementation(Libs.databindingCompiler)
        implementation(Libs.rxjava)
        implementation(Libs.rxjavaAndroid)
        implementation(Libs.glide)
        implementation(Libs.glideCompiler)
        implementation(Libs.gson)
        implementation(Libs.joda)
        implementation(Libs.countrycodePicker)
        implementation(Libs.timber)
        implementation(Libs.daggerandroidSupport)
        implementation(Libs.daggerandroidProcessor)
    }
Run Code Online (Sandbox Code Playgroud)

我正在将我当前的 gradle 脚本转换为 …

android gradle android-gradle-plugin gradle-kotlin-dsl

7
推荐指数
3
解决办法
8215
查看次数

Gradle kotlin 如何调用父级中定义的函数?

使用 gradle 多模块项目时,是否可以在父项目中定义函数但在子模块 build.gradle.kts 中使用它们?

请注意,我不需要使用字符串注册和调用的无类型任务......我希望将实际的类型安全代码共享给子模块。

理想情况下不创建插件或使用 buildSrc。

从父级 build.gradle.kts 到所有子模块共享类的最重要方式是什么?

注意:这与通过 ext 共享闭包不同......你失去了类型安全,我要求的是子模块方面的类型安全。

build gradle kotlin gradle-kotlin-dsl

7
推荐指数
1
解决办法
839
查看次数

使用 Kotlin DSL 在单独的文件中配置插件

为了区分不同的插件配置,我使用单独的文件。

例如:

./build.gradle.kts
./detekt.gradle.kts
./settings.gradle.kts
./module1
./module2
...

在根中,build.gradle.kts我有这个:

plugins {
    id("io.gitlab.arturbosch.detekt") version DependencyVersion.Detekt
}

buildscript {
    dependencies {
        classpath(io.gitlab.arturbosch.detekt:detekt-gradle-plugin:1.1.1)
    }
}
Run Code Online (Sandbox Code Playgroud)

并配置它我去detekt.gradle.kts并把:

apply(plugin = "io.gitlab.arturbosch.detekt")

detekt {
    // configure
}
Run Code Online (Sandbox Code Playgroud)

但是detekt找不到 lambda。还尝试过:

apply(plugin = "io.gitlab.arturbosch.detekt")

configure<io.gitlab.arturbosch.detekt.Detekt> {
    // configure
}
Run Code Online (Sandbox Code Playgroud)

但它没有找到.Detekt

使用 JaCoCo,我使用第二种方法没有任何问题,但它不适用于 Detekt 或 SonarQube。

如何在单独的文件中配置插件?

谢谢。

gradle gradle-kotlin-dsl

7
推荐指数
1
解决办法
405
查看次数

使用gradle版本目录时如何指定分类器?

使用 Gradle 版本目录声明依赖项时,必须将依赖项分类器放在哪里?例如io.netty:netty-transport-native-epoll:4.1.74.Final:linux-x86_64 使用普通实现函数:

implementation("io.netty:netty-transport-native-epoll:4.1.74.Final:linux-x86_64")
Run Code Online (Sandbox Code Playgroud)

它可以工作,但是如何使用目录执行相同的操作:

netty-epoll-linux = { group = "io.netty", name = "netty-transport-native-epoll", version = "4.1.74.Final", ????? classifier="linux-x86_64" - doesn't work }
Run Code Online (Sandbox Code Playgroud)

java gradle gradle-kotlin-dsl

7
推荐指数
1
解决办法
1827
查看次数

为什么升级到 AGP 8.3.0-alpha06 会导致构建失败并显示“参数‘提供者’未传递任何值”

我已经将我的 android studio 版本升级到

Android Studio Iguana | 2023.2.1 Canary 6
Build #AI-232.9921.47.2321.10875067, built on September 28, 2023
Runtime version: 17.0.8+0-17.0.8b1000.22-10799086 x86_64
VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o.
macOS 12.6.1
GC: G1 Young Generation, G1 Old Generation
Memory: 5120M
Cores: 12
Metal Rendering is ON
Registry:
    external.system.auto.import.disabled=true
    debugger.new.tool.window.layout=true
    ide.text.editor.with.preview.show.floating.toolbar=false
    ide.instant.shutdown=false
    ide.experimental.ui=true
    ide.images.show.chessboard=true

Non-Bundled Plugins:
    com.github.rmehri01.onenord (0.0.7)
    com.arcticicestudio.nord.jetbrains (0.13.0)
Run Code Online (Sandbox Code Playgroud)

和 AGP 版本8.3.0-alpha06

现在我的构建在这两行上失败了

import com.android.build.gradle.internal.cxx.configure.gradleLocalProperties

val googleApiKey: String = gradleLocalProperties(rootDir).getProperty("GOOGLE_API_KEY")
val googleCrashReportingApiKey: String = gradleLocalProperties(rootDir).getProperty("GOOGLE_CRASH_REPORTING_API_KEY")


* What went …
Run Code Online (Sandbox Code Playgroud)

android gradle android-studio gradle-kotlin-dsl

7
推荐指数
1
解决办法
240
查看次数