Не устанавливайте подпроект gradle как внешнюю зависимость - PullRequest
0 голосов
/ 03 октября 2019

У меня есть следующая многопроектная структура gradle.

root-project
   -A
     build.gradle
   -B
     build.gradle
 build.gradle
 settings.gradle

A имеет простой Java-код и несколько внешних зависимостей. B включает A как compile(':A'). B также имеет подключаемый модуль maven, который применяется как apply plugin: 'maven'.

Теперь моя проблема заключается в том, что когда я делаю ./gradlew install, B включает A в качестве внешней зависимости maven. Тот, кто использует B, не может скомпилировать, потому что не находит A. Как можно пропустить применение плагина maven к A и включить весь его код в B?

Ответы [ 2 ]

0 голосов
/ 03 октября 2019

У нас есть много альтернатив, если проект B производит jar, но в моем случае это должна быть зависимость maven, используемая третьими сторонами. Я не мог найти прямое решение для этого. Поэтому я добавил добавление A источников в B. Что-то вроде этого в build.gradle B:

 sourceSets {
    main {
        java {
            srcDir 'src/main/java'
            srcDir '../A/src/main/java'
        }
    }
}

Единственный недостаток в этом заключается в том, что я должен включать зависимости A. в B. Я был бы рад принять, если у кого-то есть более элегантный подход.

0 голосов
/ 03 октября 2019

Либо:

  1. Публикация артефакта во внешнем или внутреннем хранилище
  2. Зависит от библиотеки проекта напрямую, как показано ниже.

-

// Project B
dependencies {
    implementation(project(":a"))
}

Ссылка:

...