根据Gradle Kotlin插件页面。
Kotlin源可以与同一文件夹或不同文件夹中的Java源混合使用。默认约定是使用其他文件夹。如果不使用默认约定,则应更新相应的sourceSets属性。
我想在src / main / kotlin中添加一些Java文件,并让compileJava任务对其进行编译。我试图提出以下程序块来实现它,但是没有骰子。
java {
val kotlinSrcDir: File = File(projectDir, "src/main/kotlin")
sourceSets["main"].java.srcDirs.add(kotlinSrcDir)
val javasrcdirs: Set<File> = sourceSets["main"].java.srcDirs
println(javasrcdirs)
}
Run Code Online (Sandbox Code Playgroud)
是什么赋予了?
我已经按照此处的说明配置了 S3 支持的 Maven 存储库,例如:
repositories {
maven {
url "s3://myCompanyBucket/maven2"
authentication {
awsIm(AwsImAuthentication) // load from EC2 role or env var
}
}
}
Run Code Online (Sandbox Code Playgroud)
我正在尝试将我的脚本转换为使用 Kotlin DSL 而不是 groovy,但无法找出等效的代码,特别是该authentication
部分的代码。
上面的 Groovy 代码片段的等效 Kotlin DSL 是什么?
我正在将我的转换build.gradle
为 Kotlin DSL。我在应用程序中有 2 个构建风格,但我不知道如何设置这些风格的维度:
flavorDimensions("type")
productFlavors {
create("free") {
buildConfigField("boolean", "IS_DONATE", false.toString())
dimension = "type"
}
create("donate") {
buildConfigField("boolean", "IS_DONATE", true.toString())
dimension = "type"
}
}
Run Code Online (Sandbox Code Playgroud)
的dimension = "type"
部分是失败; 你如何设置每种口味的维度?
要禁用BuildConfig
Groovy DSL 生成,可以执行以下操作:
afterEvaluate {
generateReleaseBuildConfig.enabled = false
generateDebugBuildConfig.enabled = false
}
Run Code Online (Sandbox Code Playgroud)
我试图在使用 Gradle 的 Kotlin DSL (build.gradle.kts) 时找到等效项。有人有这样的运气吗?
android android-gradle-plugin android-buildconfig gradle-kotlin-dsl
我想使用 Apollo Android 来查询 GitHub GraphQL api,使用 Kotlin 和 Gradle Kotlin DSL,但不在Android 上。
错误信息
我确实遇到了一个特定的问题,但这可能是因为我在其他地方的设置有问题。
总而言之,我有一个ViewLogin.graphql
文件,从中ViewLoginQuery
生成了 a,但是当我尝试使用ViewLoginQuery.builder()
then时unresolved reference: builder
出现了问题。
正如https://github.com/apollographql/apollo-android/issues/1573中提到的,应该可以在没有 Android 的情况下使用 Apollo Android。
我正在使用 Arch Linux 和 IntelliJ,并安装了 JS GraphQL IntelliJ 插件。
在编写构建文件时,我已经遇到了一个问题:我无法避免使用已弃用的 buildscript
块。
https://plugins.gradle.org/plugin/com.apollographql.apollo中显示的插件显然是https://github.com/apollographql/apollo-android/issues/1573#issuecomment-575613238中提到的孵化插件尚未准备好。
以下构建文件似乎正确应用了该插件:
buildscript {
repositories {
maven {
url = uri("https://plugins.gradle.org/m2/")
}
jcenter()
}
dependencies {
classpath("com.apollographql.apollo:apollo-gradle-plugin:1.2.2")
}
}
apply(plugin = "com.apollographql.android") …
Run Code Online (Sandbox Code Playgroud) 我正在尝试通过“构建 Java Web 应用程序”Gradle 指南 (kotlin dsl),但 gradle 在构建时抛出异常。我真的很感激任何帮助使本指南工作。我正在使用 gradle 6.2.2。我已经克隆了 gradle / guides 并尝试在那里构建具有相同结果的示例。
settings.gradle.kts
rootProject.name = "webdemo"
Run Code Online (Sandbox Code Playgroud)
build.gradle.kts
plugins {
war
id("org.gretty") version "2.2.0"
}
repositories {
jcenter()
}
gretty {
integrationTestTask = "test"
}
dependencies {
providedCompile("javax.servlet:javax.servlet-api:3.1.0")
testCompile("junit:junit:4.12")
testCompile("org.mockito:mockito-core:2.7.19")
testCompile("io.github.bonigarcia:webdrivermanager:1.6.1")
testCompile("org.seleniumhq.selenium:selenium-java:3.3.1")
}
Run Code Online (Sandbox Code Playgroud)
例外
% ./gradlew build (git)-[master]
Exception in thread "Thread-447" java.lang.IllegalStateException: The configuration :grettyNoSpringBoot was resolved from a thread not managed by Gradle.
at org.gradle.api.internal.artifacts.configurations.DefaultConfiguration.resolveToStateOrLater(DefaultConfiguration.java:565)
at org.gradle.api.internal.artifacts.configurations.DefaultConfiguration.access$1900(DefaultConfiguration.java:141)
at org.gradle.api.internal.artifacts.configurations.DefaultConfiguration$ConfigurationFileCollection.getSelectedArtifacts(DefaultConfiguration.java:1246)
at org.gradle.api.internal.artifacts.configurations.DefaultConfiguration$ConfigurationFileCollection.visitContents(DefaultConfiguration.java:1237)
at org.gradle.api.internal.artifacts.configurations.DefaultConfiguration$ConfigurationFileCollection.getFiles(DefaultConfiguration.java:1226)
at org.gradle.api.internal.artifacts.configurations.DefaultConfiguration.getFiles(DefaultConfiguration.java:484)
at …
Run Code Online (Sandbox Code Playgroud) 我正在迁移到 Kotlin DSL。我已经关注了大多数流行的博客来进行最初的设置。现在是时候重构build.gradle
文件了。我有私人签名信息逻辑,如下所示。
if (project.hasProperty('propertyfile') && project.hasProperty('key.store')) {
def keystorePropertiesFile = rootProject.file(project.getProperty('propertyfile'))
def keystoreProperties = new Properties()
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
signingConfigs {
release {
keyAlias keystoreProperties['key.alias']
keyPassword keystoreProperties['key.alias.password']
storeFile file(project.getProperty('key.store'))
storePassword keystoreProperties['key.store.password']
}
}
}
Run Code Online (Sandbox Code Playgroud)
我不确定如何将这部分转换为与 Kotlin DSL 等效的部分。浏览了有关该主题的相关帖子和博客,但找不到任何相关内容。有人可以帮我分享一些关于如何做到这一点的想法吗?
android build.gradle android-gradle-plugin gradle-kotlin-dsl
我该如何重新表述:
testCompile.extendsFrom compileOnly
Run Code Online (Sandbox Code Playgroud)
Gradle Groovy DSL 与其基于 Kotlin 的等效项?
configurations {
testCompile{
extendsFrom(compileOnly)
}
}
Run Code Online (Sandbox Code Playgroud)
我上面的方法失败了。
我正在尝试使用 gradle (用于构建脚本的 Kotlin DSL)为多模块 springBoot 应用程序设置一个新的存储库
作为同一部分,我试图声明所有子项目所需的通用配置和依赖项。这样做时,我尝试为父文件块sourceCompatility
中的所有子项目定义subprojects
build.gradle.kts
当我尝试使用上述配置编译我的项目时,构建失败并出现以下异常
* What went wrong:
Extension with name 'java' does not exist. Currently registered extension names: [ext]
Run Code Online (Sandbox Code Playgroud)
但是,如果我将该行移至java.sourceCompatibility = org.gradle.api.JavaVersion.VERSION_11
子模块的build.gradle.kts
文件,那么它就会成功编译,并且应用程序将按预期启动。
我不明白我在这里缺少什么。请帮助我理解这一点。
家长build.gradle.kts
buildscript {
repositories {
mavenCentral()
}
}
plugins {
id("java")
id("idea")
id("war")
id("io.spring.dependency-management") version "1.0.9.RELEASE"
}
subprojects {
group = "com.company.example"
version = "0.0.1"
java.sourceCompatibility = org.gradle.api.JavaVersion.VERSION_11
repositories {
mavenCentral()
maven { url = uri("http://nexus.pentaho.org/content/groups/omni/") }
}
apply() {
plugin("java")
plugin("idea") …
Run Code Online (Sandbox Code Playgroud) 这看起来如何 kotlin DSL:
dependencies {
// Import the BoM for the Firebase platform
implementation platform('com.google.firebase:firebase-bom:26.2.0')
}
Run Code Online (Sandbox Code Playgroud)
以上是Firebase 文档中当前推荐的
我想构建一个用 Kotlin 编写的 Gradle 插件并将其发布到 Gradle 插件门户。但是,我不清楚需要什么构建配置来实现这一目标。关于 Gradle 使用的“嵌入式 Kotlin”,有很多令人困惑的信息和奇怪的错误。
\n插件开发指南没有 \xe2\x80\x99t 任何 Kotlin + 的示例build.gradle.kts
(只有一个简单的使用java-gradle-plugin
)
\xe2\x80\x99s一些关于嵌入式 Kotlin 的技术细节,但是 \xe2\x80\x99s 并没有明确明确的需求,并且比实际的 \xe2\x80\x9chow 到 \xe2\x80\ 更抽象的技术实现x9d 指南。
\n使用gradle init
(v8.0.2) 创建一个手动设置 Kotlin 版本的项目,因此它可能与嵌入的 Kotlin 版本不匹配
// generated by `gradle init` command\n\nplugins {\n // Apply the Java Gradle plugin development plugin to add support for developing Gradle plugins\n `java-gradle-plugin`\n\n // Apply the Kotlin JVM plugin to add support …
Run Code Online (Sandbox Code Playgroud) 我正在尝试了解 Android 中的模块化是如何工作的。我正在使用 Kotlin DSL。
在每个 build.gradle.kts 文件中,我是否必须添加默认配置,例如 minSdk、目标 SDK 等?换句话说,我是否只能在应用程序模块 build.gradle.kts 文件中设置配置,而在其他模块中(例如功能)是否可以只声明依赖项?
NowInAndroid 应用程序的 build.gradle.kts 文件具有以下代码:
plugins {
id("nowinandroid.android.feature")
id("nowinandroid.android.library.compose")
id("nowinandroid.android.library.jacoco")
}
android {
namespace = "com.google.samples.apps.nowinandroid.feature.bookmarks"
}
dependencies {
implementation(libs.androidx.compose.material3.windowSizeClass)
}
Run Code Online (Sandbox Code Playgroud)
它只声明依赖项和插件,但我认为这些插件中有不同的配置。
我看到的另一种方法是使用继承其他 build.gradle 文件
apply {
(path to build.gradle) file
}
Run Code Online (Sandbox Code Playgroud)
但使用该方法时,我无法声明名称空间,因此我必须将其添加到 build.gradle 文件中,该文件在不同功能之间共享,如果没有它,我将无法访问给定功能模块中的资源。
我已经在一个 android 项目中试验了 gradle-kotlin-dsl。我设法让它工作,但我被困在如何定义productFlavors
android {
compileSdkVersion(Config.Android.compileSdkVersion)
buildToolsVersion(Config.Android.buildToolsVersion)
defaultConfig {
minSdkVersion(Config.Android.minSdkVersion)
targetSdkVersion(Config.Android.targetSdkVersion)
versionCode = Config.Version.code
versionName = Config.Version.name
}
buildTypes {
getByName("release") {
isMinifyEnabled = false
}
}
flavorDimensions("dimension")
productFlavors {
//product flavors here
}
}
Run Code Online (Sandbox Code Playgroud)
经过一番调查,我得到了解决方案,只需使用以下create
方法:
productFlavors {
create("flavor1") {
//flavor configurations here
}
create("flavor2") {
//flavor configurations here
}
}
Run Code Online (Sandbox Code Playgroud) gradle ×7
android ×5
kotlin ×5
build.gradle ×2
java ×2
build ×1
firebase ×1
gretty ×1
kotlin-dsl ×1