2015-02-11 3 views
2

У меня есть два проекта градиента в рабочем пространстве затмения. Назовем их «A» и «B». Где «A» зависит от «B». Проект «А» заявил зависимость от «B» в его файле build.gradle, что-то вроде этого:Как разрешить зависимости от одного проекта градиента к другому проекту градиента в моем рабочем пространстве Eclipse?

dependencies { 
    compile 'some-group:B:1.0.0' 
    ... 
} 

Как я буду делать изменения в обоих проектах, было бы неплохо, если Gradle может разрешить зависимость от «B» к двоичным файлам в проекте eclipse (вместо того, чтобы загружать B.jar из некоторого репозитория).

К счастью, в Eclipse/STS есть такая функция (в соответствии с вопросом this). Я включил эту функцию, проверив «Демонстрационные банки в Gradle Projects» (в настройках Eclipse: Window -> Gradle). И после выполнения Gradle -> Обновить все (в проекте «А»), у меня есть это в проекте «А» путь к классам:

  • C:\eclipse-workspace\B\bin (путь к которой двоичные файлы проекта «B» находится).
  • все транзитные зависимости проекта B.
  • все зависимости, заявленные в проекте «A» (и его транзитивные зависимости).

До сих пор так хорошо :)

Но через некоторое время, я понимаю, что я получаю немного больше, чем я ожидал, в пути к классам. я также получаю это в проекте "А" путь к классам:

  • двоичные файлы из "B/SRC/тест/Java"
  • зависимостей в '' testCompile проекта "B".

Нет смысла иметь «тестовый» код и зависимости testCimpile проекта «B» от проекта «A». В любом случае я могу избежать этого?

Я попытался установить разные папки для ввода для src/main/* и src/test/* в проекте «B», но затем обе папки добавлены в путь классов проекта «A».

Я уже использовал Maven с Eclipse и ссылаюсь на зависимости внутри одного рабочего пространства Eclipse, работает очень хорошо.

ответ

0

Многопроектная сборка - это ваш ответ.

Самый простой способ, чтобы иметь структуру каталогов, как это:

root 
    |-> project A 
    \-> project B 

в корень, вы будете иметь файл build.gradle и settings.gradle файл, в settings.gradle вы перечисляете проекта A и проект B. Любой общий конфиг может пойти в корневой build.gradle, а затем в зависимости проекта B вы можете иметь следующее:

dependencies { 
    compile project(':project A') 
} 

затем, если вы измените проект A и построить проект B, проект а будет перекомпилировать иначе gradle будет использовать ранее скомпилированную версию.

См https://gradle.org/docs/current/userguide/multi_project_builds.html

+0

спасибо за ответ, но это не вариант в моем случае. – etxalpo

+0

Является частью проблемы, связанной с переходными зависимостями? Вы пытались отключить их? configurations.all { transitive = false }, или вы можете установить transitive = false на одну зависимость. – Klunk

Смежные вопросы