IntelliJ: работа над несколькими проектами


332

Мы встраиваем в maven несколько проектов (назовем их A, B, C). Проект A использует .jar проекта B, который использует .jar проекта C.

Я модифицирую коды всех проектов A / B / C (A - приложение MVC, B - бизнес-сервисы, а C - некоторый общий уровень).

Дело в том, что в Eclipse / NetBeans я могу видеть их все сразу, и их удобно изменять. В IDEA я должен открыть 3 экземпляра (или n экземпляров) IntelliJ IDEA.

Я что-то упускаю? Есть ли лучший подход при использовании IntelliJ? Это самый большой недостаток IntelliJ для меня.


3
Просматривая ответы на сегодняшний день, я вижу основную суть в том, что IntelliJ определяет то, что Eclipse называет «проектами» как модулями, а «рабочие пространства» - проектами. Идея состоит в том, чтобы модули в одном проекте были достаточно связаны. Таким образом, если проект A зависит от проекта B, но оба совершенно не связаны с проектом C, было бы хорошо открыть проекты A и B в виде модулей в одном проекте IntelliJ, открыв C в отдельном проекте во втором экземпляре IntelliJ. Вы можете согласиться или не согласиться с дизайном, но (если я правильно уловил идею), я чту мысль, стоящую за этим.
Джон Чешир

Ответы:


134

Да, ваша интуиция была хорошей. Вы не должны использовать три экземпляра intellij. Вы можете открыть один проект и добавить другие «части» приложения в виде модулей. Добавьте их через браузер проекта, по умолчанию горячая клавиша alt + 1


1
Я делаю то же самое: импортирую основной проект, затем импортирую свой второй проект, используя «модуль импорта», но позже - я получил «Эти модули были удалены из структуры maven: ... Вы хотите, чтобы они были удалены из проекта тоже? - Тогда я нажимаю «Нет». Но этот диалог появляется много раз. Что я могу сделать?
nnhthuan

99
Лучший ответ ниже
redDevil

3
@redDevil какой?
Петр Финдейзен

4
@redDevil Нет! Этот ответ является более общим, если у вас есть проекты не maven, этот ответ лучше, так как ответ с наибольшим количеством голосов просто не охватывает их. Два ответа относятся к разным ситуациям и одинаково актуальны, никто не лучше другого.
luk2302

2
Это лучше, чем ответ «Только Maven», но это не поможет, если у вас есть несвязанные проекты, которые вы хотите видеть одновременно (например, легкий доступ для ссылки на код другого проекта), или если вы поддерживаете библиотеку, которая зависит от проект, на котором вы сосредоточены. Очень расстраивает то, что IJ не использовал здесь модель Eclipse / NetBeans, это главное, что мешает мне перейти на IJ.
Маний

423

Я думаю, что это улучшилось с последними версиями IntelliJ. В моей текущей версии (12.0.2) вы можете добавить любое количество отдельных проектов Maven в одно и то же «рабочее пространство».

Я нашел самый простой способ сделать это, щелкнув по маленькому +значку в окне «Проекты Maven» («Просмотр»> «Окна инструментов»> «Проекты Maven») и затем выбрать дополнительный файл pom, который вы хотите импортировать.


2
Просто добавлю: как только Maven Project будет добавлен, он загрузится в панель Project, если это локальный проект.
Арам Кочарян

9
Если эти проекты находятся в разных репозиториях git, вы можете проверить «Синхронизировать репозитории» в настройках (Настройки> Контроль версий> Git). IntelliJ будет синхронизировать нажатия, обновления и выбор веток в нескольких проектах.
Тим Ван Лаер

13
Для тех, кто не знаком с IntelliJ и не знает, где находится окно «Maven Projects»: верхний правый угол.
dustin.schultz

1
С версией 2017 года все по-другому, см. Jetbrains.com/help/idea/2017.1/maven-projects-tool-window.html
vikramvi

3
Так что если вам нужно открыть несколько проектов, но это проекты Gradle или Ant, вам все равно не повезло. Нет, спасибо ... Мне нужно, чтобы все 3 были открыты, как позволяют NetBeans и Eclipse. Нехватка надлежащего рабочего пространства - причина № 1, я все еще не использую IJ.
Маний

216

Пожалуйста, выполните следующие 2 шага:

Шаг 1 : Откройте «Maven Projects»

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

Шаг 2 : Выберите проект, который вы хотите импортировать:

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


20
Одна картинка стоит тысячи слов.
Neeraj Jain

3
Спасибо, это было действительно полезно
Дж. Адам

3
Этот ответ мне очень помогает, особенно при использовании скриншотов. Спасибо.
Chaklader Asfak Arefe

1
Это ответ, который я ищу. Большое спасибо :)
Джерин Курьян

1
Я не вижу вариант в моем случае:2019.3 community
Маринос Ан

134

Prequisite

Наличие всех связанных проектов в одном корневом каталоге.

меры

1) Сначала вы создаете новый пустой проект

Новый пустой проект


2) Затем вы выбираете корневой каталог всех ваших проектов.

Это создаст пустой проект с каталогом .idea, который будет просто помнить организацию модуля, которую мы собираемся сделать на следующем шаге.

Выберите корневой каталог


3) Затем в следующем окне вы импортируете различные проекты в виде модулей.

Импортировать проекты как модули


4) В следующем окне, чтобы импортировать каждый проект, просто дважды щелкните на build.gradle или pom.xml

Проект будет импортирован как новый модуль. Выберите файл сборки


5) Готово, все ваши проекты в виде модулей открыты в одном проекте IntelliJ

результат


16
Это точный правильный ответ на этот вопрос. Сначала создайте и очистите проект, а затем добавьте существующие. Спасибо.
hrzafer

4
у вас есть решение. Но ваша «Необходимость наличия всех связанных проектов в одной корневой директории». не требуется. Я пытался для Maven проектов, и он работает нормально с Intelllij версии 2017.3. Я не пробовал с intellij стандартных модулей, хотя.
Готье Пил

2
Точное решение!
Satheesh

2
Топ ответ. Спасибо :)
AnarchoEnte

2
Работал для меня с Intellij Idea 2018.3 и Gradle.
Резает

53

В IntelliJ 14.1.2 я сделал это следующим образом:

Выберите File-> Project Structure-> Modules.

Выберите +и Import Moduleвыберите каталог вашего проекта (или каталог, в котором существует pom) и нажмите OK.

Проследите за следующим потоком экранов, и после нажатия Finishвы увидите проект рядом с существующим.

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


не могу добавить модуль, как это. Cannot import anything from C:/Projects/
когда-либо alian

@everalian, у вас есть pom.xml в C: / Projects или где-то еще?
Нео

Нет, у меня нет файла pom.xml. Потому что я использую Gradlebuild.
никогда не Алеан

2
Это должно быть принятым решением. Не все проекты используют Maven.
Бабкен Варданян

34

Ни одно из решений не сработало для меня, так как я не работаю над проектами Maven. Есть более простое решение. Перейти к:

Файл-> Структура проекта-> Модули.

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

Вместо добавления модуля просто нажмите третий вариант (копия). Просмотрите локальный каталог и выберите проект, который вы хотите добавить. Имя модуля будет разрешено автоматически. Вот и все.

Обновление: если вы хотите снова открыть проект с несколькими подпроектами, чтобы избежать повторного выполнения шагов, как описано выше, просто перейдите в File-> Open Recent -> 'Your Big Project'.


1
Да ... о да .... Это решение, которое я ищу. Импортировать как maven модуль или проект не генерировать .ideaи xxx.imlфайлы. Это может вызвать проблемы с плитками Apache . Я использую с версией 2018.1.5. Огромное спасибо.
Катаклизм

Это потрясающе! Единственным недостатком является использование IDE только в качестве редактора, и все равно приходится переходить в нужную папку для компиляции и запуска. У кого-нибудь есть простой способ использовать это решение для нескольких папок (скопированных модулей) и все же компилировать и запускать в редакторе?
Грег Хилстон

11

Чтобы развернуть ответ @Neo: после выбора вашего каталога. выберите import module from external modelи выберите свою модель (в данном случае maven).

выбрать модель

Затем проверьте keep project filesопцию из следующего диалога. Все файлы будут сохранены в оригинальной директории.

параметры

Ваша окончательная структура проекта будет примерно такой.

структура

Теперь вы можете добавить свой модуль в качестве зависимости к другому модулю, pom.xmlи если вы измените исходный код ваших зависимостей, Intellij позаботится об обновлении вашего проекта (нет необходимости запускать mvnсборку вручную для зависимостей)


8
  • новый пустой проект
  • Файл -> Новый -> Модуль из существующих источников

6

Вы можете использовать плагин Armory, который делает переключение между проектами удобным. По умолчанию ярлык для списка Project является Alt + A .

Снимок экрана: окно "Список проектов"

По умолчанию открытые в данный момент проекты отображаются в верхней части этого списка ( жирным шрифтом ).


6

Открыть предпочтения -> внешний вид и поведение -> Системные настройки -> выбрать (открыть проект в новом окне), а затем применить.введите описание изображения здесь

Тогда вы можете открывать и редактировать несколько проектов.


5
Это именно то, что ОП пытается избежать. Он хочет, чтобы они были в одном окне, все три проекта одновременно.
Саймон Форсберг,

6

Для тех, кто использует Gradle, также может помочь то же самое:

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

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

Перейдите к: 1. Вид -> Инструменты Windows -> Gradle 2. Нажмите на +кнопку и добавьте свой build.gradleфайл


Вы используете Community Edition или Ultimate Edition? Я новичок в Intellij и получил только CE (2019.3.3). Это не имеет Gradle в этом меню.
Майк Грызун

4

Нажмите «F4» в окнах, которые откроют «Структура проекта», а затем нажмите значок «+» или «Alt + Insert», чтобы выбрать новый проект для импорта; затем нажмите кнопку ОК ...


Спасибо за ключ. Было бы полезно, если вы забыли что-нибудь добавить с ответом @ThisIsFlorianK!
Satheesh

4

Используйте кнопку для добавления проектов Maven и перейдите в папку проекта. Затем выберите pom.xmlфайл и добавьте его в IntelliJ.

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


1

Для людей, которые не используют maven для сборки и хотят добавить новый проект (я использую intellij 14.1.3):

  1. Щелкните правой кнопкой мыши папку верхнего уровня в представлении проекта, выберите новый -> Модуль
  2. Назовите модуль с тем же именем, что и проект, который будет добавлен
  3. В верхнем меню выберите Файл-> Создать-> Проект. Введите то же имя, что и у нового модуля, а также те же папки.
  4. Откройте проект и подождите, пока intellij создаст структуру проекта.
  5. Закройте этот новый проект и откройте исходный проект, к которому был добавлен модуль на шаге 2

В зависимости от вашего сборщика, дополнительные шаги будут необходимы, чтобы добавить его в процесс сборки.

Для SBT и в проекте верхнего уровня я изменил файл Build.scala, чтобы агрегировать новый проект, и добавил проект в окно проектов SBT. Дополнительная информация о многопроектных сборках SBT: http://www.scala-sbt.org/0.12.2/docs/Getting-Started/Multi-Project.html.


IntelliJ добавил поддержку добавления модулей sbt в проект, и он работал очень хорошо, но, похоже, он не работает с версии 2017 года. Вы все еще можете добавить несколько модулей sbt, но при обновлении вы теряете все, кроме одного.
Надер Ганбари

1

Чтобы Intellij IDEA 2019.2, F4 + щелкните по модулю, нажмите +, чтобы добавить любой проект с вашего жесткого диска, над этим меню вы можете редактировать IDE, когда вы создаете проект и другие опции, очень легко


0

Вы можете использовать опцию модуля импорта, которая откроет его, как затмение в том же навигаторе.


он говорит, что не может открыть .ipr в проект
когда-либо alian

0

Я новичок в maven и не понимаю, как я могу работать с локальным проектом maven, добавленным через ответ Виктора Нордлинга, и у меня все еще есть правильная зависимость в файле pom.xml. Ответ прост: intellij сначала смотрит на ваш локально добавленный модуль, а если он не находит, он отправляется для удаленного получения проекта. Вы можете проверить это, посмотрев «внешние библиотеки» в браузере проекта при добавлении или удалении модуля maven.

Надеюсь, это кому-нибудь поможет.



-1

Нет необходимости перемещать целые проекты в модуль. Вариант использования для модуля более мелкозернистый, чем для контейнера проекта.

Чтобы открыть несколько проектов в одном окне:

Файл -> Открыть проект

Выберите открыть в этом окне.

Установите флажок добавить в текущий проект.


1
не работает. он заменяет текущий открытый проект на то же окно.
когда-либо alian

3
@everalian, к сожалению, эта функция была удалена.
BAR
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.