1, 项目配置的理解
IDEA 中最重要的各种设置项, 就是这个 Project Structre 了, 关乎你的项目运行, 缺胳膊少腿都不行. 最近公司正好也是用之前自己比较熟悉的 IDEA 而不是 Eclipse, 为了更深入理解和使用, 就找来各种资料再研究一下, 这里整理后来个输出.
1.1 Project
Project name: 定义项目的名称;
Project SDK: 设置该项目使用的 JDK, 也可以在此处新添加其他版本的 JDK;
Project language level: 这个和 JDK 的类似, 区别在于, 假如你设置了 JDK1.8, 却只用到 1.6 的特性, 那么这里可以设置语言等级为 1.6, 这个是限定项目编译检查时最低要求的 JDK 特性;
Project compiler output: 项目中的默认编译输出总目录, 如图黄色部分, 实际上每个模块可以自己设置特殊的输出目录(Modules - (project) - Paths - Use module compile output path), 所以这个设置有点鸡肋.
1.2 Modules
1.2.1 增删子项目
一个项目中可以有多个子项目, 每个子项目相当于一个模块. 一般我们项目只是单独的一个, IntelliJ IDEA 默认也是单子项目的形式, 所以只需要配置一个模块.
(此处的两个项目引入仅作示例参考)
1.2.2 子项目配置
每个子项目都对应了 Sources,Paths,Dependencies 三大配置选项:
Sources: 显示项目的目录资源, 那些是项目部署的时候需要的目录, 不同颜色代表不同的类型;
Paths: 可以指定项目的编译输出目录, 即项目类和测试类的编译输出地址(替换掉了 Project 的默认输出地址)
Dependencies: 项目的依赖
1.2.3 增删框架(web 部署 - 1)
每个子项目之下都可以定义它所使用的框架, 这里重点说明一下 Web 部分的设置.
1.3 Libraries
这里可以显示所添加的 jar 包, 同时也可以添加 jar 包, 并且可以把多个 jar 放在一个组里面, 类似于 jar 包整理.
这里默认将每个 jar 包做为了一个单独的组(未测试, 待定).
1.4 Facets
官方的解释是:
- When you select a framework (a facet) in the element selector pane, the settings for the framework are shown in the right-hand part of the dialog.
- (当你在左边选择面板点击某个技术框架, 右边将会显示这个框架的一些设置)
说实话, 并没有感觉到有什么作用.
1.5 Artifacts(Web 部署 - 2)
项目的打包部署设置, 这个是项目配置里面比较关键的地方, 重点说一下.
先理解下它的含义, 来看看官方定义的 artifacts:
An artifact is an assembly of your project assets that you put together to test, deploy or distribute your software solution or its part. Examples are a collection of compiled Java classes or a Java application packaged in a Java archive, a Web application as a directory structure or a Web application archive, etc.
即编译后的 Java 类, Web 资源等的整合, 用以测试, 部署等工作. 再白话一点, 就是说某个 module 要如何打包, 例如 war exploded,war,jar,ear 等等这种打包形式. 某个 module 有了 Artifacts 就可以部署到应用服务器中了.
(
*jar:Java ARchive, 通常用于聚合大量的 Java 类文件, 相关的元数据和资源 (文本, 图片等) 文件到一个文件, 以便分发 Java 平台应用软件或库;
*
war:Web application ARchive, 一种 JAR 文件, 其中包含用来分发的 JSP,Java Servlet,Java 类, xml 文件, 标签库, 静态网页(html 和相关文件), 以及构成 Web 应用程序的其他资源;
exploded: 在这里你可以理解为展开, 不压缩的意思. 也就是 war,jar 等产出物没压缩前的目录结构. 建议在开发的时候使用这种模式, 便于修改了文件的效果立刻显现出来.
)
默认情况下, IDEA 的 Modules 和 Artifacts 的 output 目录已经设置好了, 不需要更改, 打成 war 包的时候会自动在 Web-INF 目录下生成 classes, 然后把编译后的文件放进去.
你可能对这里的输出目录不太理解, 之前不是配置过了文件编译的输出目录了吗? 为什么这里还有一个整合这些资源的目录呢? 它又做了哪些事呢?
其实, 实际上, 当你点击运行 tomcat 时, 默认就开始做以下事情:
编译, IDEA 在保存 / 自动保存后不会做编译, 不像 Eclipse 的保存即编译, 因此在运行 server 前会做一次编译. 编译后 class 文件存放在指定的项目编译输出目录下(见 1.2.2);
根据 artifact 中的设定对目录结构进行创建;
拷贝 Web 资源的根目录下的所有文件到 artifact 的目录下(见 1.2.3);
拷贝编译输出目录下的 classes 目录到 artifact 下的 Web-INF 下(见 1.2.2);
拷贝 lib 目录下所需的 jar 包到 artifact 下的 WEB_INF 下;
运行 server, 运行成功后, 如有需要, 会自动打开浏览器访问指定 url.
在这里还要注意的是, 配置完成的 artifact, 需要在 tomcat 中进行添加:
2, 参考链接
IntelliJ IDEA 项目相关的几个重要概念介绍
- [Dependencies Tab]( structure)
- [Facet Page]( structure)
- Working with Artifacts
Intellij IDEA 14.x 中的 Facets 和 Artifacts 的区别 https://www.cnblogs.com/52php/p/5677661.html
IntelliJ 使用指南 -- 深入理解 IntelliJ 的 Web 部署逻辑 http://white-crucifix.iteye.com/blog/2070830
IntelliJ IDEA Web 项目的部署配置 https://my.oschina.net/lujianing/blog/186737
转载于博客 https://www.cnblogs.com/deng-cc/p/6416332.html , 感谢
来源: http://www.bubuko.com/infodetail-3495621.html