您的位置:首页 > 其它

IntelliJ IDEA 学习笔记 - 项目相关的几个重要概念介绍

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

Project 和 Module 介绍

Project
Module
这两个概念是 IntelliJ IDEA 的必懂知识点之一

在 IntelliJ IDEA 中
Project
是最顶级的级别,次级别是
Module
。一个
Project
可以有多个
Module
。目前主流的大型项目结构都是类似这种多
Module
结构,这类项目一般是这样划分的,比如:
core Module
web Module
plugin Module
solr 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-core
spring-jdbc
spring-jms
spring-orm
spring-web
spring-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
用到的
SDK
language level
很有可能是各不一样的,IntelliJ IDEA 对此也进行了支持 ,如下

  


  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  intellij idea