我正在创建gradle插件,该插件依赖于其他本地模块。它的一些gradle构建看起来像这样:
dependencies {
compile gradleApi()
compile project(":myDependencyProject")
}
publishing {
publications {
maven(MavenPublication) {
groupId = 'org.my.gradle.plugin'
artifactId = 'some-name'
version = '1.0-SNAPSHOT'
from components.java
}
}
}
gradlePlugin {
plugins {
jsonPlugin {
id = 'org.my.gradle.plugin'
implementationClass = 'my.implementation.class'
}
}
}
当我使用 gradle publishToMavenLocal 发布插件时,我尝试在另一个项目中使用该插件,但失败,并出现以下错误:
FAILURE: Build failed with an exception.
* What went wrong:
A problem occurred configuring project ':my-project'.
> Could not resolve all artifacts for configuration ':my-project:classpath'.
> Could not find org.my.gradle.plugin:myDependencyProject:1.0-SNAPSHOT.
Searched in the following locations: ...
简单来说,它找不到myDependencyProject项目的依赖项。这就是为什么下一步我尝试创建一个胖jar并将其发布但又遇到了相同的错误(gradle插件的代码是相同的,除了我将from components java
更改为artifact shadowJar
)。 / p>
有人可以帮助我如何发布具有本地依赖项的gradle插件并在另一个项目中使用它?
非常感谢您的帮助。
答案 0 :(得分:2)
我们最终使用Gradle shadow plugin将模块包含在published artifact中。
对我们而言重要的一件事是仅在其中包含本地库,以防止最终用户拥有某些库(例如Kotlin)的2个副本。所以我们filtered the dependencies
shadowJar {
dependencies {
include(dependency(':your-module-name:'))
}
}