IntelliJ - преобразование проекта / модуля Java в проект / модуль Maven

398

У меня есть проект на Bitbucket. Только источники совершены. Чтобы загрузить проект на новый компьютер, я использовал «Контроль версий»> «Проверка из контроля версий» из IntelliJ.

Затем он спрашивает, хочу ли я создать новый проект из этого источника, на что я отвечаю Да. Все идет нормально. Это создает хороший маленький Java-проект для меня, состоящий из одного модуля.

Тем не менее, моей целью при внедрении этого проекта в IntelliJ было превратить его в проект Maven. Я не могу найти ни одного варианта, который позволил бы мне сделать это!

Есть ли способ заставить IntelliJ просто сгенерировать для меня простой пустой файл pom.xml с именем, идентификатором артефакта и хранилищем? Или есть ли способ импортировать проект как проект Maven? (Всякий раз, когда я пытаюсь создать проект из существующего источника, это только дает мне возможность проекта Java.)

Neil Traft
источник

Ответы:

760

Щелкните правой кнопкой мыши по модулю, выберите «Добавить поддержку фреймворка ...» и проверьте технологию «Maven».

(Это также создает pom.xmlдля вас изменения.)

Если вы имеете в виду добавление элементов исходного репозитория, я думаю, вам нужно сделать это вручную - не уверен.

До IntelliJ 13 это не будет преобразовывать проект в Maven Standard Layout , 13+ это будет.

Дэйв Ньютон
источник
3
Именно то, что я искал! И да, я имел в виду добавление стандартного maven2 «центрального» элемента репозитория. Но я могу добавить это сам, ничего страшного.
Нил Траффт
1
Круто. Но вам не нужно добавлять это; это уже по умолчанию.
Дейв Ньютон,
46
Что произойдет, если у меня нет такой опции?
2
какие "плагины"? У меня есть 2 штекера Maven (по умолчанию поставляется с IntelliJ). Все еще нет опции «Maven» в Add Frameworks
Ник
1
извините за возрождение этого старого поста, но есть ли автоматический способ поместить зависимости jsf в pom? Пом создан, но он пуст, я хотел бы иметь все надлежащие зависимости проекта JSF внутри пом.
MrSir
76

Визуал для тех, кому это выгодно.

введите описание изображения здесь

После щелчка правой кнопкой мыши по имени проекта (в данном примере «test») выберите «Добавить поддержку фреймворка» и установите флажок «Maven».

катодно-лучевая трубка
источник
Большое вам спасибо .....
чмокает вишня
31
  1. Откройте «Проекты Maven» (вкладка справа).
  2. Используйте «Добавить проекты Maven»
  3. Найди свой pom.xml
FazoM
источник
1
Когда во многих подпроектах у меня был URL-адрес родительского директора, подпроекты не распознавались как Maven. Этот ответ помог. Чтобы было понятно, эта функция доступна в окне инструментов Maven.
Сильвестр
Этот ответ помог мне заново связать проект Gradle с Maven. Просто нужно отсоединить его (используйте знак минус) в аналогичном меню Gradle.
vphilipnyc
6

Я хочу добавить важный намек на то, что преобразование подобного проекта может иметь побочные эффекты, которые заметны, когда у вас более крупный проект. Это связано с тем, что Intellij Idea (2017) берет некоторые важные настройки только из файла pom.xml, что может привести к некоторой путанице, по крайней мере, затронуты следующие разделы:

  1. Настройки аннотации изменены для модулей
  2. Выходной путь компилятора изменен для модулей
  3. Настройки ресурсов полностью игнорируются и берутся только из pom.xml
  4. Зависимости модуля перепутаны и должны быть проверены
  5. Настройки языка / кодировки изменены для модулей

Все эти моменты необходимо пересмотреть и откорректировать, но после этого это работает как шарм.

Более того, к сожалению, не создан достаточный шаблон pom.xml, я добавил пример, который может помочь решить большинство проблем.

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>Name</groupId>
<artifactId>Artifact</artifactId>
<version>4.0</version>
<properties>
    <!-- Generic properties -->
    <java.version>1.8</java.version>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
</properties>
<dependencies>
    <!--All dependencies to put here, including module dependencies-->
</dependencies>
<build>
    <directory>${project.basedir}/target</directory>
    <outputDirectory>${project.build.directory}/classes</outputDirectory>
    <testOutputDirectory>${project.build.directory}/test-classes</testOutputDirectory>
    <sourceDirectory>${project.basedir}/src/main/java</sourceDirectory>
    <testSourceDirectory> ${project.basedir}/src/test/java</testSourceDirectory>

    <resources>
        <resource>
            <directory>${project.basedir}/src/main/java</directory>
            <excludes>
                <exclude>**/*.java</exclude>
            </excludes>
        </resource>
        <resource>
            <directory>${project.basedir}/src/main/resources</directory>
            <includes>
                <include>**/*</include>
            </includes>
        </resource>
    </resources>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.5.1</version>
            <configuration>
                <annotationProcessors/>
                <source>${java.version}</source>
                <target>${java.version}</target>
            </configuration>
        </plugin>
    </plugins>
</build>

Изменить 2019:

  • Добавлено рекурсивное сканирование ресурсов
  • Добавлена ​​спецификация каталога, которая может быть важна, чтобы избежать путаницы с IDEA при обращении к корневой структуре контента
Томас
источник
3

У меня был другой сценарий, но все-таки приземлился на этот ответ.
Я импортировал свою корневую папку проекта, содержащую несколько проектов Maven, но также некоторые другие вещи, используемые в этом проекте.
IntelliJ распознал файлы Java, но не разрешил зависимости Maven.

Я исправил это, выполнив щелчок правой кнопкой мыши на каждом POM, а затем «Добавить как проект Maven»

Джон Блэквелл
источник
3

Я решил эту проблему, выполнив следующие шаги:

  1. Файл> Закрыть проект

  2. Импортировать проект

  3. Выберите свой проект через всплывающее окно системных файлов

  4. Установите флажок «Импортировать проект из внешней модели» и выберите запись Maven.

  5. И некоторые кнопки «Далее» (выберите JDK, ...)

Затем проект будет импортирован как модуль Maven.

Валид Амму
источник
2

Это исправило это для меня: откройте вкладку maven projects справа. Добавьте помп, если его еще нет, затем нажмите «Обновить» в левом верхнем углу вкладки.

ZoltanT
источник
0

Самый простой способ - добавить проект как проект Maven напрямую. Для этого в проводнике проекта слева щелкните правой кнопкой мыши файл POM для проекта, в нижней части контекстного меню вы увидите параметр «Добавить как проект Maven», щелкните его. Это автоматически преобразует проект в проект Maven

Testilla
источник