Миграция от муравья к мавену с получением 100+ банок - PullRequest
1 голос
/ 11 декабря 2011

Мы пытаемся перенести наши сборки с ant на maven.Проект, для которого я работаю, использует ant с давних пор.Скрипты очень сложны, где артефакт сборки представляет собой zip-файл с определенной структурой каталогов.Build создает около 108 уникальных jar-файлов и упаковывает их в этот zip-файл вместе со многими файлами конфигурации и другими jar-файлами сторонних производителей.

Нам нужно, чтобы этот zip-файл был таким же, как сейчас, даже после перехода на Maven.На данный момент я просто учусь на Maven.У меня вопрос к вам, ребята, если есть способ, с помощью которого я могу использовать один файл pom.xml для создания более одного jar-файла, предоставляя список jar-файлов и include, исключая пакеты для каждого.

Я гуглил иобнаружил, что в случае, если нам нужно несколько jar-файлов из одного проекта, но разных пакетов, мы можем сделать это, поместив по одному pom.xml в каждый пакет (jar будет создан из этого пакета) и связав все, используя управление зависимостями.

Но это не решает мою проблему, так как наличие 100+ pom.xmls не кажется хорошей идеей.

Надеюсь, я прояснил свой вопрос.Пожалуйста, предложите, если есть выход.

Ответы [ 2 ]

1 голос
/ 11 декабря 2011

В добавление к ответу Удо есть еще одно сообщение в блоге Sonatype со схемой, объясняющей шаблон Maven для создания нескольких jar-файлов из одного проекта Maven.

Обе статьи рекомендуют принять модульную структуру в своем коде, а не бороться с подходом Maven по разделению больших проектов на набор взаимосвязанных подмодулей.

Метод добавочной публикации

Начните с рассмотрения арифметических элементов, которыми вы на самом деле планируете поделиться. Ваша почта предполагает, что единственный файл, который вы на самом деле публикуете, - это большой zip-файл, содержащий более 100 банок и другие файлы?

Вы можете вызвать инструмент командной строки Maven , чтобы опубликовать этот zip-файл в хранилище Maven:

mvn deploy:deploy-file \
    -Durl=$REPO_URL \
    -DrepositoryId=$REPO_ID \
    -DgroupId=org.myorg \
    -DartifactId=myproj \
    -Dversion=1.2.3  \
    -Dpackaging=zip \
    -Dfile=myproj.zip

Этот подход также может быть использован для публикации JAR и POM (содержащих зависимости). В конце концов вы будете поражены количеством поддерживаемых POM .... В это время было бы проще реструктурировать здание этой банки в субмодуль.

Альтернатива технологии переключения сборки

Очень трудно уйти от устаревшей сборки ANT. Они часто содержат сложную, нестандартную и сложную для воспроизведения логику сборки. Для таких проектов я рекомендую использовать Apache ivy для вывода сторонних зависимостей и обмена артефактами с другими проектами (которые могут использовать Maven).

С этой целью я написал сценарий ant2ivy для создания начальной настройки ivy на основе jar-файлов, которые уже существуют в каталоге проекта ANT (обычно передаются вместе с источником).

Использование ivy не избавит вас от того факта, что это хорошая идея для создания подмодулей проекта. Однако он позволяет модернизировать сборку ANT.

Обновление

Да, есть Задачи Maven ANT . Я не использую их, потому что они основаны на Maven 2. Я разочарован тем, что мы все еще ждем их замены Maven 3 aether-ant-tasks (Доступно только на GitHub). Ivy по-прежнему является лучшим выбором для интеграции клиентов не Maven с репозиторием Maven

0 голосов
/ 11 декабря 2011

Ну, вы можете создать несколько банок из одного проекта .

Это на самом деле не считается лучшей практикой. Посмотрите на прилагаемую статью и решите сами.

В комплект входят не ограниченные пакеты, однако это, безусловно, облегчает. :)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...