Преобразование существующего проекта Eclipse в проект Maven - PullRequest
238 голосов
/ 15 марта 2010

Для работающего проекта мы рассматриваем возможность использования плагина Maven для Eclipse для автоматизации наших сборок. Прямо сейчас процедура намного сложнее, чем должна быть, и мы надеемся, что Maven упростит вещи до сборки в один клик.

У меня вопрос: есть ли мастер или автоматический импортер для преобразования существующего проекта Eclipse Java в проект Maven с использованием плагина Maven? Или я должен создать новый проект Maven и вручную скопировать все исходные файлы, библиотеки и т. Д.

Ответы [ 9 ]

291 голосов
/ 10 апреля 2011

Начиная с m2e 0.13.0 (если не раньше), вы можете преобразовать проект Java в проект Maven из контекстного меню. Вот как:

  • Щелкните правой кнопкой мыши проект Java, чтобы открыть контекстное меню
  • Выберите Конфигурировать> Преобразовать в Maven Project

Вот подробные шаги со снимками экрана.

137 голосов
/ 15 марта 2010

Если вы просто хотите создать POM по умолчанию и включить функции m2eclipse: поэтому я предполагаю, что у вас нет альтернативной автоматической настройки сборки, которую вы пытаетесь импортировать, и я предполагаю, что вы говорите оПлагин m2eclipse.

Плагин m2eclipse предоставляет возможность щелкнуть правой кнопкой мыши на проекте, чтобы добавить этот файл по умолчанию. pom.xml:

Более новые версии M2E

Щелкните правой кнопкой мыши Project -> подменю Configure -> Convert to Maven Project

Старые версии M2E

Щелкните правой кнопкой мыши Project -> подменю Maven -> Включить управление зависимостями.

Это сделает все необходимое для включения плагина для этого проекта.

Чтобы ответить ', есть ли автоматический импортер или волшебник? ': не то, о чем я знаю.Использование вышеуказанной опции позволит вам включить плагин m2eclipse для вашего существующего проекта, избегая ручного копирования.Вам все еще нужно будет настроить зависимости и другие вещи, которые вам понадобятся для сборки самостоятельно.

12 голосов
/ 12 апреля 2012

У меня была та же проблема, и я хотел создать Mavenise для всего рабочего пространства Eclipse, содержащего около 60 проектов Eclipse. Выполнение этого вручную требовало много времени, и альтернативные варианты были не столь жизнеспособны. Чтобы решить эту проблему, я наконец создал проект под названием eclipse-to-maven на github. Так как eclipse не имеет всей необходимой информации о зависимостях, он делает следующее:

  • На основе <classpathentry/> элементов XML в файле .classpath он создает зависимости от другого проекта, идентифицирует файл jar библиотеки и на основе его имени (например, jakarta-oro-2.0.8.jar) его версия. В настоящее время artifactId и groupId такие же, как я не мог найти что-то, что могло бы вернуть мне Maven groupId зависимости, основанный на artifactId. Хотя это не идеальное решение, оно обеспечивает хорошую основу для ускорения Mavenisation.

  • Перемещает все исходные папки в соответствии с соглашением Maven (например, src/main/java)

  • Поскольку в проектах Eclipse с именами с пробелами сложно работать в среде Linux / Unix, он также переименовывает их в имена без пробелов.

  • Результирующие файлы pom.xml содержат зависимости и базовую структуру pom. Вы должны добавить необходимые плагины Maven вручную.

7 голосов
/ 11 февраля 2014

Щелкните правой кнопкой мыши имя проекта> Конфигурировать> Преобразовать в проект Maven> нажмите кнопку «Завершить». Здесь вы добавите некоторые зависимости для загрузки и добавьте ожидаемый файл JAR.

Это создаст автоматически сгенерированный файл pom.xml. Откройте этот файл в формате XML в редакторе Eclipse. После тега сборки (</build>) добавьте свои зависимости, которые вы можете скопировать с веб-сайта maven, и добавьте их туда. Теперь вы готовы идти. Эти зависимости автоматически добавят необходимые файлы JAR.

5 голосов
/ 17 декабря 2012

Ответ Чэндун правильный, вы должны использовать Configure>Convert to Maven Project. Тем не менее, я должен добавить, что процесс преобразования был значительно улучшен, поскольку m2e 0.13.0: m2e 1.1+ и m2e-wtp 0.16.0+ теперь могут преобразовывать существующие настройки затмения в конфигурацию плагина maven .

Что касается преобразования зависимостей, вы можете попробовать функцию интеграции JBoss Tools (JBT) 4.0 Maven, которая содержит мастер экспериментального преобразования, подключенный к процессу преобразования m2e: http://docs.jboss.org/tools/whatsnew/maven/maven-news-4.0.0.Beta1.html.

Это не претендует на то, чтобы быть окончательным решением (ничто не может), но это должно значительно помочь запустить процесс конвертации в Maven.

Также, к вашему сведению, некоторые идеи по улучшению процесса преобразования m2e , рефакторинг для использования макета Maven, скорее всего, будет реализован в будущем.

JBT 4.0 (требуется Eclipse JavaEE Juno) можно установить с http://download.jboss.org/jbosstools/updates/stable/juno/ или с Eclipse Marketplace

4 голосов
/ 14 июля 2014

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

Вот что я сделал, чтобы превратить общий проект в проект maven.

общий проект -> проект Java щелкните правой кнопкой мыши по проекту, свойства-> фасеты проекта, нажмите «java». Этот шаг превратит общий проект в проект Java.

Java-проект -> Maven Project щелкните правой кнопкой мыши проект, настройте -> преобразовать в Maven проект На данный момент maven зависимостей lib все еще не в пути сборки. свойства проекта, путь сборки , добавить библиотеку, добавить зависимости maven lib

И подождите несколько секунд, когда зависимости загрузятся, проект готов!

2 голосов
/ 26 июля 2015

Существует программа командной строки для преобразования любого проекта Java в проект SBT / Maven.

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

UniversalResolver 1.0
Usage: UniversalResolver [options]

  -s <srcpath1>,<srcpath2>... | --srcPaths <srcpath1>,<srcpath2>...
        required src paths to include
  -j <jar1>,<jar2>... | --jars <jar1>,<jar2>...
        required jars/jar paths to include
  -t /path/To/Dir | --testDirectory /path/To/Dir
        required directory where test configurations will be stored
  -a <task1>,<task2>... | --sbt-tasks <task1>,<task2>...
        SBT Tasks to be executed. i.e. compile
  -d /path/To/dependencyFile.json | --dependencyFile /path/To/dependencyFile.json
        optional file where the dependency buffer will be stored
  -l | --search
        load and search dependencies from remote repositories
  -g | --generateConfigurations
        generate dependency configurations
  -c <value> | --findByNameCount <value>
        number of dependencies to resolve by class name per jar

https://bitbucket.org/mnyx/universalresolver

1 голос
/ 01 февраля 2017

Для преобразования в Gradle является аналогом Maven:

Щелкните правой кнопкой мыши Project -> подменю Configure -> Convert to Gradle (STS) Project

1 голос
/ 15 марта 2010

У меня вопрос: есть ли мастер или автоматический импортер для преобразования существующего проекта Eclipse Java в проект Maven с использованием плагина Maven?

Насколько я знаю, нет ничего, что могло бы автоматически преобразовать проект Eclipse в проект Maven (т.е. изменить макет, создать POM, «сгенерировать» и передать его метаданными, обнаружить библиотеки и их версии, чтобы добавить их в ПОМ и т. д.). Eclipse просто не имеет достаточно метаданных, чтобы сделать это возможным (в этом и заключается суть POM) и / или получить достойный результат.

Или я должен создать новый проект Maven и вручную скопировать все исходные файлы, библиотеки и т. Д.

Это был бы лучший вариант на мой взгляд. Создание проекта Maven, копирование / перемещение источников, ресурсов, тестов, ресурсов тестирования в соответствующие каталоги, объявление зависимостей и т. Д.

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