Миграция из Maven 2/3 в Gradle - PullRequest
39 голосов
/ 11 октября 2011

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

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

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

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

Ответы [ 5 ]

34 голосов
/ 11 октября 2011

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

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

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

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

11 голосов
/ 11 октября 2011

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

8 голосов
/ 27 июня 2015

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

gradle init --type pom

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

1 голос
/ 20 февраля 2015

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

1 голос
/ 16 июля 2013

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

buildDir = 'target'
...