ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

IDEA项目结构:5分钟理解区分IDEA中的project、module、facet、artifact、Library、JAR和WAR

2022-07-27 19:35:50  阅读:118  来源: 互联网

标签:web Java 项目 JAR IDEA facet 模块


概述

大家遇见问题百度时,往往查百度得到的博客五花八门,只讲操作,也不解释为什么这么操作。我认为只有明确了IDEA的工作原理,才能熟练掌握各种繁琐的配置。一文读懂IDEA关于项目类别的划分,就算以后遇见了问题,也能搞懂自己在配什么,而不是跟着百度的教程鹦鹉学舌,照猫画虎。

文末有我自己总结的非常精短的总结。
project

idea中没有工作空间的概念,每一个项目都是一个工作空间,一个项目将一个项目的所有源代码、库和指令封装到一个单独的组织单元中。使用IntelliJ平台SDK完成的所有工作。项目定义了称为模块和库的集合。

project下的module的概念类似于eclipse中的project。一个聚合项目可以配置多个module(可以当作workspace来用)。

配置project

module

模块是一个独立的功能单元,可以独立地运行、测试和调试。模块包括诸如源代码、构建脚本、单元测试、部署描述符、依赖管理等。在一个项目中,每个模块都可以使用特定的SDK或继承在项目级别定义的SDK(参见本文下面的SDK部分)。一个模块可以依赖于项目的其他模块。

一个项目可以有一个或多个模块,比如Spring,Web。这些模块都是现有的,可用的。

Library

库是模型依赖的代码集合文件(比如JAR文件),可以从自己选择jar包或者用maven。

Facet

facet声明了每个模块使用技术的一些配置。一个模块可能有多个facet。Spring模块的配置就声明在Spring facet中。

Spring 的主类和配置文件是Spring的一些配置,但是不告诉IDEA在哪他自己是不知道在哪的,所以在facet中要写清楚在什么地方(默认会配好)。

在web模块中,需要配置web.xml和web资源目录的位置,也可以直接用默认的,一般我们建立/src/main/webapp。

web资源目录的文件夹有一个小蓝点,访问路径时"/"就是从这里开始找资源的。

artifact

artifact是放在一起测试、部署或发布您的软件解决方案或其部分的项目资产的集合(结合maven)。例如,已编译的Java类的集合或打包在Java归档中的Java应用程序、作为目录结构的Web应用程序等等。

artifact就是为了打包成为jar或war的一个配置声明。比如你想分享你的项目给小明或者想把项目发布到Tomcat上,如何分享或发布?java提供了专门打包的方法,就是jar和war,而打成JAR和WAR必须需要有一个artifact。

jar、war、exploded

jar:Java ARchive,通常用于聚合大量的Java类文件、相关的元数据和资源(文本、图片等)文件到一个文件,以便分发Java平台应用软件或库;

war:Web application ARchive,一种JAR文件,其中包含用来分发的JSP、Java Servlet、Java类、XML文件、标签库、静态网页(HTML和相关文件),以及构成Web应用程序的其他资源;

exploded:在这里你可以理解为展开,不压缩的意思。也就是war、jar等产出物没压缩前的目录结构。建议在开发的时候使用这种模式,便于修改了文件的效果立刻显现出来。
总结

简单总结一下,方面大家理解。

IDEA中工程(project)配好我们的JDK版本,一个工程可以包含多个模块(moduel),我们开发的一个项目包含一个或多个模块,比如Web模块、Spring模块,还要配好这些模块的配置信息。我们通过Library把我们项目中所需依赖JAR包导好。

Facet声明了我们每个模块使用技术的配置(注意和moduel结合区分理解),最重要的是在这里配好web.xml和web资源目录的位置。

在我们把项目发布到Tomcat或导出成JAR包之前,我们需要把项目打成artifact来方面部署,通常我们选择war_exploded热部署。
参考文章

    https://www.jianshu.com/p/31415cba4117
    https://www.cnblogs.com/wl-blog/archive/2004/01/13/13758075.html

标签:web,Java,项目,JAR,IDEA,facet,模块
来源: https://www.cnblogs.com/tiancai/p/16525996.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有