猿问

如何发布和使用依赖本地项目的 gradle 插件?

我正在创建依赖于我的其他本地模块的 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)。


有人可以帮助我如何发布带有本地依赖项的 gradle 插件并在另一个项目中使用它吗?


非常感谢您的帮助。


交互式爱情
浏览 117回答 1
1回答

慕容森

我们最终使用Gradle shadow 插件将我们的模块包含在已发布的工件中。不过,对我们来说很重要的一件事是只在其中包含本地库,以防止我们的最终消费者拥有某些库(例如 Kotlin)的 2 个副本。所以我们过滤了依赖shadowJar {    dependencies {       include(dependency(':your-module-name:'))    }}
随时随地看视频慕课网APP

相关分类

Java
我要回答