繁体   English   中英

Gradle 多项目构建:未找到插件

[英]Gradle Multi-Project Build: Plugin was not found

我有一个非常基本的多项目/多模块 Gradle 构建用例。 我最终需要的结构并不比官方 Gradle 文档中提出的用于声明子项目之间的依赖关系更复杂。

在这里复制他们的文档,我们有这个项目结构:

.
├── buildSrc
│   ...
├── api
│   ├── src
│   │   └──...
│   └── build.gradle
├── services
│   └── person-service
│       ├── src
│       │   └──...
│       └── build.gradle
├── shared
│   ├── src
│   │   └──...
│   └── build.gradle
└── settings.gradle

这些构建文件:

// settings.gradle
rootProject.name = 'dependencies-java'
include 'api', 'shared', 'services:person-service'

// buildSrc/src/main/groovy/myproject.java-conventions.gradle
plugins {
    id 'java'
}

group = 'com.example'
version = '1.0'

repositories {
    mavenCentral()
}

dependencies {
    testImplementation "junit:junit:4.13"
}

// api/build.gradle
plugins {
    id 'myproject.java-conventions'
}

dependencies {
    implementation project(':shared')
}
shared/build.gradle
plugins {
    id 'myproject.java-conventions'
}

// services/person-service/build.gradle
plugins {
    id 'myproject.java-conventions'
}

dependencies {
    implementation project(':shared')
    implementation project(':api')
}

但是,当我实际尝试此操作并从项目根目录运行gradle build ,出现以下错误:

Plugin [id: 'myproject.java-conventions'] was not found in any of the following sources:

- Gradle Core Plugins (plugin is not in 'org.gradle' namespace)
- Plugin Repositories (plugin dependency must include a version number for this source)

只是为了踢球,我尝试添加一个版本,但可以预见的是,Gradle 也同样脾气暴躁,并说它无法解决这个工件。 我究竟做错了什么?

我的 Gradle 版本信息:

------------------------------------------------------------
Gradle 6.5.1
------------------------------------------------------------

Build time:   2020-06-30 06:32:47 UTC
Revision:     66bc713f7169626a7f0134bf452abde51550ea0a

Kotlin:       1.3.72
Groovy:       2.5.11
Ant:          Apache Ant(TM) version 1.10.7 compiled on September 1 2019
JVM:          11.0.8 (Oracle Corporation 11.0.8+10)
OS:           Windows 10 10.0 amd64

在我看来,您发现文档有问题。

名为buildSrc/src/main/groovy/myproject.java-conventions.gradle声明了所谓的预编译脚本插件 为此,您必须在buildSrc项目中应用名为groovy-gradle-plugin (用于 Groovy 插件)的插件:

# buildSrc/build.gradle
plugins {
    id 'groovy-gradle-plugin'
}

在此之后,它应该能够找到您的自定义myproject.java-conventions插件。 如果是这样,您可以在Gradle 问题跟踪器上创建一个问题,以建议他们将上述代码段添加到项目依赖项文档中的示例中。

我和你一样开始,遇到了同样的问题。 虽然 Bjorn 的答案可能适用于 Java,但对我来说它没有解决问题(对于 kotlin 实现),因为它还需要repositories块中的gradlePluginPortal()

因此,要添加到已接受的答案中,最适合我开始的方法就是为类型application运行./gradlew init任务。 另请参阅使用库 Sample 构建 Java 应用程序的 gradle 文档。 在这里,无论实现语言如何,您都应该始终获得一个正在运行的多项目。

在我自己的 kotlin 应用程序(带有用于 gradle 的 groovy dsl)中,这呈现了以下buildSrc/build.gradle

/*
 * This file was generated by the Gradle 'init' task.
 */

plugins {
    // Support convention plugins written in Groovy. Convention plugins are build scripts in 'src/main' that automatically become available as plugins in the main build.
    id 'groovy-gradle-plugin'
}

repositories {
    // Use the plugin portal to apply community plugins in convention plugins.
    gradlePluginPortal()
}

dependencies {
    implementation 'org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.72'
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM