IntelliJ IDEA 学习笔记

来源:互联网 发布:烟台青少年编程培训 编辑:程序博客网 时间:2024/05/19 02:41

本文简单介绍IntelliJ IDEA里项目相关的几个重要概念,参考IntelliJ IDEA 简体中文专题教程,英文好的同学可以查看英文官网文档

Project 和 Module 介绍

  • ProjectModule 这两个概念是 IntelliJ IDEA 的必懂知识点之一
  • 在 IntelliJ IDEA 中 Project 是最顶级的级别,次级别是 Module。一个 Project 可以有多个 Module。目前主流的大型项目结构都是类似这种多 Module 结构,这类项目一般是这样划分的,比如:core Moduleweb Moduleplugin Modulesolr Module 等等,模块之间彼此可以相互依赖。通过这些 Module 的命名也可以看出,他们之间应该都是处于同一个项目业务情况下的模块,彼此之间是有不可分割的业务关系的
  • 一个 Project 是由一个或多个 Module 组成,模块之间尽量是处在同一个项目业务的的情况下,彼此之间互相依赖关联。这里用的是 尽量,因为 IntelliJ IDEA 的 Project 是一个没有具备任何编码设置、构建等开发功能的,主要起到一个项目定义、范围约束、规范等类型的效果,也许我们可以简单地理解为就是一个单纯的目录,只是这个目录命名上必须有其代表性的意义
  • spring-framework 项目为例理解多 Module 的结构
    • 项目主页:https://github.com/spring-projects/spring-framework
    • 该项目的 Project 命名是:spring-framework。该目录主要作用为各个 Module 的顶层目录进行约束,告诉协同者,这个目录下都是 spring-framework 相关的,我绝不会放 Android 相关源码、文档、文件在上面的。该目录并不是以一个实际性的目录来体现的,所以你访问主页是看不到的,但是当你 checkout 的时候,你必须为这个项目命名,至于命名默认就是 spring-framework
    • Project 下有二十来个 Module,各个 Module 的命名也是有含义的,比如:spring-corespring-jdbcspring-jmsspring-ormspring-webspring-webmvc 等等,我们通过这些命名也能清楚地知道他们要表达的含义,这些 Module 下也都各自有 src 编码目录,可以自行编码和构建
  • 相比较于多 Module 项目,小项目就无需搞得这么复杂。只有一个 Module 的结构 IntelliJ IDEA 也是支持的,并且 IntelliJ IDEA 创建项目的时候,默认就是单 Module 的结构的

SDK介绍

  按Ctrl + Shift + Alt + S 弹出项目结构设置区,如下

  这里写图片描述

  IntelliJ IDEA 支持 6 种 SDK。最常用的就是 JDK 和 Android SDK,其中在创建 Android SDK 的时候如果你没有先配置一个 JDK 的话,IntelliJ IDEA 则会提示你要先配置一个 JDK,然后才能配置 Android SDK,点击上图界面中的New...按钮后便可以进行新增SDK的操作,如下

  这里写图片描述

  由于 IntelliJ IDEA 支持管理多个 JDK,下拉会展示已经创建的所有 SDK,可以很方便地不同 SDK 中切换。所以在开发 Java 项目过程中,完全不用担心系统上不同项目需要不同 JDK的问题,如下

  这里写图片描述

  按Ctrl + Shift + Alt + S 弹出项目结构设置区,选择Platform Settings -> SDKs 如下

  这里写图片描述

  • SDKs 为 SDK 的统一管理处,注意不只是针对当前项目
  • 加号+可以添加新 SDK;减号-可以删除光标所选的 SDK

language level 介绍

  language level:限定项目编译检查时最低要求的 JDK 特性
  language level应该算是 IntelliJ IDEA 特有的,介绍了一些 Java JDK 在每个新版本里的新特性,而新版本一般也会向下兼容旧版本的特性,IntelliJ IDEA 是对这些 JDK 的新特性是这样介绍的

  这里写图片描述

  • 当我们使用 JDK 8 的时候,我们只能向下兼容 JDK 8 及其以下的特性,所以只能选择 8 及其以下的 language level。所以当我们项目使用的是 JDK 8,但是代码却没有使用 JDK 8 的新特性,最多使用了 JDK 7 的特性的时候我们可以选择 7 - Diamonds,ARM,multi-catch etc.
  • 假设我们有一个项目代码使用的 JDK 8 新特性:lambda 语法,但是 JDK 选择的却是 JDK 7,即使 language level 选择了 8 - Lambdas,type annotation etc.,也是没有多大意义的,一样会编译报错

Module 下的 SDK 和 language level

  对于大型项目,各个 Module 用到的 SDKlanguage level 很有可能是各不一样的,IntelliJ IDEA 对此也进行了支持 ,如下

  这里写图片描述

  这里写图片描述

原创粉丝点击