标签: gradle-kotlin-dsl

如何在 build.gradle.kts 中设置compileJava'任务(11)和'compileKotlin'任务(1.8)jvm目标对相同Java版本的兼容性?

构建.gradle.kts

buildscript {
    repositories {
        google()
        mavenCentral()
        gradlePluginPortal()
    }
    dependencies {
        classpath ("com.android.tools.build:gradle:7.0.2")
        classpath ("org.jetbrains.kotlin:kotlin-gradle-plugin:1.5.30")
        classpath("gradle.plugin.com.github.spotbugs.snom:spotbugs-gradle-plugin:${Versions.spotbugsGradlePluginVersion}")
        classpath("se.bjurr.violations:violations-gradle-plugin:${Versions.violationsVersion}")

    }
}
//android {
//    compileOptions {
//        sourceCompatibility = JavaVersion.VERSION_11
//                targetCompatibility = JavaVersion.VERSION_11
//    }
//
//    kotlinOptions {
//        jvmTarget = JavaVersion.VERSION_11.toString()
//    }
//}
plugins {
    `maven-publish`
    `java-gradle-plugin`
    `kotlin-dsl`
    id ("io.gitlab.arturbosch.detekt") version ("1.18.1")
}
repositories {
    google()
    mavenCentral()
    gradlePluginPortal()
}

dependencies {
    compileOnly(gradleApi())
    testImplementation(gradleTestKit())
    testImplementation("junit:junit:${Versions.jUnitVersion}")
}
val generatedSources = tasks.register<GenerateVersionsFileTask>("generateSources")
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

错误:“compileJava”任务(当前目标是 11)和“compileKotlin”任务(当前目标是 1.8)jvm 目标兼容性应设置为相同的 Java 版本。

当我取消注释时android …

java dependencies kotlin android-gradle-plugin gradle-kotlin-dsl

275
推荐指数
12
解决办法
23万
查看次数

您的项目需要更新版本的 Kotlin Gradle 插件。(安卓工作室)

我刚刚将我的 flutter 项目包更新为空安全兼容,现在 Android Studio 希望我更新我的项目以使用最新版本的 Kodling Gradle 插件。但看不出在哪里可以改变这一点。我尝试过改变,"org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"但这"org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.6.10"没有效果。

我的build.grade文件如下所示:

def localProperties = new Properties()
def localPropertiesFile = rootProject.file('local.properties')
if (localPropertiesFile.exists()) {
    localPropertiesFile.withReader('UTF-8') { reader ->
        localProperties.load(reader)
    }
}

def flutterRoot = localProperties.getProperty('flutter.sdk')
if (flutterRoot == null) {
    throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.")
}

def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
if (flutterVersionCode == null) {
    flutterVersionCode = '1'
}

def flutterVersionName = localProperties.getProperty('flutter.versionName')
if (flutterVersionName == null) …
Run Code Online (Sandbox Code Playgroud)

kotlin android-studio flutter gradle-kotlin-dsl

170
推荐指数
9
解决办法
23万
查看次数

org.gradle.api.InvalidUserCodeException:不支持在任务...完成之前查询提供者(java.util.Set)的映射值

我将我的项目升级到Android Studio Arctic Fox,因此我必须将gradle升级到7.0.2,并将gradle构建工具升级到7.0.0-beta04。

同步后,我在“同步”选项卡中收到此警告消息:

org.gradle.api.InvalidUserCodeException: Querying the mapped value of provider(interface java.util.Set) before task ':myapp:compileDebugUnitTestKotlin' has completed is not supported
    at org.gradle.api.internal.provider.TransformBackedProvider.lambda$beforeRead$0(TransformBackedProvider.java:84)
    at org.gradle.api.internal.file.AbstractFileCollection$ElementsProvider$1.visitProducerTasks(AbstractFileCollection.java:361)
    at org.gradle.api.internal.provider.ValueSupplier$ValueProducer.visitContentProducerTasks(ValueSupplier.java:59)
    at org.gradle.api.internal.provider.TransformBackedProvider.beforeRead(TransformBackedProvider.java:81)
    at org.gradle.api.internal.provider.TransformBackedProvider.calculateOwnValue(TransformBackedProvider.java:63)
    at org.gradle.api.internal.provider.AbstractMinimalProvider.calculateValue(AbstractMinimalProvider.java:103)
    at org.gradle.api.internal.provider.Collectors$ElementsFromCollectionProvider.collectEntries(Collectors.java:216)
    at org.gradle.api.internal.provider.AbstractCollectionProperty$PlusCollector.collectEntries(AbstractCollectionProperty.java:445)
    at org.gradle.api.internal.provider.AbstractCollectionProperty$PlusCollector.collectEntries(AbstractCollectionProperty.java:445)
    at org.gradle.api.internal.provider.AbstractCollectionProperty$CollectingSupplier.calculateValue(AbstractCollectionProperty.java:337)
    at org.gradle.api.internal.provider.AbstractCollectionProperty.calculateValueFrom(AbstractCollectionProperty.java:184)
    at org.gradle.api.internal.provider.AbstractCollectionProperty.calculateValueFrom(AbstractCollectionProperty.java:37)
    at org.gradle.api.internal.provider.AbstractProperty.doCalculateValue(AbstractProperty.java:133)
    at org.gradle.api.internal.provider.AbstractProperty.calculateOwnValue(AbstractProperty.java:127)
    at org.gradle.api.internal.provider.AbstractMinimalProvider.calculateValue(AbstractMinimalProvider.java:103)
    at org.gradle.api.internal.provider.Collectors$ElementsFromCollectionProvider.collectEntries(Collectors.java:216)
    at org.gradle.api.internal.provider.AbstractCollectionProperty$CollectingSupplier.calculateValue(AbstractCollectionProperty.java:337)
    at org.gradle.api.internal.provider.AbstractCollectionProperty.calculateValueFrom(AbstractCollectionProperty.java:184)
    at org.gradle.api.internal.provider.AbstractCollectionProperty.calculateValueFrom(AbstractCollectionProperty.java:37)
    at org.gradle.api.internal.provider.AbstractProperty.doCalculateValue(AbstractProperty.java:133)
    at org.gradle.api.internal.provider.AbstractProperty.calculateOwnValue(AbstractProperty.java:127)
    at org.gradle.api.internal.provider.AbstractMinimalProvider.calculateValue(AbstractMinimalProvider.java:103)
    at org.gradle.api.internal.provider.Collectors$ElementsFromCollectionProvider.collectEntries(Collectors.java:216)
    at org.gradle.api.internal.provider.AbstractCollectionProperty$CollectingSupplier.calculateValue(AbstractCollectionProperty.java:337)
    at org.gradle.api.internal.provider.AbstractCollectionProperty.calculateValueFrom(AbstractCollectionProperty.java:184)
    at org.gradle.api.internal.provider.AbstractCollectionProperty.calculateValueFrom(AbstractCollectionProperty.java:37)
    at org.gradle.api.internal.provider.AbstractProperty.doCalculateValue(AbstractProperty.java:133)
    at org.gradle.api.internal.provider.AbstractProperty.calculateOwnValue(AbstractProperty.java:127)
    at org.gradle.api.internal.provider.AbstractMinimalProvider.get(AbstractMinimalProvider.java:84)
    at …
Run Code Online (Sandbox Code Playgroud)

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

121
推荐指数
5
解决办法
8万
查看次数

在以下任何来源中均未找到插件 [id: 'dagger.hilt.android.plugin']

当我想在我的项目中使用@AndroidEntryPoint(它是 hilt 的属性)时,我收到以下警告。

 Expected @AndroidEntryPoint to have a value. Did you forget to apply the Gradle Plugin? (dagger.hilt.android.plugin)
Run Code Online (Sandbox Code Playgroud)

当我尝试将 id 'dagger.hilt.android.plugin' 添加到项目的模块级 build.gradle 文件中时,出现以下错误。

org.gradle.api.plugins.UnknownPluginException: Plugin [id: 'dagger.hilt.android.plugin'] was not found in any of the following sources:
Run Code Online (Sandbox Code Playgroud)

我尝试将其添加到项目模块级别的 build.gradle 文件中,如下所示。他们都给出了一个错误。

在此输入图像描述

我尝试将其作为类路径添加到项目级别的 build.gradle 文件中,在这种情况下我仍然收到错误。

在此输入图像描述

当我创建默认项目时,创建了一个settings.gradle结构,如下所示。这是我第一次使用这个版本。我的 Android Studio 版本 Android Studio - Bumblebee | 2021.1.1 金丝雀 13

在此输入图像描述

android gradle android-studio gradle-kotlin-dsl dagger-hilt

67
推荐指数
6
解决办法
5万
查看次数

Gradle7版本目录:如何与buildSrc一起使用?

我对正在孵化的 Gradle 版本目录感到非常兴奋,并且一直在尝试它。I\xe2\x80\x99ve 发现我的信息可以在我的应用程序和 utility-lib 项目的脚本gradle/libs.versions.toml中访问。build.gradle.kts

\n

但是,我无法使用该toml文件的内容buildSrc/build.gradle.kts约定文件

\n

我可以构建的唯一方法是将依赖项硬编码到这些文件中,就像我在版本目录功能之前所做的那样。

\n

在该buildSrc文件夹中,我创建了一个settings.gradle.kts文件并插入了 的dependencyResolutionManagement代码versionCatalogs,该代码指向与我的应用程序和 utility-lib 项目相同的文件。

\n

根据 Gradle7文档,似乎可以与 和 模块共享版本目录\xe2\x80\xa6 I\xe2\x80\x99d如果可能的buildSrc话,希望能够推动它与 一起工作。buildSrc

\n

这是一个简单的示例项目,我通过以下方式创建gradle initmy-version-catalog

\n

感谢您的时间和帮助,

\n

麦克风

\n

gradle build.gradle gradle-plugin gradle-kotlin-dsl

35
推荐指数
1
解决办法
1万
查看次数

如何使用kotlinscript DSL(build.gradle.kts)通过url添加maven存储库

请告诉我从下面的代码片段相当于build.gradle一个build.gradle.kts版本?

repositories {
  mavenCentral()
  maven {
    url '<MAVEN REPO URL>'
  }
}
Run Code Online (Sandbox Code Playgroud)

gradle kotlin gradle-kotlin-dsl

33
推荐指数
4
解决办法
6813
查看次数

buildFeatures 是不稳定的,因为它的签名引用不稳定...标记为@Incubating

更新 Android studio 项目并迁移到 Kotlin dsl。我看到上面的警告包装了buildFeatures块,其中我启用了 dataBinding 和更新的视图绑定功能,我的 AS 和 gradle、kotlin 插件版本如下:

安卓工作室V4.0

// defined in buildSrc\build.gradle.kts

val kotlinVersion     = "1.3.71"
val gradleVersion     = "4.0.0"
Run Code Online (Sandbox Code Playgroud)

一切工作正常,除了我的(应用程序)build.gradle.kts 中此块的所有 3 行警告:

 buildFeatures{
     dataBinding = true
     viewBinding = true
 }
Run Code Online (Sandbox Code Playgroud)

将鼠标悬停在每一行上时出现的警告消息如下:

'buildFeatures(kotlin.jvm.functions.Function1<? super com.android.build.api.dsl.ApplicationBuildFeatures,kotlin.Unit>)'
is unstable because its signature references unstable 'com.android.build.api.dsl.ApplicationBuildFeatures' 
marked with @Incubating 
Run Code Online (Sandbox Code Playgroud)
'getDataBinding()' is declared in unstable 'com.android.build.api.dsl.BuildFeatures' marked with @Incubating 
Run Code Online (Sandbox Code Playgroud)
'getViewBinding()' is declared in unstable 'com.android.build.api.dsl.BuildFeatures' marked with @Incubating 
Run Code Online (Sandbox Code Playgroud)

关于为什么它们被标记为警告的任何线索,在转换为 .kts 之前原始 build.gradle 文件中存在相同的块

android kotlin android-studio build.gradle gradle-kotlin-dsl

32
推荐指数
2
解决办法
2万
查看次数

Gradle with Gradle Kotlin DSL中的Boilerplate项目配置

我目前正在努力改进项目共享配置的方式.我们为所有库和微服务(即许多git repos)提供了许多不同的多模块gradle项目.

我的主要目标是:

  • 不要在每个项目中复制我的Nexus存储库配置(同样,我可以放心地假设URL不会更改)
  • 为了使我的自定义Gradle插件(发布到Nexus)可用于每个项目,只需极少的样板/复制(它们应该可用于每个项目,项目唯一关心的是它使用的版本)
  • 没有魔力 - 开发人员应该明白如何配置所有内容

我目前的解决方案是使用init脚本的自定义gradle分发:

  • 添加mavenLocal()和我们的Nexus存储库到项目repos(非常类似于Gradle init脚本文档示例,除了它添加repos以及验证它们)
  • 配置一个扩展,允许我们的gradle插件添加到buildscript类路径(使用此解决方法).它还添加了我们的Nexus repo作为buildcript repo,因为它是托管插件的地方.我们有很多插件(基于Netflix优秀的星云插件)用于各种样板:标准项目设置(kotlin设置,测试设置等),发布,发布,文档等,这意味着我们的项目build.gradle文件几乎只用于依赖.

这是init脚本(已清理):

/**
 * Gradle extension applied to all projects to allow automatic configuration of Corporate plugins.
 */
class CorporatePlugins {

    public static final String NEXUS_URL = "https://example.com/repository/maven-public"
    public static final String CORPORATE_PLUGINS = "com.example:corporate-gradle-plugins"

    def buildscript

    CorporatePlugins(buildscript) {
        this.buildscript = buildscript
    }

    void version(String corporatePluginsVersion) {
        buildscript.repositories {
            maven {
                url NEXUS_URL
            }
        }
        buildscript.dependencies {
            classpath …
Run Code Online (Sandbox Code Playgroud)

gradle kotlin gradle-kotlin-dsl

30
推荐指数
2
解决办法
2864
查看次数

Gradle includeBuild 与实现项目

Gradle 构建系统之间includeBuild(...)的主要区别是什么?implementation(project(...))阅读文档后我无法真正看到用例差异:

  1. https://docs.gradle.org/current/userguide/declaring_dependency.html#sub:project_dependency
  2. https://docs.gradle.org/current/userguide/composite_builds.html#separate_composite

我想做的事情:为两个独立的项目共享相同的代码库:数据类(kotlix.serialization)、外部数据库 dao、接口。它不是一个完整的库,而只是一些代码片段。

如何连接 Intellij 中的两个项目以便类型提示起作用?

gradle gradle-kotlin-dsl

30
推荐指数
1
解决办法
2万
查看次数

如何使用gradle kotlin脚本创建胖罐

正如标题所述,我想知道如何修改它gradle.build.kts以便创建一个独特jar的所有依赖项(包括kotlin lib)的任务.

我在Groovy中找到了这个示例:

//create a single Jar with all dependencies
task fatJar(type: Jar) {
    manifest {
        attributes 'Implementation-Title': 'Gradle Jar File Example',
            'Implementation-Version': version,
            'Main-Class': 'com.mkyong.DateUtils'
    }
    baseName = project.name + '-all'
    from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } }
    with jar
}
Run Code Online (Sandbox Code Playgroud)

但我不知道如何在kotlin中写出来,除了:

task("fatJar") {

}
Run Code Online (Sandbox Code Playgroud)

kotlin build.gradle build.gradle.kts gradle-kotlin-dsl

29
推荐指数
4
解决办法
1万
查看次数