我有一个带有构建逻辑文件夹的 Gradle 8 项目。 我能够为该模块创建一个 jar 并将其定义为单独项目中的依赖项,但我无法应用该插件。
现在我正在尝试将其导入到一个单独的项目中,以便我可以重用公共插件。我可以将其添加为依赖项并可以看到它正在加载,但我无法应用该插件。
我已将其推送到 mavel local 并尝试在另一个项目中使用它。
```
> Task :build-logic:publishPluginMavenPublicationToMavenLocal
Multiple publications with coordinates 'com.test.build-logic:spring-base-starter-build-logic:1.0.0' are published to repository 'mavenLocal'. The publications 'mavenJava' in project ':build-logic' and 'pluginMaven' in project ':build-logic' will overwrite each other!
```
该 jar 似乎在另一个项目中加载正常。
```
dependencies {
constraints {
// Define dependency versions as constraints
implementation lib.apacheTextCommons
implementation(lib.spring_boot_starter_web)
}
implementation lib.spring_boot_starter_web
testImplementation lib.spring_boot_starter_test
implementation lib.jackson_databind
implementation lib.openApiGradlePlugin
//works fine .ie. loads jar
implementation "com.test.build-logic:spring-base-starter-build-logic:1.0.0"
implementation lib.javaxValidator
implementation lib.javaxAnnotation
implementation lib.swaggerAnnotation
integrationTestImplementation lib.junitJupiterEngine
integrationTestImplementation lib.junitJupiterApi
}```
但我不知道如何
apply
它。
```
plugins {
// Apply the java Plugin to add support for Java.
id 'java'
id 'io.spring.dependency-management'
id "org.openapi.generator"
id "openapi-gen"
id "com.test.java-common-conventions"
id 'dependencies'
}
```
给出以下错误:
```
An exception occurred applying plugin request [id: 'com.meili.java-application-conventions']
> Failed to apply plugin 'com.meili.java-application-conventions'.
> Failed to apply plugin 'com.meili.java-common-conventions'.
> org.gradle.api.plugins.UnknownPluginException: Plugin with id 'com.test.java-common-conventions' not found.
```
要以这种形式应用插件,您将无法使用
plugins
块1来完成。
但是,使用旧的
apply
语法应该可以做到这一点。但是,首先,您必须将其添加到构建脚本类路径中:
buildscript {
repositories {
mavenLocal()
}
dependencies {
classpath "com.test.build-logic:spring-base-starter-build-logic:1.0.0"
}
}
然后就可以应用了:
apply plugin: 'com.test.java-common-conventions'
1如果要使用
plugins
块,需要将插件打包,以便Gradle可以通过id找到它。实际上,做到这一点的方法是编写一个类插件并使用Java Gradle Plugin以这种方式打包它。