Перетворити існуючий проект затемнення в проект Maven


246

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

Моє запитання: чи є майстер або автоматичний імпортер для перетворення існуючого проекту Eclipse Java в проект Maven, використовуючи плагін Maven? Або я повинен створити новий проект Maven і вручну скопіювати всі вихідні файли, контури тощо.


3
Чи використовує ваша існуюча збірка сценарій Ant?
мат б

4
Ви, ймовірно, повинні змінити прийняту відповідь
Mr_and_Mrs_D

Відповіді:


141

Якщо ви просто хочете створити POM за замовчуванням та включити функції m2eclipse: тому я припускаю, що у вас зараз немає альтернативної автоматизованої установки збірки, яку ви намагаєтеся імпортувати, і я припускаю, що ви говорите про плагін m2eclipse.

Плагін m2eclipse забезпечує опцію правої кнопки миші на проект, щоб додати цей замовчувальний pom.xml:

Новіші версії M2E

Клацніть правою кнопкою миші на Project -> підменю Налаштування -> Перетворити на Maven Project

Старіші версії M2E

Клацніть правою кнопкою миші Проект -> підменю Maven -> Увімкнути управління залежностями.

Це зробить необхідне, щоб увімкнути плагін для цього проекту.


Щоб відповісти " чи є автоматичний імпортер чи майстер? ': не те, що я знаю. Використання наведеної вище опції дозволить вам увімкнути плагін m2eclipse для вашого існуючого проекту, уникаючи копіювання вручну. Вам все одно потрібно буде фактично налаштувати залежності та інші речі, необхідні для побудови.


Хоча це дозволяє M2Eclipse, це насправді не майстер, не імпортує існуючий проект Eclipse. Швидше, це дає користувачеві можливість вибору залежностей тощо, що може бути складно, якщо користувач не має великого досвіду роботи з Maven.
Калеб Педерсон

Я інтерпретував питання як "мені потрібно створити новий проект і копіювати вручну речі, щоб використовувати плагін m2eclipse?", Я уточню.
брабстер

16
Пункт меню Maven недоступний для мене з меню правої кнопки миші (останній m2eclipse), відповідь Чендуна працює.
wulfgarpro

8
У поточній версії Eclipse (4.2) та m2eclipse пунктом меню є «Перетворити / перетворити на проект Maven».
Jesper

12
Пункт меню @Jesper - "Налаштувати / перетворити на проект Maven"
angelcervera

293

Починаючи з m2e 0.13.0 (якщо не раніше), ви можете перетворити проект Java в проект Maven з контекстного меню. Ось як:

  • Клацніть правою кнопкою миші проект Java, щоб відкрити контекстне меню
  • Виберіть Налаштувати> Перетворити на Maven Project

Ось детальний крок із знімками екрана.


30
Це все ще не створює структур каталогів і не додає залежностей у пом.
Клаус Нджі

2
чи m2e все ще не створює структуру каталогу maven і додає залежності в пом?
Mr_and_Mrs_D

2
Згадане нижче моє рішення (@ShriKant Vashishtha) вирішує всі описані тут проблеми. Створює структуру Maven, видаляє пробіли у назвах папок, створює pom.xml та переміщує папки вихідних файлів у структурі Maven
ShriKant Vashishtha

Працює ідеально і бездоганно на той час Windows 10 Eclipse Mars.
Маттіс Колі

Мені це ідеально підходить
WitnessTruth

12

У мене виникла та сама проблема, і я хотів Mavenise весь робочий простір затемнення, що містить близько 60 проектів Eclipse. Робити це вручну потрібно багато часу, а альтернативні варіанти не були такими життєздатними. Щоб вирішити проблему, я нарешті створив проект, який називався eclipse-to-maven on github. Оскільки затемнення не має всієї необхідної інформації про залежності, воно робить наступне:

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

  • Він переміщує всі папки-джерела згідно з умовами Maven (наприклад src/main/java)

  • Оскільки проекти Eclipse, що мають імена з пробілами, важко мати справу з середовищем Linux / Unix, він перейменовує їх, а також імена без пробілів.

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


Цікаво! Це перенесено на Луну? Чи все-таки проект буде проектом затемнення (дійсний .classpathі .projectфайли)? Чи можете ви додати до своєї відповіді, як використовувати свій плагін, щоб полегшити простий проект JavaSE - і якими будуть фактичні зміни в структурі каталогів?
Mr_and_Mrs_D

Вибачте, але я не знаю, що таке Луна. Це більше не буде дійсним проектом затемнення, оскільки структура каталогів проекту буде змінена. Однак створити модифіковані конфігурації затемнення за допомогою Maven дуже просто. Це не плагін, а інструмент. Як це запустити, згадується вже в README проекту. Структура каталогів перетворюється в конвенцію Мейвена. Тому всі джерела, наприклад, переходять до src / main / java.
ShriKant Vashishtha

Luna - це остання версія затемнення !!
Mr_and_Mrs_D

7

Клацніть правою кнопкою миші назву проекту> Налаштувати> Перетворити на проект Maven> натисніть кнопку "Готово". Тут ви додасте деякі залежності для завантаження та додайте очікуваний файл jar.

Це створить автоматично створений файл pom.xml. Відкрийте цей файл у форматі XML у своєму редакторі затемнення. Після побудови тега ( </build>) додайте свої залежності, які ви можете скопіювати з веб-сайту maven та додайте їх туди. Тепер вам добре піти. Ці залежності автоматично додадуть потрібні файли jar.


1
Чи створить це структуру папки Maven?
Mr_and_Mrs_D

так, це створить структуру папок Maven на основі відповідного відображеного шаблону архетипу та мінімальної конфігурації. Ви повинні додати кожну залежність свого проекту (від .classpath) в POM.xml самостійно вручну по одній.
Пратап Сінгх

5

Відповідь Чендуна правильна, вам слід скористатися 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.

Крім того, FYI, ось кілька ідей для покращення процесу перетворення m2e , рефакторинг на використання макету Maven, швидше за все, буде реалізований у майбутньому.

JBT 4.0 (вимагає Eclipse JavaEE Juno) можна встановити з http://download.jboss.org/jbosstools/updates/stable/juno/ або з ринку Eclipse


4

Це необхідно, тому що, більш-менш, коли ми імпортуємо проект з git, це не проект maven, тому залежність від maven не стоїть на шляху побудови.

Ось що я зробив, щоб перетворити загальний проект на проект Maven.

загальний проект -> проект java клацніть правою кнопкою миші проект, властивості-> грані проекту, натисніть "java". Цей крок перетворить загальний проект у проект java.

java project -> maven project правою кнопкою миші проект, конфігурувати -> перетворити в maven проект На даний момент, maven залежності lib все ще не знаходиться в шляху збирання. властивості проекту, побудувати шлях , додати бібліотеку, додати maven зависимостей lib

І зачекайте кілька секунд, коли залежність завантажується, проект готовий!


2

Існує програма командного рядка для перетворення будь-якого проекту Java в проект SBT / Maven.

Він вирішує всі банки і намагається з'ясувати правильну версію на основі контрольної суми SHA, classpath або імені файлу. Потім він намагається зібрати джерела, поки не знайде робочу конфігурацію. Також можуть бути задані спеціальні завдання для виконання відповідно до конфігурації залежності.

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


Це виглядає як дуже привабливий варіант. Але, як це зараз упаковано, це не дуже доступно. Не очевидно, як упакувати та розгорнути source.code. Більшість розробників Java не є розробниками Scala, і SBT не є широко використовуваним інструментом у спільноті.
А. Рік

1

Моє запитання: чи є майстер або автоматичний імпортер для перетворення існуючого проекту Eclipse Java в проект Maven, використовуючи плагін Maven?

Наскільки я знаю, немає нічого, що автоматично перетворить проект Eclipse в проект Maven (тобто змінити макет, створити POM, "генерувати" та подати його метаданими, виявити бібліотеки та їх версії, щоб додати їх до POM тощо). Eclipse просто не має достатньо метаданих, щоб зробити це можливим (саме в цьому і полягає суть POM) та / або для отримання гідного результату.

Або я повинен створити новий проект Maven і вручну скопіювати всі вихідні файли, файли тощо

На мій погляд, це був би найкращий варіант. Створіть проект Maven, скопіюйте / перемістіть джерела, ресурси, тести, випробуйте ресурси у відповідних каталогах, оголосіть залежності тощо.


Чому ця відповідь вище, ніж відповідь +199? Я майже не бачив цього
Еворлор

1

Для перетворення в Gradle аналог Maven:

Клацніть правою кнопкою миші на Project -> підменю Налаштування -> Перетворити у Gradle (STS) Project


4
Відповідь не стосується питання
Ріпон Аль Васім

1
Я знайшов це питання, шукаючи Gradle, багато разів корисно додати відповіді для іншої ОС, а не для запитуваної ОС, оскільки це не існує питання для окремого випадку. Щодо Градле, я б не створював нового питання, щоб відповісти на те, що вважаю корисним, а скоріше публікую це. Дякуємо та з повагою
ще
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.