我正在编写一个自定义 Gradle 插件来为所有项目添加公共资源。例如,所有微服务都使用 SpringBoot Web、sleuth 和其他常见依赖项。
因此决定创建一个独立项目并将插件导出为 jar,然后将插件应用于其他项目。
以下是 build.gradle 的一段代码。test-common 中是另一个插件,其中包含有关存储库和发布的信息。
plugins {
id 'java-gradle-plugin'
id 'test-common'
}
gradlePlugin {
plugins {
simplePlugin {
id = 'test.resource-plugin'
implementationClass = 'com.test.CommonResource'
}
}
}
public class CommonResourcesPlugin implements Plugin<Project> {
@Override
public void apply(Project project) {
var dependencySet= project.getConfigurations().getByName("compile").getDependencies();
log.info("Applying depdencies");
project.getDependencies().add("implementation", "org.springframework.boot:spring-boot-starter-web");
project.getDependencies().add("implementation", "org.springframework.boot:spring-boot-starter-actuator");
}
}
Run Code Online (Sandbox Code Playgroud)
现在,当我构建并发布这个 gradle 项目时,它会在 Maven 存储库中创建一个 jar,其中包含 META-INF/gradle.plugins/test.resource-plugin.properties 并且源文件夹包含 java 文件。
现在是第二部分,将该插件应用到其他项目。
plugins {
id "test.resource-plugin" version '1.0-SNAPSHOT'
}
dependencies {
implementation "com.test:test-starter-plugin:1.0-SNAPSHOT"
}
Run Code Online (Sandbox Code Playgroud)
但是当我尝试构建这个项目时,它没有找到这个插件并说。
* Exception is:
org.gradle.api.plugins.UnknownPluginException: Plugin [id: 'test.resource-plugin', version: '1.0-SNAPSHOT'] was not found in any of the following sources:
- Gradle Core Plugins (plugin is not in 'org.gradle' namespace)
- Plugin Repositories (could not resolve plugin artifact 'test-starter-plugin:test-starter-plugin.gradle.plugin:1.0-SNAPSHOT')
Run Code Online (Sandbox Code Playgroud)
有人可以帮忙吗?我在这里缺少什么步骤。
我找到了这个问题的根本原因并且已经解决了。我只需要在想要使用它的项目的 settings.gradle 文件中添加以下属性。
pluginManagement {
repositories {
mavenLocal()
gradlePluginPortal()
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1832 次 |
| 最近记录: |