IntelliJ:处理多个项目


332

我们在Maven中构建多个项目(将它们命名为A,B,C)。项目A使用项目B的.jar,后者使用项目C的.jar。

我正在修改所有A / B / C项目的代码,(A是MVC应用程序,B是业务服务,C是某些共享层)。

事实是,在Eclipse / NetBeans中,我可以一次看到所有它们,并且可以轻松修改它们。但是在IDEA中,我必须打开IntelliJ IDEA的3个实例(或n个实例)。

我想念什么吗?使用IntelliJ时是否有更好的方法?对我来说,这是IntelliJ最大的缺点。


3
纵观迄今为止的答案,我看到的基本要点是IntelliJ将Eclipse称为“项目”的模块定义为“项目”,将“工作区”的项目定义为项目。这样做的目的是确保同一项目中的模块相互关联。因此,如果项目A依赖于项目B,但两者都与项目C完全无关,则最好在同一IntelliJ项目中将项目A和B作为模块打开,而在第二个IntelliJ实例中的单独项目中打开C。您可以同意或不同意该设计,但是(假设我已经正确把握了这个想法)我很欣赏它背后的想法。
约翰·切希尔

Answers:


134

是的,你的直觉很好。您不应该使用intellij的三个实例。您可以打开一个项目,然后将应用程序的其他“部分”添加为模块。通过项目浏览器添加它们,默认热键为alt + 1


1
我在做同样的事情:导入主项目,然后使用“导入模块”导入第二个项目,但后来-我得到了“这些模块已从Maven结构中删除:...是否要删除它们?也来自项目?” -然后我按“否”。但是此对话框出现了很多次。我能做什么?
nnhthuan 2014年

99
以下是更好的答案
redDevil

3
@redDevil是哪一个?
Piotr Findeisen

4
@redDevil不!这个答案比较笼统,如果您有非Maven项目,那么这个答案会更好,因为获得最高投票的答案根本没有涵盖它们。这两个答案针对不同的情况,并且具有同等的相关性,没有一个比另一个更好
luk2302 '17

2
这比“仅使用Maven”的答案要好,但是如果您有想要同时可见的不相关项目(例如,易于访问以引用其他项目的代码),或者如果您支持依赖于以下内容的库,这将无济于事:您关注的项目。我非常沮丧IJ在这里没有使用Eclipse / NetBeans模型,这是阻止我切换到IJ的主要原因。
Manius

422

我认为这与IntelliJ的最新版本相比有所改善。在我当前的版本(12.0.2)中,您可以将任意数量的单独的Maven项目添加到同一“工作区”。

我发现最简单的方法是单击+“ Maven项目”窗口中的小图标(“视图”>“工具窗口”>“ Maven项目”),然后选择要导入的其他pom文件。


2
只是要添加:添加Maven项目后,如果它是本地项目,它将在“项目”面板中加载。
Aram Kocharyan 2014年

9
如果这些项目位于不同的git存储库中,则可以在设置(“设置”>“版本控制”>“ Git”)中选中“同步控制存储库”。IntelliJ将在多个项目上保持推送,更新和分支选择的同步。
蒂姆·范·拉尔

13
对于IntelliJ的新手,不知道“ Maven项目”窗口在哪里:右上角。
dustin.schultz

1
对于2017版本,情况有所不同,请参阅jetbrains.com/help/idea/2017.1/maven-projects-tool-window.html
vikramvi

3
因此,如果您需要打开多个项目,但是它们是Gradle或Ant项目,那么您仍然不走运。不用了,谢谢。我需要能够全部打开3个窗口,例如NetBeans和Eclipse allow。缺少适当的工作空间是我仍然不使用IJ的第一原因。
Manius

216

请按照以下两个步骤操作:

步骤1:打开“ Maven项目”

在此处输入图片说明

步骤2:选择您要导入的项目:

在此处输入图片说明


20
一张图片胜过千言万语。
Neeraj Jain

3
谢谢,这真的很有用
J. Adam

3
这个答案对我很有帮助,尤其是在使用屏幕截图时。谢谢。
Chaklader Asfak Arefe,

1
这是我正在寻找的答案。非常感谢:)
杰林·库里安

1
我看不到我的情况下的选项:2019.3 community
Marinos

134

前提条件

将所有相关项目放在一根目录中。

脚步

1)首先创建一个新的Empty项目

新的空项目


2)然后选择所有项目的根目录。

这将创建一个带有.idea目录的空项目,该目录将仅记住我们下一步要执行的模块组织

选择根目录


3)然后,在下一个窗口中,将不同的项目作为模块导入

将项目导入为模块


4)在下一个窗口中,要导入每个项目,只需双击build.gradlepom.xml

该项目将作为新模块导入。 选择构建文件


5)完成后,您现在将所有项目作为模块在同一IntelliJ项目上打开

结果


16
这是对这个问题的确切正确答案。首先,创建并清空项目,然后添加现有项目。谢谢。
hrzafer

4
您有解决方案。但是您的“前提条件是所有相关项目都在同一根目录中”。不需要。我尝试了Maven项目,它与Intelllij版本2017.3。兼容。我没有尝试过intellij标准模块。
Gauthier Peel

2
确切的解决方案!
Satheesh

2
最佳答案。谢谢您:)
AnarchoEnte '18 -10-26

2
为我使用了Intellij Idea 2018.3和Gradle。
切开

53

在IntelliJ 14.1.2中,我这样做如下:

选择File-> Project Structure-> Modules

选择+Import Module选择项目目录(或pom存在的目录),然后单击“确定”。

按照下一个屏幕流程进行操作,然后单击Finish,您应该在现有屏幕旁边看到该项目。

在此处输入图片说明


无法添加这样的模块。Cannot import anything from C:/Projects/
曾在2015年

@everalian,您在C:/ Projects或其他地方是否有pom.xml?

不,我没有pom.xml文件。因为我使用Gradlebuild。
曾在2015年

2
这应该是公认的解决方案。并非所有项目都使用Maven。
巴肯·瓦尔达尼安

34

没有任何解决方案对我有用,因为我不在Maven项目中工作。有一个更简单的解决方案。去:

文件->项目结构->模块。

在此处输入图片说明

无需添加模块,只需单击第三个选项(复制)。浏览您的本地目录,然后选择要添加的项目。模块名称将自动解析。而已。

更新:当您想重新打开包含多个子项目的项目时,为了避免重新执行上述步骤,只需转到 文件->打开最近的->'您的大项目'。


1
是的...哦是的....这是我正在寻找的解决方案。导入作为Maven的模块或项目不产生.ideaxxx.iml文件。这可能会导致apache tile出现问题。我正在使用version 2018.1.5。非常非常感谢你。
灾变

这真太了不起了!唯一的缺点是仅将IDE用作编辑器,并且仍必须导航到正确的文件夹才能进行编译和运行。任何人都可以通过简单的方法将此解决方案用于多个文件夹(复制的模块),并且仍然可以在编辑器中编译和运行?
格雷格·希尔斯顿

11

展开@Neo答案:选择目录后。选择import module from external model并选择您的模型(在这种情况下为Maven)。

选择型号

然后keep project files从下一个对话框中检查选项。它将所有文件保留在原始目录中。

选项

您最终的项目结构将是这样的。

结构体

现在,您可以将模块作为依赖项添加到其他模块,pom.xml并且如果您更改依赖项的源代码,则Intellij会负责更新项目(无需mvn手动运行依赖项的构建)



6

您可以使用Armory插件,使项目之间的切换变得舒适。项目列表中的默认快捷键是Alt + A键

“项目列表”窗口的屏幕快照

默认情况下,当前打开的项目显示在此列表的顶部(以粗体显示)。


6

打开首选项->外观和行为->系统设置->选择(在新窗口中打开项目),然后应用。在此处输入图片说明

然后,您可以打开和编辑多个项目。


5
这正是OP试图避免的事情。他希望它们在同一窗口中,同时完成所有三个项目。
西蒙·佛斯伯格

6

对于使用Gradle的用户,也可以使用以下方法:

在此处输入图片说明

在此处输入图片说明

转到:1.视图->工具窗口-> Gradle 2.单击+按钮并添加build.gradle文件


您正在使用社区版还是终极版?我是Intellij的新手,仅获得CE(2019.3.3)。该菜单中没有Gradle。
麦克啮齿动物

4

在将打开“项目结构”的窗口上按“ F4”,然后单击“ +”图标或“ Alt +插入”以选择要导入的新项目。然后单击确定按钮...


感谢您的钥匙。如果您忘记添加@ThisIsFlorianK的答案,这将很有帮助!
Satheesh


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模块,但是当您刷新时,最终会失去一个模块。
Nader Ghanbari


0

您可以使用导入模块选项,就像在同一导航器中的Eclipse一样打开它。


它说无法打开.ipr进入项目
曾于2015年

0

我是maven的新手,不了解如何使用通过Viktor Nordling的答案添加的本地maven项目,并且仍然对pom.xml文件具有适当的依赖性。答案很简单:intellij首先查看您本地添加的模块,如果找不到,则可以远程获取项目。添加或删除Maven模块时,可以通过在项目浏览器下查看“外部库”来进行检查。

希望这对任何人有帮助。



-1

无需将整个项目移至一个模块。模块的用例比作为项目容器的用例要细一些。

要在同一窗口中打开多个项目:

文件->打开项目

选择在此窗口中打开。

显示添加到当前项目的复选框。


1
不工作。它将当前打开的项目替换到同一窗口。
曾经alian

3
@everalian不幸的是,此功能已删除。
2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.