Как опубликовать и использовать плагин Gradle с зависимостями от локального проекта? - PullRequest
0 голосов
/ 22 февраля 2019

Я создаю подключаемый модуль 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.Вот почему в качестве следующего шага я попытался создать толстую банку и опубликовать ее, но я получил ту же ошибку (код для плагина gradle был тем же, за исключением того, что я изменил from components java на artifact shadowJar).

Может ли кто-нибудь помочь мне, как я могу опубликовать плагин gradle с его локальными зависимостями и использовать его в другом проекте?

Большое спасибо за любую помощь.

1 Ответ

0 голосов
/ 11 марта 2019

В итоге мы использовали плагин Gradle shadow , чтобы включить наш модуль в опубликованный артефакт .

Одна вещь, которая была важна для нас, это тольковключите в него локальную библиотеку, чтобы у нашего конечного потребителя не было 2 копии какой-либо библиотеки (например, Kotlin).Таким образом, мы отфильтровали зависимости

shadowJar {
   dependencies {
      include(dependency(':your-module-name:'))
   }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...