IDEA初探:深入理解 Structure 功能

image

一、Structure - 类视图

  Structure 是 IDEA 中的一个视图工具,它提供了对当前文件中结构元素的快速访问。通过 Structure,我们可以方便地查看和导航到代码中的各个部分,从而提高代码编辑和浏览的效率。

1.1 基本概念

  Structure 视图以树形结构展示了当前文件中的元素,包括类、方法、变量等。通过这个视图,可以快速定位到所需的代码元素,并进行编辑或跳转。

1.2 使用方法

  要打开 Structure 视图,也可以在菜单栏中选择 View > Tool Windows > Structure,或者使用 Alt+7 打开。
image

  这将在IntelliJ的右侧打开一个新的窗口,显示项目中所有类的结构。在该窗口中,可以查看类的层次结构、方法和属性,并且可以可以通过单击元素名称来快速跳转到代码中的相应位置。
image

  • sort

    选项说明
    Alphabetically按字母顺序对类中的元素进行排序。
    By Visibility按项的可见性按以下顺序对项进行排序:public - protected - package local - private。

    启用这两个选项后,视图中的项将根据其可见性级别进行分组。在每个可见性级别组中,项目按字母顺序排序。当这两个选项都处于禁用状态时,这些项将按它们在代码中的显示顺序显示。

  • Show

    选项说明
    Anonymous Classes在树视图中显示内部匿名类。
    Fields显示树中的所有字段(属性)。
    Inherited显示当前类继承的和可从该类访问的所有方法和字段。继承的成员显示为灰色,以区别于当前类中定义的成员。
    Lambdas显示树中的所有 lambda。
    Non-public显示所有非 public 类成员。关闭该选项可隐藏所有非公共成员。
    HTML Outline(仅适用于 HTML 文件)显示 HTML 文件的 HTML 5 轮廓
    DDL statements(仅适用于 SQL 文件)仅显示 DDL 语句
    DML statements(仅适用于 SQL 文件)仅显示 DML 语句
    Select statements(仅适用于 SQL 文件)仅显示语句
    Other(仅适用于 SQL 文件)仅显示不属于上述类别的语句。
  • Group

    选项说明
    Methods by Defining Type按定义类型的方法,将重写或实现特定类或接口的方法的所有方法分组到与该类或接口对应的节点下。
    Properties显示树中的 getter、setter 和字段。
    Group by type(仅适用于 SQL 文件)按类型对语句进行分组

1.3 实际应用

  在编写代码时,可以使用 Structure 视图来快速浏览和编辑类、方法或变量。例如,当想重命名一个类或方法时,可以在 Structure 视图中找到该元素,然后直接在视图中进行编辑,而无需进入源代码编辑模式。另外,Structure 视图还可以帮助快速查找某个元素在整个项目中的引用,从而提高重构代码的效率。

二、Project Structure - 项目结构

  本节介绍 IntelliJ IDEA 的 Project Structure 配置,包括如何打开、项目配置如Project name、SDK,以及Modules配置中的项目名称、JDK版本、目录结构和依赖。强调了保持项目一致性的重要性,并提供了导入、新建和配置Module的方法。

2.1 功能介绍

  在IDEA中构建项目,我们肯定离不开 Project Structure 即“项目结构”,它几乎涵盖了一个项目所有的个性化的配置项。一般我们可以在 File->Project Structure 打开下图这个面板,当然也可以通过快捷键 Ctrl+Alt+Shift+S(Windows/Linux)Command+Option+Shift+S(Mac) 打开这个面板,那么接下来我们就来看看这个面板上的内容。
image

配置项说明及备注
Project Settings项目级别的设置
Project项目设置项目级别的设置,用来指定项目名称、SDK版本、语言级别、编译文件输出路径。
Modules模块信息设置模块名称、模块目录结构、模块编译、JavaDoc和外部注释的输出路径、模块依赖
Libraries项目类库项目级别的类库管理,用来管理依赖包。
Facets项目特征翻译为特性,配置模块使用的框架、工具等信息,常见的有WEB、Spring等。
Artifacts项目成品将来将我们的工程的打包成什么产品(jar、war……)
Platform Settings全局设置
SDKs平台SDK一般来讲,全局的JDK都会配置在此处。
Global Libraries全局类库全局类库,所有的项目都可以使用这里配置的类库。
Problems项目问题在项目异常的时候很有用,可以根据提示进行项目修复。

2.2 Project Settings(项目设置)

Project - 项目基本信息

image

序号说明
项目名称,使用此字段编辑项目名称。
就个人而言,一般会将此处的项目名与项目目录名和pom文件中的name三处保持一致,同时也避免IDEA在左侧会显示多个名称标识。
目的SDK版本。项目下的所有模块,默认使用此SDK版本,每个模块也可以指定各自的SDK版本。
者边界选中的SDK,点击后跳转到Platform Settings 下的 SDKs列表。
选择项目的语言级别。即项目的编译级别,也可以理解为项目的最低支持语言版本。
不同的JDK版本选择,对代码的语法有一定的影响,比如选择JDK8以前的版本,那么代码中有基于Lambda的语法将会报错。
项目编译器输出,指定IntelliJ IDEA将存储编译结果的路径。
各个模块的编译文件,默认都放在此路径下,当然各模块也可以指定各自的存放路径。
可以自定义输出路径

Modules - 模块信息

  Module 可谓是重点中的重点,甚至是最重要。毕竟 Module 作为实际存在形式,所有的源代码、配置、依赖等都在这里,因此大有可学呀。Modules 中的配置用的比较多的情况就是一组项目时,可以配置独立每个项目的参数。包括项目名称、目录结构、输出路径、依赖等。
image

  下面分析一下图中标注的四项内容,其中第三和第四项属于Source选项的子项。

  • 第一项,加号可以导入、新增各类Module项目,当然后面的减号可以移除对应的项目。
  • 第二项,项目名称,使用方式与前面的一致,也同样建议多处保持一致。
  • 第三项,JDK版本,与Project中一样,但此处针对的是当前Module。
  • 第四项,项目目录结构。对Module的开发目录进行文件夹分类,不同类型的文件进行指定的文件类型。
Souces

  这里对 Module 的开发目录进行文件夹分类,就是说这个模块里有什么内容,说明了不同性质的内容放在哪里。这些不同内容的标记代表了一个标准Java工程的各项内容,IDEA就是根据这些标记来识别一个Java工程的各项内容。比如,它会用javac去编译标记为Sources的源码,打包的时候会把标记为Resources的资源拷贝到jar包中,并且忽略标记为Exluded的内容。左边显示的是在选中内容的预览。
image

  其中,Language level 即语言级别列表,使用此列表为模块选择Java语言级别,可用选项对应于JDK版本。而Sources 为模块的资源分类,标识出文件夹用途,哪些是源码,哪些是配置文件等。
image

Sources源码源代码存放的文件,蓝色,一般用于标注类似 src 这种可编译目录。
只有 Sources 这种可编译目录才可以新建 Java 类和包,这一点需要牢记。
Tests设置测试代码存放的文件件,绿色,一般用于标注可编译的单元测试目录。
Resources配置文件,如:log4j.properties,application.yml,一般用于标注资源文件目录。
Test Resources这个对应着Tests文件夹,存放着Tests代码的配置文件。
Excluded排除的目录,一般是编译文件的输出目录。
被排除的目录相当于被 IntelliJ IDEA 废弃,该目录下的代码文件是不具备代码检查和智能提示等常规代码功能。
Paths

  为模块配置编译器输出路径,还可以指定与模块关联的外部JavaDocs和外部注释的位置。
image

Compiler output编译输出路径。
Inherit project compile output path继承项目编译输出路径,选择此选项以使用为项目指定的路径。
即上面在Project选项中设置的out文件路径。
Use module compile output path使用模块编译输出路径,可分为以下:
Output path:编译输出路径。
Test output path:测试代码编译输出路径。
Exclude output paths: 选中此复选框可以排除输出目录。
JavaDoc使用可用控件组合与模块关联的外部JavaDocs存储位置的列表。
External Annotations外部注释。管理与模块关联的外部注释的位置(目录)列表。
Dependencies

  在此选项卡上,可以定义模块SDK并形成模块依赖关系列表。一个中大型项目一般有多个模块,它们各司其职。模块与模块之间一般都存在依赖关系,比如常见的xxx-core模块一般会被其它几乎所有模块所依赖。
image

Module SDK模块SDK,选择模块SDK。要将项目SDK与模块相关联,请选择Project SDK。
Export依赖列表。

Libraries - 项目类库

  管理项目的类库,模块中需要引用才能使用这里的类库,如下图所示。
在这里插入图片描述

Facets - 项目特征

  Facets 可理解为用于配置 Project 项目的框架区,它能看到项目的每个Module模块使用的框架、语言等情况,并且还可以对它们进行配置。比如Spring框架,如果某个模块使用了它就可以来这里统一配置。优点是你会发现借助IDEA强大的功能它都给你想好了哪些地方可配置,你可以更改,让你实现配置界面化。
image

  不同的Facet对应的最右端窗口内容配置项是不一样的,通过此视窗,可以看到你当前Project项目,哪些模块使用了Spring框架,哪些是web项目,一目了然。它有个非常大的作用就是站在Project的视角对每个模块进行整体把控,比如若你发现有个模块不需要是web项目(并不需要对外提供服务接口),那铁定就是多引包了或者职责不清晰导致的,就可立马针对性解决,消除隐患。

Artifacts - 项目成品

  在Maven大行其道的今天,虽然用IDEA打包很少使用了,但是有些时候它对你本地调试还是蛮有用的,并且对理解maven的打包依旧有效,来,了解一下。Artifacts 这个概念不是特别好理解,Artifact 是 maven 中的一个概念,表示某个模块要何种打包形式,例如 war exploded、war、jar 等。Artifact 是一个项目资源的组合体,整合编译后的 java 文件、资源文件等。对于一个 module 而言,有了 Artifacts 就可以部署到应用服务器中了。

说明:war 和 war exploded区别就是后者不压缩,开发时选后者便于实时看到修改文件后的效果。
image

  默认情况下,IDEA 的 Modules 和 Artifacts 的 output 目录已经设置好了,不需要更改。打成 war 包 的时候会自动在 WEB-INF 目录 下生产 classes 目录 ,然后把编译后的文件放进去。

  • Web Application:Exploded:这个是以文件夹形式发布项目,发布项目时就会自动生成文件夹在指定的output directory。
  • Web Application:Archive:就是war包形式,将项目打成一个war包在指定位置。

2.3 Platform Settings(平台设置)

SDKs

  所有的项目都可以使用这里配置的SDK,此处看一下图,操作比较简单,就不展开了。
image

小结

  本文对 IntelliJ IDEA 的项目结构 Project Structure 的每个页签进行了分析,很多小伙伴们觉得 IntelliJ IDEA 不需要专门的学习分析,会用它导入maven项目、跑跑main函数启动下Spring Boot就成啦,我却不以为然。衡量一个新手和一个高手的差异不是顺风顺水时,而是遇到问题时谁能够快速解决,谁又只能望洋兴叹,相信薪资的差异也体现在此。

在这里插入图片描述

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

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

相关文章

数据库文档插件 screw

pom 配置 <build><plugins><plugin><groupId>cn.smallbun.screw</groupId><artifactId>screw-maven-plugin</artifactId><version>1.0.5</version><dependencies><dependency><groupId>com.zaxxer<…

高效网络自动化:Python在网络基础中的应用

高效网络自动化&#xff1a;Python在网络基础中的应用 目录 &#x1f310; TCP/IP协议与网络层次模型&#x1f4bb; 使用socket编程实现网络通信&#x1f30d; HTTP协议与RESTful API的基本概念&#x1f4e1; 使用requests库进行HTTP请求和响应处理 1. &#x1f310; TCP/IP协…

数据结构-树

目录 概念 结点分类 根结点 结点的度&#xff08;De-gree&#xff09; 树的度 结点间关系 孩子&#xff08;Child&#xff09;、双亲&#xff08;Parent&#xff09; 兄弟&#xff08;Sibing&#xff09;、堂兄弟&#xff08;Cousins&#xff09; 祖先&#xff08;anc…

VAE中的“变分”什么

写在前面 VAE&#xff08;Variational Autoencoder&#xff09;&#xff0c;中文译为变分自编码器。其中AE&#xff08;Autoencoder&#xff09;很好理解。那“变分”指的是什么呢?—其实是“变分推断”。变分推断主要用在VAE的损失函数中&#xff0c;那变分推断是什么&#x…

C++ | Leetcode C++题解之第514题自由之路

题目&#xff1a; 题解&#xff1a; class Solution { public:int findRotateSteps(string ring, string key) {int n ring.size(), m key.size();vector<int> pos[26];for (int i 0; i < n; i) {pos[ring[i] - a].push_back(i);}vector<vector<int>>…

linux指令笔记

bash命令行讲解 lyt &#xff1a;是用户名 iZbp1i65rwtrfbmjetete2b2Z :这个是主机名 ~ &#xff1a;这个是当前目录 $ &#xff1a;这个是命令行提示符 每个指令都有不同的功能&#xff0c;大部分指令都可以带上选项来实现不同的效果。 一般指令和选项的格式&#xff1a;…

Linux 重启命令全解析:深入理解与应用指南

Linux 重启命令全解析&#xff1a;深入理解与应用指南 在 Linux 系统中&#xff0c;掌握正确的重启命令是确保系统稳定运行和进行必要维护的关键技能。本文将深入解析 Linux 中常见的重启命令&#xff0c;包括功能、用法、适用场景及注意事项。 一、reboot 命令 功能简介 re…

洛谷 P3130 [USACO15DEC] Counting Haybale P

原题链接 题目本质&#xff1a;线段树 感觉我对线段树稍有敏感&#xff0c;线段树一眼就看出来了&#xff0c;思路出来得也快&#xff0c;这道题也并不是很难。 解题思路&#xff1a; 这道题能看出来是线段树就基本成功一半了&#xff0c;区间修改区间查询&#xff0c;就基…

深入探索:深度学习在时间序列预测中的强大应用与实现

引言&#xff1a; 时间序列分析是数据科学和机器学习中一个重要的研究领域&#xff0c;广泛应用于金融市场、天气预报、能源管理、交通预测、健康监控等多个领域。时间序列数据具有顺序相关性&#xff0c;通常展示出时间上较强的依赖性&#xff0c;因此简单的传统回归模型往往…

使用微信免费的内容安全识别接口,UGC场景开发检测违规内容功能

大家好&#xff0c;我是小悟。 内容安全识别主要针对的是有UGC即用户生成内容的功能场景&#xff0c;通过结合内容安全的审核能力&#xff0c;应对文本、图片、音频内容类型下的敏感内容识别、涉黄内容识别、暴恐内容识别、辱骂内容识别等违规问题&#xff0c;可以提高审核效率…

【Docker大揭秘】

Docker 调试一天的血与泪的教训&#xff1a;设备条件&#xff1a;对应的build preparation相应的报错以及修改 作为记录 构建FASTLIO2启动docker获取镜像列出镜像运行containerdocker中实现宿主机与container中的文件互传 调试一天的血与泪的教训&#xff1a; 在DOCKER中跑通F…

ubuntu-开机黑屏问题快速解决方法

开机黑屏一般是由于显卡驱动出现问题导致。 快速解决方法&#xff1a; 通过ubuntu高级选项->recovery模式->resume->按esc即可进入recovery模式&#xff0c;进去后重装显卡驱动&#xff0c;重启即可解决。附加问题&#xff1a;ubuntu的默认显示管理器是gdm3,如果重…

海洋生物图像分割系统:算法改进策略

海洋生物图像分割系统源码&#xff06;数据集分享 [yolov8-seg-C2f-DiverseBranchBlock&#xff06;yolov8-seg-C2f-Faster-EMA等50全套改进创新点发刊_一键训练教程_Web前端展示] 1.研究背景与意义 项目参考ILSVRC ImageNet Large Scale Visual Recognition Challenge 项目…

PHP-FPM 性能配置优化

4 核 8 G 服务器大约可以开启 500 个 PHP-FPM&#xff0c;极限吞吐量在 580 qps &#xff08;Query Per Second 每秒查询数&#xff09;左右。 Nginx php-fpm 是怎么工作的&#xff1f; php-fpm 全称是 PHP FastCGI Process Manager 的简称&#xff0c;从名字可得知&#xff…

第十七周:机器学习

目录 摘要 Abstract 一、MCMC 1、马尔科夫链采样 step1 状态设定 step2 转移矩阵 step3 马尔科夫链的生成 step4 概率分布的估计 2、蒙特卡洛方法 step1 由一个分布产生随机变量 step2 用这些随机变量做实验 3、MCMC算法 4、参考文章 二、flow-based GAN 1、引…

【Linux网络】Linux网络基础入门:初识网络,理解网络协议

&#x1f4dd;个人主页&#x1f339;&#xff1a;Eternity._ ⏩收录专栏⏪&#xff1a;Linux “ 登神长阶 ” &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339; ❀Linux网络 &#x1f4d2;1. 计算机网络背景发展历程"协议" &#x1f4dc;2. 网络协…

UML外卖系统报告(包含具体需求分析)

1、系统背景 随着互联网技术的快速发展&#xff0c;外卖订餐服务逐渐成为人们生活中的一部分。传统的电话订餐方式面临诸多不便和限制&#xff0c;而基于互联网的外卖订餐系统则提供了更加便捷、快速和高效的订餐服务。这种系统通过将餐厅、顾客和配送人员连接起来&#xff0c…

Sentinel详解

参考博客&#xff1a; SpringCloud Sentinel集成到微服务项目中&#xff08;保姆级教程&#xff09; 什么是Sentinel Sentinel 是面向分布式服务架构的轻量级流量控制产品&#xff0c;主要以流量为切入点&#xff0c;从流量控制、熔断降级、系统负载保护等多个维度来保护服务…

Vue学习记录之二十五 Vue3中Web Componets的使用

一、webcomponets介绍 在Vue 3中使用Web Components可以通过多种方式实现。Web Components是一组允许你创建可重用、封装良好的自定义元素的标准技术。它们包括Custom Elements、Shadow DOM、HTML Templates等。 Vue3 支持原生模式&#xff0c;可以让单个文件的js,css,html以h…

移植rv1106SDK的ipcweb到ubuntu

移植minilogger 在sdk中找到minilogger&#xff0c;复制到任意的文件夹&#xff0c;执行 cmake ./ make make install把minilogger 安装到系统 修改Makefile 在上次那个基础上&#xff0c;修改Makefile #* 这里原来要包含../Makefile.param&#xff0c;但含有sdk的很多参数…