Миграция из ant в maven в Netbeans
Наше программное обеспечение написано на Java и состоит из многих (7) проектов.
Эти проекты представляют собой проекты Netbeans ant.
Я собираюсь преобразовать их в maven2.
Где я могу найти некоторые подсказки для этого?
Ответы
Ответ 1
Я обнаружил, что миграция не нужна. Реальные требования, которые мне нужны, это автоматическая загрузка зависимостей (библиотек).
Это также достигается Ivy, который, тем не менее, использует репозитории maven.
Я решил преобразовать проект из ant в ant + ivy с IvyBeans.
Ответ 2
Не читайте эту книгу. Это только смутит вас. Вместо этого прочитайте эту книгу: "Maven - окончательный путеводитель" http://www.sonatype.com/books/maven-book/reference/.
Кроме того, на сайте maven есть много информации, но структура ужасна, поэтому вам нужно будет использовать google для навигации по ней.
Вот мое предложение:
-
Сделайте это вручную, а не с помощью "автоматической" помощи из среды IDE. Интеграция Maven не работает так хорошо, но не в какой-либо среде IDE.
-
Убедитесь, что проект программы разделен на модули под общим зонтичным модулем, так что каждый модуль создает один бинарный артефакт (jar, war,...), возможно, сопровождаемый javadoc исходного кода за этим артефакт, zip с исходным кодом и т.д. Основной принцип заключается в том, что каждый модуль создает один артефакт, содержащий весь не-тестовый код в этом модуле. Вы можете сделать это, пока проект по-прежнему построен ant.
-
Каждый модуль должен соответствовать стандартным макетам каталога maven. Назначение сборки находится под [module]/target/[output-type, например. "классы" ]. Исходный код находится под [module]/src/main/[src-type, например. "java" ] и [module]/test/[src-type]. Артефакт состоит из всего кода под src/main и ни одного из кода под src/test, поскольку он создан для целевых каталогов. Вы можете сделать это, пока он все еще создан ant.
-
Начните с преобразования подмодуля, который не имеет зависимости от других модулей в проекте.
-
Теперь вы можете создать родительский maven-модуль pom.xml с артефактом типа "pom", состоящий из одного из модулей ниже. Создайте дочерний модуль для первого подмодуля (тот, который имеет только внешние зависимости), используя зонтичный модуль как "родительский". Помните, что вам нужно указать версию для родителя. Не забудьте добавить дочерний модуль как "модуль" в родительский. Всегда используйте ${project.version} как версию в дочерних модулях при создании многомодульных проектов, подобных этому. Все модули под родительским элементом должны быть выпущены одновременно за одну операцию, и если вы используете этот параметр, maven будет следить за тем, чтобы поля версии остались неизменными во всех модулях и обновлялись повсюду во время выпуска. Это может затруднить повторное использование существующей схемы нумерации, но это не имеет значения. В любом случае вы никогда не будете исчерпывать номера версий.
-
Добавьте необходимые зависимости и убедитесь, что вы можете собрать родительский и дочерний модули вместе с помощью команды "mvn clean install" из родительского модуля.
-
Аналогичным образом выполняйте остальные модули. Зависимости от других модулей в рамках одного и того же родительского проекта также должны использовать ${project.version} как "версию", в которой они зависят, что означает "та же версия, что и эта". ПРИМЕЧАНИЕ. Чтобы построить, модуль, в котором вы находитесь, должен быть построен с использованием "mvn install", чтобы он был развернут в локальном (компьютерном) хранилище. В противном случае зависящий модуль не сможет найти классы. В модуле maven отсутствуют зависимости исходных кодов, только зависимости от встроенных и упакованных версий, установленных в локальных и удаленных репозиториях. Это может быть очень запутанным, если вы пришли из ant -проектов. Создайте модуль корня до тех пор, пока вам не станет удобно. Это занимает два дня.
-
Не используйте интеграцию maven в среде IDE. Это плохая идея. Используйте "mvn idea: idea" или "mvn eclipse: eclipse", чтобы настроить рабочее пространство как обычный проект IDE без использования maven. Механизмы межмодульных зависимостей в maven и IDE не идентичны и никогда не будут. Кроме того, если у вас есть несколько mavenized проектов с зависимостями между ними, вы хотите иметь несколько из них в своей рабочей области с зависимостями, установленными между ними. Вы можете сделать это с помощью идеи mvn: idea/eclipse: eclipse, если вы создадите отдельный файл проекта maven под названием "workspace.xml" (или что-то еще) в том же каталоге, что и родительский модуль, настроенный как многомодульный проект, содержащий модули "". и "../otherproject" (только односторонняя ссылка здесь, родительская ссылка не возвращается). Если вы запустите "mvn idea: idea/eclipse: eclipse -f workspace.xml", вы получите рабочее пространство со всеми этими модулями, связанными друг с другом. Нет интеграции IDE позволяет это сделать. Это звучит как много дополнительной работы, но файл workspace.xml действительно маленький. Он не должен содержать все эти материалы зависимостей и все такое, только ссылку на модули, которые вы хотите связать вместе в своей среде IDE.
Ответ 3
Это будет непростая задача, поскольку Maven2 ожидает, что файлы будут организованы определенным образом. В любом случае Лучше строить с Maven - бесплатная книга, которая должна вас начать. Это поможет вам понять Maven, и в нем также есть глава о миграции.
Ответ 4
Я построил script для переноса Ant сборок в Maven. Вы можете найти более подробную информацию здесь:
https://github.com/ewhauser/ant2maven
Это не поможет вам с исправлением структуры каталогов и/или с любыми дополнительными задачами Ant, но он удаляет много утомительных шагов для начала работы.
Ответ 5
Я выполнил успешную миграцию проекта NetBeans Ant в проект Maven с помощью инструкций Джозефа Мокера здесь: http://forums.netbeans.org/ptopic55953.html
Я цитирую важную часть:
- закрыть проект
- переименуйте build.xml, nbproject файлы/папки, чтобы NB не узнала их.
- закрыть и перезапустить NB (так что все сведения о кэше памяти отсутствуют)
- скопируйте в пустой pom из другого проекта.
- откройте проект в NB (NB теперь должен идентифицировать его как проект maven)
- переупорядочить файлы, чтобы следовать по пути maven (™)