如何在另一个项目中使用从共享逻辑jar生成的gradle插件?

问题描述 投票:0回答:1

我有一个带有构建逻辑文件夹的 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.
```
java gradle groovy gradle-plugin
1个回答
0
投票

要以这种形式应用插件,您将无法使用

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以这种方式打包它。

© www.soinside.com 2019 - 2024. All rights reserved.