IntelliJ IDEA中打开项目时用 Import Project(导入项目) 和 Open(打开项目) 的区别

文章目录

  • 创建测试目录
  • 使用 Open 方式打开
  • 用 Import Project 方式打开
  • 用 Open 方式打开文件夹下的多个项目
  • 用 Import Project 的方式打开多个项目
  • 总结

对于 IDEA 中如下图所示的 Import Project 和 Open Project 的区别,一开始不明白怎么回事,网上看了很多说法,也都是在文字描述,今天实践了一下二者的区别。

在这里插入图片描述

创建测试目录

首先我们在 test 目录下手动创建一个 testIdea1 目录进行第一次测试,testIdea1 目录结构符合 Maven 目录结构,但是没有被任何 IDEA 打开过,其中的 pom.xml 中也没什么内容,就只有简单的 groupId, artifactId 等信息。
在这里插入图片描述

使用 Open 方式打开

接下来我们点击 IDEA 启动界面的 Open 方式来打开这个目录,可以看到 testIdea1 图标右下角有一下黑色小框,个人猜测这是 IDEA 识别出了这是个 Maven 项目,所以标示了出来,选择 testIdea1 目录后点“OK”,打开项目。
在这里插入图片描述
打开项目后,可以看到,pom.xml 文件的图标被标识为了蓝色小 m 图标,表明 IDEA 识别了这是 Maven 项目(如果是普通的 xml 文件,不会是这个图标,后面我们会看到对比),并且右侧出现了 Maven 选项卡。如果 IDEA 没有识别出这是 Maven 项目,是不会出现 Maven 选项卡的,这也是为什么很多人说找不到 Maven 选项卡,因为 IDEA 没有把你这个项目当成 Maven 项目。
在这里插入图片描述

我们再回去看 testIdea1 目录,这时目录下生成了 .idea 文件夹和 testIdea1.iml,也就是说,打开过一次后,IDEA 把 testIdea1 转为了 IDEA 管理的 Maven 项目。
在这里插入图片描述

用 Import Project 方式打开

按照上面的方式,我们再手动创建一个 testIdea2 的 Maven 项目。
在这里插入图片描述

这一次,我们用 IDEA 启动界面的 Import Project 打开,如下图所示。
在这里插入图片描述
点“OK”后不会直接打开,让我们选择以什么方式打开,其实就是告诉 IDEA 我这个项目是什么形式的项目,这里我们选择 Maven 项目,因为我们的就是 Maven 项目。
在这里插入图片描述
选好后点 Finish,可以看到生成的结果和 Open 没有区别,都是识别为了一个 Maven 项目。

这里大家可以实验一下,如果上一步我们选择 Gradle 或其他非Maven形式来打开这个项目,可以看到 IDEA 没什么反应,又回到启动界面,因为我们明明是 Maven 项目,你却告诉 IDEA 用 Gradle 等其他方式打开,IDEA 不认识,所以也就没法打开。
在这里插入图片描述
在这里插入图片描述

通过以上过程可以发现,对于一个普通的 Maven 项目,用 Open 和 Import Project 其实没什么区别,只是 Import Project 要多一步,选择一下 Import 的形式,告诉 IDEA 这是个 Maven 项目。

用 Open 方式打开文件夹下的多个项目

如果用 Eclipse 打开一个有多个 Maven 项目的文件夹(如上面测试用的 test 文件夹下的 testIdea1 和 testIdea2 两个项目),Eclipse 会自动识别到每个文件夹下的 pom.xml 文件,然后把所有的 Maven 项目都导入进来,并自动识别为 Maven 项目,那么用 IDEA 是不是这样的呢,我们来测试一下。

首先我们把刚才测试用的两个项目下的 .idea 文件夹和 xxx.iml 文件删除,这样它们又回到为两个普通 Maven 项目。
在这里插入图片描述
然后我们用 IDEA 的 Open 方式打开,这次我们直接选择 test 文件夹打开。
在这里插入图片描述
打开后结果如下图,可以看到,虽然被成功打开了,但是 IDEA 并没有将每个文件夹下的 Maven 项目识别为 Maven 项目。这种情况下,你在 pom.xml 中添加 dependency 也没用,IDEA 是不会导入包的。
在这里插入图片描述
这种情况下如果想让上面两个项目变成 Maven 项目,可以按如下步骤分别将两个项目再导入一次,就可以了。
在这里插入图片描述
重新导入一次(其实是两次,因为2个项目要分别导入一次)后的结果如下:
在这里插入图片描述
经过以上步骤我们再看一个我们的文件夹,test 下多了一个 .idea 文件夹,每个项目下多了一个 xxx.iml
在这里插入图片描述

用 Import Project 的方式打开多个项目

还是刚才两个项目,我们还是先删除 .idea 文件夹和 xxx.iml(经测试,删不删结果都一样,但为了看着不那么乱,我还是删了),回到如下的目录结构。
在这里插入图片描述
这次我们选择 Import Project,依然选用 Maven 方式导入,然后就会发现,IDEA 又回到了启动界面。。。也就是没有导入成功,原因是我们导入的是 Maven 项目,但是 test 文件夹下没有 pom.xml,IDEA 不认识,所以导入失败。
在这里插入图片描述

总结

对于单个 Maven 项目(目录下有 pom.xml),Open 和 Import Project 没什么区别。

对于一个文件下的有多个 Maven 项目想要同时导入,只能用 Open 方式,Import Project 方式打不开,但是用 Open 方式也仅仅是打开而已,IDEA 并不能识别为 Maven 项目,还要通过File -> New -> Module from Existing Sources方式再次以 Maven 方式把项目重新导入一次,才能成为 Maven 项目。从这一点上来看,IDEA 不如 Eclipse 那么方便。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/334907.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java命令模式返回值_JAVA 设计模式 命令模式

目录用途命令模式 (Command)将一个请求封装为一个对象,从而使你可以用不同的请求对客户进行参数化;对请求排队或请求日志,以及支持可撤销的操作。命令模式是一种行为型模式。结构图-命令模式结构图Command: 用来声明执行操作的接口。abstract…

IntelliJ IDEA for Mac 如何创建普通的Java项目_创建项目_新建项目

文章目录创建 Java 新项目的流程普通 Java 项目结构Java 项目结构特例讲解创建 Java 新项目的流程 Create New Project Empty Project (1)选择【Empty Project】,则项目不会自动创建模块,项目创建成功之后,会自动弹出…

java 集成开发工具_最好的Java开发人员测试和集成工具

java 集成开发工具通过从您的应用程序学习企业APM产品,发现更快,更有效的性能监控。 参加AppDynamics APM导览! 无论您是刚刚起步还是已经从事了一段时间,使用正确的工具进行编程都可以对项目的成功产生巨大的影响。 适当的工具使…

aws高额账单_取消堆放以提高延迟并减少AWS账单

aws高额账单大多数性能问题可以通过几种不同的方式解决。 多数人都容易理解和应用许多适用的解决方案。 一些解决方案(例如从JVM管理的堆中删除某些数据结构)更加复杂。 因此,如果您不熟悉此概念,我建议您继续学习我们最近如何减少…

Iphone 手机如何导入/导出通讯录

打开苹果云官网,选择「通讯录」,点击左下角的「设置」,可以看到导入/导出菜单 点击进入 icloud 官网

intellij远程调试_IntelliJ中的远程调试Wildfly应用程序

intellij远程调试远程调试Java应用程序意味着使用本地开发环境连接到远程运行的应用程序。 Java开箱即-agentlib:jdwp[options]支持远程调试:目标应用程序必须使用-agentlib:jdwp[options]选项执行, -agentlib:jdwp[options]选项加​​载Java调试线协议&…

微信小程序注册/登录接口开发

文章目录后端有关说明前端有关说明接口设计小程序注册/登录接口APP 注册/登录接口PC Web 端的注册/登录接口小程序注册/登录序列图校验 token后端有关说明 登录和注册的逻辑要独立抽取写成2个接口:注册接口、登录接口 小程序、APP、PC端的登录接口和注册接口要分开…

couchbase_使用Portworx和Couchbase的有状态容器

couchbase容器本应是短暂的,因此可以很好地扩展以用于无状态应用程序。 有状态的容器(例如Couchbase)需要区别对待。 管理Docker容器的持久性概述了如何管理有状态容器的持久性。 该博客将说明如何使用Docker Volume Plugins和Portworx创建有…

在 MyEclipse 中配置 tomcat

在 IDE 配置 tomcat 实则就是让 IDE 来管理 tomcat 配置 步骤 1 点击工具栏上的“Run/Stop/Restart MyEclipse Servers”图标旁边的下拉箭头 步骤 2 选择“Configure Server” 步骤 3 在弹出的对话框“Preferences”中展开“MyEclipse” – “Servers” – “Tomcat”–“To…

java 中怎么加汉字,jquery怎么向body里面增加文字

jquery如何向里面增加文字jsp代码是这样的:我想在页面加载时动态的将一行文字增加到里面,不知道为什么总是加不进去,js代码如下:$(document).ready(function(){if($("#type").val()"MESSAGE") {$(".ke-t…

MacBook 推出移动硬盘时总是提示有程序在使用它,如何解决?

如下图所示: 先使用命令 df -lh 在终端查看当前系统的所有硬盘,命令如下: liaowenxiongliaowenxiongdeMacBook-Air ~ % df -lh Filesystem Size Used Avail Capacity iused ifree %iused Mounted on /dev/disk1s5s1 234Gi…

java登录界面命令_Java命令行界面(第5部分):JewelCli

java登录界面命令细算在Java命令行处理与Apache的百科全书CLI , args4j , jbock和命令行中先前的文章,我把注意力转向在这个岗位使用JewelCli完成的命令行参数相似的处理Java中。 几个Java命令行处理库使用批注来定义命令行选项。 到目前为止…

matlab 三维图像配准,[转载]Matlab实现多种图像配准(转)

本文讲述如何利用Matlab Image Processing Toolbox中的图像配准工具实现线性正投影、仿射、投影、多项式、分段线性、局部加权平均配准的过程。实验平台X86 PC,Windows XP sp2, Matlab 7.1资源的获取matlab工具的使用方法:查看帮助mage Processing Toolb…

oauth2和jwt_OAuth2,JWT,Open-ID Connect和其他令人困惑的事物

oauth2和jwt免责声明 如果觉得我必须从一个重要的免责声明开始这篇文章: 不要太相信我要说的话。 我之所以这样说,是因为我们正在讨论安全性。 而且, 当您谈论安全性时,除了100%正确的陈述外,还有冒任何其他…

matlab的exec程序,C++调用Matlab画图的一段程序

劳动节闲来无事,写了一天程序,just for fun.看,这是C调用Matlab画图的一段程序。暂时不想多解释了,有兴趣的话,看看下面的代码吧。以下几段代码由上到下,越来越旧。最上面的是最新更新的版本。#include#inc…

java args_Java命令行界面(第2部分):args4j

java args在上一篇文章中 ,我研究了使用Apache Commons CLI在Java应用程序中解析命令行参数。 在本文中,我将使用另一个库args4j进行相同的操作。 args4j采用了一种不同于Commons CLI的方式来指定Java应用程序应期望的命令行参数。 尽管Commons CLI期望…

apache camel_Apache Camel中的短重试与长重试

apache camel《骆驼设计模式》一书介绍了20种模式以及用于设计基于Apache Camel的集成解决方案的众多技巧和最佳实践。 每种模式都基于真实的用例,并提供了Camel特定的实现细节和最佳实践。 为了让您有这本书的感觉,以下是该书的重试模式摘录&#xff0c…

mega5安装包_[MEGA DEAL] 2017年完全Java捆绑包(95%折扣)

mega5安装包深入了解编程奥德赛(58小时!),进入最常用的编程语言 嘿,怪胎, 本周,在我们的JCG Deals商店中 ,我们提供了一个极端的报价 。 我们提供的2017 Complete Java Bundle 仅…

matlab计算微分ppt,matlab-ch013(数值计算-微积分)20090923.ppt

matlab-ch013(数值计算-微积分)20090923.ppt 第13讲 数值计算 —微积分,张建瓴,13.1 数值积分,在工程教学和应用中,除了进行数据逼近外,还要求逼近曲线下面的面积,这就是积分问题。,一、数值积分方法,典型的数值积分方法有:用常数…

JDK 9中不推荐使用Java的Observer和Observable

在博客文章《 应用JDK 9 Deprecated增强功能》中 ,我讨论了JDK 9中 Deprecated批注中对forRemoval()和since()可选元素(方法)的添加 。 我在那篇文章中说:“在Java SE API上应用新的…