idea中project sdk_一文秒懂IDEA中每天都在用的Project Structure知识

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等。

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相关的知识体系,这也是一个思维和学习的模式。关注公众号“程序新视界”,为你提供更多类似的实战经验和知识积累。

到此这篇关于一文秒懂IDEA中每天都在用的Project Structure知识的文章就介绍到这了,更多相关IDEA Project Structure内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

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

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

相关文章

【开源项目】EasyCmd命令图形化软件

EasyCmd 项目地址:https://gitee.com/showmework/EasyCmd 最新版本:v0.2预览版 介绍 命令行图形化。 让命令行更易于使用,从命令行复杂的参数及语法中解放出来。 设计思想 软件设计思想并不是构建用户界面,现代操作系统已经…

php在线读取pdf文件大小_PDF转WORD在线转换器哪家强?

无论是工作还是日常生活中,经常需要将pdf转换成word文档进行编辑,我想大部分人一定是和我一样,首先会去找度娘帮忙,百度一下“pdf转word”出现了很多在线转换器,比如大家常用的讯捷、smallpdf等,然后立马进…

【转】wpf从我炫系列2----布局控件的使用(下)

4. GRID控件 Grid控件可以是说是wpf中功能最强大和使用最多的控件。它有点类似于HMTL网页布局中的表格&#xff0c;可以自定义行列显示&#xff0c;并可以合并某些行和列. 使用<Grid.RowDefinitions>可以定义GRID中的行数&#xff0c; 使用<Grid.ColumnDefi…

ios开发问题汇总(一)

教程汇总 IOS比较好的网络教程&#xff1a;IOS编程浅蓝教程IOS编程教程&#xff08;五&#xff09;自定义UITableView的表单元格菜鸟教程-iOS教程 开发问题 实现页面切换&#xff0c;网上某些文章写的是&#xff1a; [self.navigationController performSegueWithIdentifie…

oracle 建分区索引_Oracle分区表及分区索引-创建list分区

Oracle分区表及分区索引-创建list分区创建list分区的语法如上&#xff0c;需要我们指定的:lcolumn:分区依赖列(注意&#xff1a;只能是一个);lpartition:分区名称;lliteral:分区对应值(注意&#xff1a;每个分区可以对应多个值);l tablespace_clause:分区的存储属性&#xff0c…

【转】WPF从我炫系列3---内容控件的用法

今天我来给大家讲解WPF中内容控件的用法&#xff0c;在WPF中的内容控件&#xff0c;通俗的讲&#xff0c;是指具有Content属性的控件&#xff0c;在content属性里面可以嵌套放置任意其他类型的控件&#xff0c;但是Content只能接受单个元素&#xff0c;可以通过布局控件来组合放…

【iOS开发】添加评分功能

问题 openURL无法跳转到App store 报错 &#xff1a;Failed to open URL itms://itunes.apple.com/us/app/apple-store/idxxxxx 使用canOpenURL时&#xff0c;打印出了错误原因&#xff1a;error: “This app is not allowed to query for scheme itms”&#xff0c;显然是配置…

android 键盘遮盖输入框_Android各种键盘挡住输入框解决办法

原标题&#xff1a;Android各种键盘挡住输入框解决办法今日科技快讯C919大型客机首飞成功&#xff0c;让很多人激动不已。然而近日网上也出现了一些不同的声音&#xff1a;说这架飞机许多部件都是进口货&#xff0c;甚至有人说C919中国人只是造了个壳子。对此&#xff0c;业内人…

【转】WPF从我炫系列4---装饰控件的用法

在这一节的讲解中&#xff0c;我将为大家介绍WPF装饰控件的用法&#xff0c;主要为大家讲解一下几个控件的用法. ScrollViewer滚动条控件 Border边框控件 ViewBox自由缩放控件 1. ScrollViewer滚动条控件 大家知道在WPF中的一些布局控件中是不带滚动条的&#xff0c;如果里面…

windeployqt.exe的使用与避坑(windows平台)

1. 介绍 windeployqt.exe是Qt自带的工具&#xff0c;用于创建应用程序发布包。 简单来说&#xff0c;这个工具可以自动地将某程序依赖的库、资源拷贝到其所在目录&#xff0c;防止程序在其他电脑上运行报找不到库的错误。 这里贴上官方文档&#xff1a;https://doc.qt.io/qt-5…

【转】WPF从我炫系统5---基本控件的用法

今天我来给大家讲解WPF中一些基本控件的用法&#xff0c;所谓基本控件&#xff0c;就是我们最常用用到的一些控件&#xff0c;通过这一节的讲解&#xff0c;大家会对WPF中的控件的用法有一个更深入的了解。 1. 基本控件 LABEL控件 Label控件是我们最熟悉的控件&#x…

android自定义push通知_Android自定义Notification的一些坑

第一次在简书发文章&#xff0c;有问题多指教本篇介绍自定义通知样式时会遇到的一些坑,本篇旨在记录坑,而不在全面讲解自定义的方法坑文字颜色:强烈使用系统定义的文字颜色,否则需要固定背景色自定义View的尺寸: 建议自适应&#xff0c;因为不同系统高度会有差别不同系统版本的…

【微软官方文档】应用程序错误处理

https://docs.microsoft.com/zh-cn/windows/win32/debugging-and-error-handling

【转】在WPF中自定义控件

周银辉的开发博客(WPF) 在WPF中自定义控件(1) 一, 不一定需要自定义控件 在使用WPF以前,动辄使用自定义控件几乎成了惯性思维,比如需要一个带图片的按钮,但在WPF中此类任务却不需要如此大费周章,因为控件可以嵌套使用以及可以为控件外观打造一套新的样式就可以了.是否需要我们…

二叉树前序中序后序javascript_JavaScript数据结构与算法之二叉树遍历算法详解【先序、中序、后序】...

本文实例讲述了JavaScript数据结构与算法之二叉树遍历算法。分享给大家供大家参考&#xff0c;具体如下&#xff1a;javascript数据结构与算法--二叉树遍历(先序)先序遍历先访问根节点&#xff0c; 然后以同样方式访问左子树和右子树代码如下&#xff1a;/**二叉树中&#xff0…

Windows上快速在指定目录打开cmd.exe命令行的方法

前言 命令行在项目开发中使用频率很高&#xff0c;在指定目录中打开命令行也是很常见的需求&#xff0c;本文将介绍几种快速在指定目录打开cmd.exe命令行的方法&#xff0c;提高效率。 普通方式 运行->输入cmd.exe&#xff0c;点击确定&#xff0c;打开cmd.exe。 在cmd.…

【转】WPF默认控件模板的获取和资源词典的使用

一、获取默认的控件模板 WPF修改控件模板是修改外观最方便的方式&#xff0c;但是会出现不知道原来的控件的模板长什么样&#xff0c;或者如何在原有控件模板上修改的&#xff0c;下面就分享了获取某控件默认控件模板的方法&#xff08;以控件Button为例&#xff09;&#xff…

python设置默认密码_使用Python生成随机密码的示例分享

生成随机密码这件事情用python来干确实相当的方便&#xff0c;优美的string方法加上choice简直是绝配make_password.py###简单几行代码执行即可生成记不住的字符串###$ python make_passwd.pyDLrw9EiTQs4Wm84qRQwl4L2Lu9g0LgwWjHPtYdyU...$ python make_passwd.pyDLrw9EiTQs4Wm…

【微软官方文档】Windows终端(Windows Terminal)

https://docs.microsoft.com/zh-cn/windows/terminal/

【转】WPF Expander 收缩不占空间的用法

WPF 中 Expander 的&#xff0c;默认折叠状态&#xff0c;只是把内容隐藏&#xff0c;实际是还是占有空间的。按照下面的做法&#xff0c;可以是下面的控件&#xff0c;位置移动。 <StackPanel > <Expander Name"a" Header"xxxx">…