首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在buildSrc内部的另一个预编译插件中使用一个Gradle预编译脚本插件?

如何在buildSrc内部的另一个预编译插件中使用一个Gradle预编译脚本插件?
EN

Stack Overflow用户
提问于 2022-07-25 23:47:32
回答 1查看 244关注 0票数 0

在我的buildSrc目录中有以下设置:

代码语言:javascript
复制
└── buildSrc
    ├── build.gradle.kts
    ├── settings.gradle.kts
    └── src
       └── main
          └── kotlin
             ├── base-kotlin-project-convention.gradle.kts
             └── spring-boot-dependencies-convention.gradle.kts

我想在spring-boot-dependencies-convention.gradle.kts中声明依赖关系管理

代码语言:javascript
复制
plugins {
    id("io.spring.dependency-management")
}

dependencyManagement {
    imports {
        mavenBom(org.springframework.boot.gradle.plugin.SpringBootPlugin.BOM_COORDINATES)
    }
}

然后在base-kotlin-project-convention.gradle.kts中像这样使用它:

代码语言:javascript
复制
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile

plugins {
    kotlin("jvm")
    `spring-boot-dependencies-convention`
}


dependencies {
    testImplementation("org.junit.jupiter:junit-jupiter")
    testImplementation("io.kotest:kotest-assertions-core-jvm:5.3.2")
    testImplementation("org.mockito.kotlin:mockito-kotlin:4.0.0")
}

tasks.withType<KotlinCompile> {
    kotlinOptions {
        freeCompilerArgs = listOf("-Xjsr305=strict")
        jvmTarget = "17"
    }
}

java.sourceCompatibility = JavaVersion.VERSION_17

tasks.withType<Test> {
    useJUnitPlatform()
}

不幸的是,我收到了以下错误:

代码语言:javascript
复制
> Task :buildSrc:compilePluginsBlocks FAILED
e: /Users/user/Documents/my-project/buildSrc/build/kotlin-dsl/plugins-blocks/extracted/base-kotlin-project-convention.gradle.kts:5:5: Unresolved reference: `spring-boot-dependencies-convention`

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':buildSrc:compilePluginsBlocks'.
> Script compilation error:

    Line 5:     `spring-boot-dependencies-convention`
                ^ Unresolved reference: `spring-boot-dependencies-convention`

  1 error

在另一个预编译脚本插件中可以重用不同的所谓预编译脚本插件吗?

很好,因为当我配置模块时,我想使用一个插件:

代码语言:javascript
复制
plugins {
    `base-kotlin-project-convention`
}

而不是两个或更多:

代码语言:javascript
复制
plugins {
    `spring-boot-dependencies-convention`
    `base-kotlin-project-convention`
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-08-07 12:51:31

Gradle博士中找到了解决方案。应该使用id(...)语法来引用另一个预编译的构建插件。base-kotlin-project-convention.gradle.kts中的以下更改使其按预期工作:

代码语言:javascript
复制
plugins {
    kotlin("jvm")
    // `spring-boot-dependencies-convention`
    id("spring-boot-dependencies-convention")
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73116391

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档