Подтвердить что ты не робот

Миграция с Maven 2/3 до Gradle

Я изучал Gradle и выглядит довольно интересно. Я думаю, что могу писать сценарии на любом другом языке, кроме XML, довольно круто, и мне непонятно, доступны ли всевозможные опции polyglot Maven POM.

Я работаю над проектом, который использует Maven 2.2.1 как инструмент сборки. Этот проект:

  • является многомодульным
  • использует (а также наши собственные) плагины
  • полагается на репозиторий прокси-сервера Artifactory

Есть ли какие-либо события там при переходе от Maven к Gradle? Gotchas, болевые точки, угловые случаи? Любой опыт очень приветствуется.

4b9b3361

Ответ 1

Переход с Maven на Gradle не так прост, как от Ant до Maven (по крайней мере, на данный момент). Вы можете легко повторно использовать Ant скрипты и сделать их первоклассными гражданами в своей сборке Gradle. Там есть задача в Gradle дорожной карте для глубокого импорта Maven builds.

До сих пор я переносил две корпоративные сборки Maven на Gradle. Оба они были мультимодульными проектами с использованием стандартных плагинов Maven. Я в основном переписал сборки Gradle, которые требуют хотя бы некоторых знаний о Gradle. Основываясь на моем опыте, вы можете легко получить ту же сборку, что и в Gradle. Gradle действительно не боксирует вас здесь и довольно гибкий. По пути вам может понадобиться написать настраиваемый плагин, который еще не существует, в зависимости от того, какие плагины Maven вы используете. Тем не менее, там уже есть широкий глоток плагинов. Пока я пока не сталкивался с реальным препятствием. Несмотря на то, что документация Gradle довольно хороша, вы можете прочитать много сообщений на форуме Gradle, чтобы найти решение одной из ваших проблем. Некоторые из стандартных функций Maven не поддерживаются вне коробки, например. a provided или WAR inplace. Тем не менее, вокруг есть легкие пути. Я не использовал репозитории Artifactory. Я имел дело с репозиториями Nexus. Насколько я знаю, парни Gradle имеют хорошую поддержку Artifactory. Изменить: JFrog предоставляет плагин Artifactory Gradle.

Хороший способ начать - использовать инструмент миграции Maven2Gradle, который позволит вам сгенерировать Gradle script из вашей сборки Maven. Лично я еще не использовал его. Я разработал конструкцию Gradle бок о бок с сборкой Maven, которая не вызывала никаких проблем. Maven поставил вывода под target, Gradle под build. Убедитесь, что вы подготовили команду для изменения. Пусть они пробуют конструкцию Gradle и знакомятся с этим инструментом.

После полной миграции вы будете очень довольны ремонтопригодностью и расширяемостью вашей сборки. Очень легко добавить логику пользовательской сборки, и вы будете благодарны за то, что вы покинули XML-землю. С точки зрения производительности вы также не будете делать шаг назад. Функция инкрементной сборки делает свою работу очень хорошо.

Ответ 2

Вы также можете прочитать эту запись моего опыта портирования проекта maven на gradle.

Ответ 3

В каталоге, в котором у вас есть pom.xml, выполните следующую команду:

gradle init --type pom

Это должно преобразовать ваш maven pom.xml в build.gradle

Ответ 4

Вы всегда можете изменить buildDir как 'target' в gradle, если вы хотите, чтобы выход сборки находился в 'target' вместо 'build', например, maven:

buildDir = 'target'

Ответ 5

maven2Gradle, похоже, был заменен тем, что он смог запустить gradle init из командной строки (хотя это скорее экспериментальная функция). Кажется, что он работает нормально для выполнения базовой Gradle настройки из проекта Maven.