IDEA的Project Structure,你了解多少?
ztj100 2024-12-11 18:24 12 浏览 0 评论
Idea这款开发工具的便利之一是很多配置项几乎可直接使用默认项。但针对不同的项目难免需要针对性的配置,本文带大家详细的梳理一遍Project Structure中各项功能,注意收藏,以备不时之需。
先说一下写本文的缘由,在项目中用Idea中打开一组SpringBoot项目,结果编译的结果和日志输出的地方与预期不一致,于是仔细研究了Project Structure的配置项,发现此处竟然有很多有用的功能,汇总分享给大家。
Project Structure即“项目结构”,它几乎涵盖了一个项目所有的个性化的配置项,包括Modules,Facets,Libraries, Artifacts和SDK等板块的功能。
打开项目结构的方式
开启项目结构配置有两种方式,一种方式是点击上图①位置的图标便可直接打开相关的配置界面。
另外一种方式便是通过快捷键打开。Windows操作系统,默认快捷键为“Ctrl+Shift+Alt+S”;Mac操作系统默认快捷键为“command + ;”组合。
第一种方式如果找不到对应配置,教大家一个使用Idea时的一个大招:“Help”搜索。
点开Help菜单,输入Project关键字进行搜索,默认会匹配到所有与Project关键字相关的选项,当鼠标移动到对应结果上时,左边会自动显示对应内容所在的菜单位置,当然你也可以直接点击打开。
不仅此处可以如此操作,大多数操作都可以如此,是不是用起来非常爽!
Project配置项
一般情况下,打开之后第一个默认选中的显示内容便是Project了。重点看一下图中的1、2、3、4项。
第一项,Project name,项目名。就个人而言,一般会将此处的项目名与项目目录名和pom文件中的name三处保持一致。避免不一致,同时也避免IDEA在左侧会显示多个名称标识。
如果打开的是一组项目,比如都说springboot的项目,此处本人会改为类似springboot-all这样的名称,而不是其中一个(默认是第一个)项目的名称。
第二项,Project SDK。配置项目的SDK使用,这项平时使用的比较多,比如新打开一个项目,要查看一下SDK版本是否与预期的一致。也可以在右边的Edit进行SDK的编辑。
此处点击编辑会跳到Platform Settings中的SDKs处进行操作。此处看一下图,操作比较简单,就不展开了。
第三项,Project language level。选择要支持的Java语言级别。如果是多个Module(可以理解为一组项目)的话,对所有Module生效。
不同的JDK版本选择,对代码的语法有一定的影响,比如选择JDK8以前的版本,那么代码中有基于Lambda的语法将会报错。目前使用最多的当属JDK8了,当然如果你的项目比较古老或比较新,也可以选择其他的版本。
第四项,Project compiler output。指定IntelliJ IDEA将存储编译结果的路径。
开篇时说的问题就在此。针对单个项目,可以在配置一个输出路径,同时也可以在后面提到的Module中进行独立配置。
但对于多个Module项目时,会出现大家共用一个output目录。此时如果输出的日志文件路径用“./log”这种形式时,日志可能并不会打印到其中的子项目中,而是输出在此处指定的路径下了。
Modules配置项
Modules中的配置用的比较多的情况就是一组项目时,可以配置独立每个项目的参数。包括项目名称,目录结构,输出路径,依赖等。
下面分析一下图中标注的四项内容,其中第三和第四项属于Source选项的子项。
第一项,加号可以导入、新增各类Module项目,当然后面的减号可以移除对应的项目。
第二项,项目名称,使用方式与前面的一致,也同样建议多处保持一致。
第三项,JDK版本,与Project中一样,但此处针对的是当前Module。
第四项,项目目录结构。对Module的开发目录进行文件夹分类,不同类型的文件进行指定的文件类型。上面分了Sources、Test、Resources、Test Resources、Excluded。
顾名思义,Sources放的是Java源码,Test放的是测试的源码,Resources放的是资源文件,Test Resources放的是测试使用的资源文件,Excluded是排除项(比如编译后的trarget目录)。
此处使用比较多的场景是新增文件夹。右击一个顶层目录,弹出“New Folder”创建目录,随后可以对新增的文件夹进行类型指定。常见的情况比如创建的项目没有test或Test Resources,可在此处进行添加目录,然后指定目录类型。
与Sources选项平级的还有Paths和Dependencies。这两项操作都比较简单,Paths用来指定编译输出路径。
一般采用默认值即可。其中,Inherit projecty compile output path继承项目编译输出路径,使用为项目指定的路径。即在Project选项中设置的out文件路径。
Use module compile output path,使用模块编译输出路径;Output path为编译输出路径;Test output path为测试代码编译输出路径。
下面的JavaDoc使用可用控件组合与模块关联的外部JavaDocs存储位置的列表。不常用,就不具体演示了。
另外一个是Dependencies,主要配置jar包依赖相关的内容。
这里同样可以配置JDK,还可以通过下面的加号引入其他依赖,同时还可以配置对应jar包所对应的Scope。
上面讲解了多处JDK配置的选项,如果在实战过程中出现JDK版本修改或不一致的问题,建议从头到尾查看一下各处JDK的版本是否有问题。
Libraries选项配置
Libraries选项卡里,可以定义模块SDK并形成模块依赖关系列表。
通过加号里面的操作可以创建一个新的项目库,可以设置分类,可以删除等操作。
Facets选项配置
Facets选项主要用来表示module的特征,比如Web、Spring、Hibernate等。
上图以Spring Boot项目为例,可看到项目的配置文件、启动类、MVC等相关特性。如果是web项目,还可以看到下面的一些信息(图片来源于网络)。
Artifacts选项配置
Artifact是maven中的一个概念。这里表示module打包成什么形式,比如:war exploded、war、jar等;
这种形式在基于SpringBoot项目时很少使用了,基于Web打war包的形式时使用的比较多。
其中web项目有exploded类型,这里可理解为不归档的意思,也就直接把文件夹、jsp页面、classes进行部署到容器里面。建议在开发时使用此模式,便于热部署。
默认情况下,IDEA的Modules和Artifacts的output目录 已设置好,不需要更改。打war包时会自动在WEB-INF目录下生成classes目录,并把编译后的文件放进去。
其他选项
关于其他选项就不多说了,不太常用。其中,SDKs选项为系统开发工具,全局SDK配置,新增JDK版本什么的都可以在此配置。Global libraries是全局类库,可以配置一些常用的类库。Problems在项目异常的时可以根据提示进行项目修复(FIXED)。
小结
因项目实战过程中的一个问题,研究拓展出整个Project Structure相关的知识体系,这也是一个思维和学习的模式。首发于关注公众号“程序新视界”,为你提供更多类似的实战经验和知识积累。
相关推荐
- 使用Python编写Ping监测程序(python 测验)
-
Ping是一种常用的网络诊断工具,它可以测试两台计算机之间的连通性;如果您需要监测某个IP地址的连通情况,可以使用Python编写一个Ping监测程序;本文将介绍如何使用Python编写Ping监测程...
- 批量ping!有了这个小工具,python再也香不了一点
-
号主:老杨丨11年资深网络工程师,更多网工提升干货,请关注公众号:网络工程师俱乐部下午好,我的网工朋友。在咱们网工的日常工作中,经常需要检测多个IP地址的连通性。不知道你是否也有这样的经历:对着电脑屏...
- python之ping主机(python获取ping结果)
-
#coding=utf-8frompythonpingimportpingforiinrange(100,255):ip='192.168.1.'+...
- 网站安全提速秘籍!Nginx配置HTTPS+反向代理实战指南
-
太好了,你直接问到重点场景了:Nginx+HTTPS+反向代理,这个组合是现代Web架构中最常见的一种部署方式。咱们就从理论原理→实操配置→常见问题排查→高级玩法一层层剖开说,...
- Vue开发中使用iframe(vue 使用iframe)
-
内容:iframe全屏显示...
- Vue3项目实践-第五篇(改造登录页-Axios模拟请求数据)
-
本文将介绍以下内容:项目中的public目录和访问静态资源文件的方法使用json文件代替http模拟请求使用Axios直接访问json文件改造登录页,配合Axios进行登录请求,并...
- Vue基础四——Vue-router配置子路由
-
我们上节课初步了解Vue-router的初步知识,也学会了基本的跳转,那我们这节课学习一下子菜单的路由方式,也叫子路由。子路由的情况一般用在一个页面有他的基础模版,然后它下面的页面都隶属于这个模版,只...
- Vue3.0权限管理实现流程【实践】(vue权限管理系统教程)
-
作者:lxcan转发链接:https://segmentfault.com/a/1190000022431839一、整体思路...
- swiper在vue中正确的使用方法(vue中如何使用swiper)
-
swiper是网页中非常强大的一款轮播插件,说是轮播插件都不恰当,因为它能做的事情太多了,swiper在vue下也是能用的,需要依赖专门的vue-swiper插件,因为vue是没有操作dom的逻辑的,...
- Vue怎么实现权限管理?控制到按钮级别的权限怎么做?
-
在Vue项目中实现权限管理,尤其是控制到按钮级别的权限控制,通常包括以下几个方面:一、权限管理的层级划分...
- 【Vue3】保姆级毫无废话的进阶到实战教程 - 01
-
作为一个React、Vue双修选手,在Vue3逐渐稳定下来之后,是时候摸摸Vue3了。Vue3的变化不可谓不大,所以,本系列主要通过对Vue3中的一些BigChanges做...
- Vue3开发极简入门(13):编程式导航路由
-
前面几节文章,写的都是配置路由。但是在实际项目中,下面这种路由导航的写法才是最常用的:比如登录页面,服务端校验成功后,跳转至系统功能页面;通过浏览器输入URL直接进入系统功能页面后,读取本地存储的To...
- vue路由同页面重定向(vue路由重定向到外部url)
-
在Vue中,可以使用路由的重定向功能来实现同页面的重定向。首先,在路由配置文件(通常是`router/index.js`)中,定义一个新的路由,用于重定向到同一个页面。例如,我们可以定义一个名为`Re...
- 那个 Vue 的路由,路由是干什么用的?
-
在Vue里,路由就像“页面导航的指挥官”,专门负责管理页面(组件)的切换和显示逻辑。简单来说,它能让单页应用(SPA)像多页应用一样实现“不同URL对应不同页面”的效果,但整个过程不会刷新网页。一、路...
- Vue3项目投屏功能开发!(vue投票功能)
-
最近接了个大屏项目,产品想在不同的显示器上展示大屏项目不同的页面,做出来的效果图大概长这样...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- idea eval reset (50)
- vue dispatch (70)
- update canceled (42)
- order by asc (53)
- spring gateway (67)
- 简单代码编程 贪吃蛇 (40)
- transforms.resize (33)
- redisson trylock (35)
- 卸载node (35)
- np.reshape (33)
- torch.arange (34)
- npm 源 (35)
- vue3 deep (35)
- win10 ssh (35)
- vue foreach (34)
- idea设置编码为utf8 (35)
- vue 数组添加元素 (34)
- std find (34)
- tablefield注解用途 (35)
- python str转json (34)
- java websocket客户端 (34)
- tensor.view (34)
- java jackson (34)
- vmware17pro最新密钥 (34)
- mysql单表最大数据量 (35)