构建.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
我刚刚将我的 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) 我将我的项目升级到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
当我想在我的项目中使用@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
我对正在孵化的 Gradle 版本目录感到非常兴奋,并且一直在尝试它。I\xe2\x80\x99ve 发现我的信息可以在我的应用程序和 utility-lib 项目的脚本gradle/libs.versions.toml
中访问。build.gradle.kts
但是,我无法使用该toml
文件的内容buildSrc/build.gradle.kts
或约定文件。
我可以构建的唯一方法是将依赖项硬编码到这些文件中,就像我在版本目录功能之前所做的那样。
\n在该buildSrc
文件夹中,我创建了一个settings.gradle.kts
文件并插入了 的dependencyResolutionManagement
代码versionCatalogs
,该代码指向与我的应用程序和 utility-lib 项目相同的文件。
根据 Gradle7文档,似乎可以与 和 模块共享版本目录\xe2\x80\xa6 I\xe2\x80\x99d如果可能的buildSrc
话,希望能够推动它与 一起工作。buildSrc
这是一个简单的示例项目,我通过以下方式创建gradle init
:my-version-catalog
感谢您的时间和帮助,
\n麦克风
\n请告诉我从下面的代码片段相当于build.gradle
一个build.gradle.kts
版本?
repositories {
mavenCentral()
maven {
url '<MAVEN REPO URL>'
}
}
Run Code Online (Sandbox Code Playgroud) 更新 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
我目前正在努力改进项目共享配置的方式.我们为所有库和微服务(即许多git repos)提供了许多不同的多模块gradle项目.
我的主要目标是:
我目前的解决方案是使用init脚本的自定义gradle分发:
mavenLocal()
和我们的Nexus存储库到项目repos(非常类似于Gradle init脚本文档示例,除了它添加repos以及验证它们)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 构建系统之间includeBuild(...)
的主要区别是什么?implementation(project(...))
阅读文档后我无法真正看到用例差异:
我想做的事情:为两个独立的项目共享相同的代码库:数据类(kotlix.serialization)、外部数据库 dao、接口。它不是一个完整的库,而只是一些代码片段。
如何连接 Intellij 中的两个项目以便类型提示起作用?
正如标题所述,我想知道如何修改它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) gradle ×6
kotlin ×6
android ×3
build.gradle ×3
dagger-hilt ×1
dependencies ×1
flutter ×1
java ×1