首页 > 其他分享 >IDEA项目结构

IDEA项目结构

时间:2023-10-28 14:44:19浏览次数:49  
标签:web Java 项目 IDEA 模块 war 结构

目录

IDEA项目结构

project

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

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

module

模块是一个独立的功能单元,可以独立地运行、测试和调试。模块包括诸如源代码、构建脚本、单元测试、部署描述符、依赖管理等。在一个项目中,每个模块都可以使用特定的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版本,一个工程可以包含多个模块(module),一个项目包含一个或多个模块,比如Web模块、Spring模块,还要配好这些模块的配置信息。我们通过Library把我们项目中所需依赖JAR包导好。

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

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

标签:web,Java,项目,IDEA,模块,war,结构
From: https://www.cnblogs.com/mumuyinxin/p/17794066.html

相关文章

  • 评论功能的选择难题:数据结构如何选定?
    尊敬的小伙伴们,大家好!我是小米,一个热爱技术、热衷分享的90后程序员。今天,我要和大家一起探讨一个在软件开发中常见,却又充满深度的话题——"面试题:评论功能采用什么数据结构?"。在这个数字化时代,几乎每个应用程序都需要实现评论功能。无论是社交媒体、电子商务网站还是新闻阅读应用,评......
  • 西北电专大二电院_数据结构上机报告记录_第二次上机报告
    第二次上机报告只要求提交了顺序串和顺序栈的基本操作的实现,这里把剩下两个也补充上去 顺序栈——进制转换1.问题描述本程序基于栈功能实现一个进制转换程序。(用顺序栈完成此题)InitStack()函数用于构造一个空栈;StackEmpty()函数用于判断栈是不是空栈;Push()函数实现将......
  • 数据结构与算法 → 深入数据结构
    前置知识前端数据及结构-链表-单向链表......
  • 西北电专大二电院_数据结构上机报告记录_第一次上机报告
    数据结构是最近纳入电院的必修主课,但是其期末考核是笔试形式(,日常有上机安排。这门课还是需要一定的课后上机练习和调试来增加对其的认识程度、发现自己欠缺的知识、可能犯下的错误,包括但不限于语法等这里主要收录几次上机安排的报告和自己的答案,作为记录 第一次上机问题一:顺......
  • C++ 语法结构--堆
    1.堆介绍「堆heap」是一种满足特定条件的完全二叉树,主要可分为图8-1所示的两种类型。「大顶堆maxheap」:任意节点的值其子节点的值。「小顶堆minheap」:任意节点的值其子节点的值。堆作为完全二叉树的一个特例,具有以下特性。最底层节点靠左填充,其他层的节点都被填......
  • JAVA-EE在不使用MVC分层的情况下用一个servlet完成转账业务------Java-Web项目
    在不使用MVC分层的情况下用一个servlet完成转账业务packagecom.bjpowernode.Bank.servlet;importcom.bjpowernode.Bank.exception.AppException;importcom.bjpowernode.Bank.exception.MoneyNotEnoughException;importcom.bjpowernode.oa.utils.DBUtil;importjakarta.ser......
  • 指针的基础认识及其结构
    #include<iostream>usingnamespacestd;intmain(intargc,char**argv){ inta=10; //声明指针p int*p; //将指针p指向变量a的内存地址 p=&a; cout<<"a的值="<<a<<endl; cout<<"a的内存地址="<<p<<endl; cout&l......
  • 实现动态大数结构
      大数结构是一种常见的数据结构,在C++当中,我们常用vector来动态实现。除此之外,我们也可以仿照vector的思路,自己实现内存的动态分配,当内存容量达到上限时,用C-apirealloc进行内存的重新分配。#defineREQUIRE2(p,q)assert((p)||(q))#defineREQUIRE1(p)assert(p)#define......
  • vue 使用filter 把无限极分类遍历为树形结构
    <scriptsetuplang="ts">interfacelistType{id:numberurl:string}constdata=[{id:1,url:'/_nuxt/assets/images/america.png'},{id:2,url:'/_nuxt/assets/image......
  • 数据结构-顺序表
    一、概念1.顺序存储顺序存储结构,是指用一段地址连续的存储单元依次存储线性表的数据元素2.存储方式在编程语言中,用一维数组来实现顺序存储结构,在C语言中,把第一个数据元素存储到下标为0的位置中,把第2个数据元素存储到下标为1的位置中,以此类推。3.长度和容量数组的长度指的是数组......