Возможна ли / проста ли рекурсивная публикация в Gradle? - PullRequest
4 голосов
/ 01 июля 2011

У нас есть система управления сборкой на основе Ant и Ivy, которая в основном состоит из общего файла ant и набора соглашений, касающихся структуры каталогов.

Одно препятствие, которое я пытаюсь преодолеть, является довольно распространеннымслучай "рекурсивной публикации".Скажем, у нас есть 5 внутренних модулей кода, у которых есть график зависимости, подобный следующему:

Module dependencies

  • Каждый модуль должен публиковать свои артефакты плюща в нашем внутреннем репо
  • Артефакты, еще не очищенные для развертывания для тестирования, должны иметь статус «интеграция»
  • Артефакты, развертываемые для тестирования, должны иметь статус «веха» (вручную назначаемый разработчиком)
  • Артефакты, проверяемые тестерами, должныиметь статус «релиз»

Допустим, разработчик проверил все 5 модулей локально и внес изменения во все из них.Теперь он хочет продвигать все свои изменения в статусе «веха».Другими словами, что должно произойти в репозитории ivy:

  • e-1.0-RC1 публикуется
  • d-1.1-RC2 публикуется, ссылаясь на e-1.0-RC1 какзависимость
  • c-2.0-RC1 публикуется, ссылаясь на d-1.1-RC2 как зависимость
  • b-3.3-RC1 публикуется, ссылаясь на e-1.0-RC1 как зависимость
  • Наконец, a-7.1-RC2 публикуется, ссылаясь на c-2.0-RC1 и b-3.3-RC1 как на зависимости.

Я не нашел простого способа сделать это с помощью ivy+ ant (Айви обещает нечто подобное, называемое рекурсивной доставкой, но я не могу найти никаких рабочих примеров).

Здесь звучит многообещающий звук Gradle, так как он, кажется, имеет хорошую поддержку для многопроектных сборок.Я пролистал документы, но не сразу нашел этот случай в качестве примера.Есть ли простой способ добиться этого с помощью gradle?

Ответы [ 2 ]

1 голос
/ 15 августа 2011

Единственный способ, с помощью которого я могу представить себе эту работу, - использовать основной файл сборки, который распространяет номера версий до отдельных файлов сборки для каждого из ваших модулей. Это имеет неприятный побочный эффект, связывая ваши пять модулей в единицу, которой нужно управлять как единым целым, но это может быть единственным способом достижения того, что вы ищете.

0 голосов
/ 01 июля 2011

Для меня это похоже на нормальную многопроектную сборку.Предполагая, что вы используете язык на основе JVM, Gradle имеет хорошую готовую поддержку с использованием соглашений (вы можете переопределить эти соглашения в соответствии с потребностями ваших проектов) - попробуйте и посмотрите.

Не стесняйтесь спрашивать более подробную информацию о многопроектной сборке с использованием Gradle.

...