基于IDEA的Maven简单工程创建及结构分析
目录
一、用 mvn 命令创建项目
二、用 IDEA 的方式来创建 Maven 项目。
(1)首先在 IDEA 下的 Maven 配置要已经确保完成。
(2)第二步去 new 一个 project (创建一个新工程)
(3)创建成功(一个简单的 Maven 项目)
三、项目结构
(1)分析一下刚刚我们创建的一个基础的 Maven 项目。(或叫 "脚手架")
(2)依次介绍各个文件或者文件夹的作用。
1、pom.xml
2、然后就是 src 文件夹下的两个平行文件夹:main 和 test
四、采用约定的目录结构的意义
五、约定大于配置
一、用 mvn 命令创建项目
通过一个 mvn 命令直接让我们创建一个 Maven 的脚手架。
简单说:就是已经帮我们规定了整个项目的结构的这样的一个 Maven 项目。
- mvn archetype : generate (作者没验证不知道对不对,但是绝对有这回事...)
操作展示(随便创建一个文件夹 SSM ,再在其之中打开 cmd 命令行尝试运行,这里我就不学了,了解知道就行)
二、用 IDEA 的方式来创建 Maven 项目。
(1)首先在 IDEA 下的 Maven 配置要已经确保完成。

(2)第二步去 new 一个 project (创建一个新工程)
语言选择:Java ,构建的系统(build system)选择:Maven

(3)创建成功(一个简单的 Maven 项目)

三、项目结构
(1)分析一下刚刚我们创建的一个基础的 Maven 项目。(或叫 "脚手架")

1、它是相当于整个一些代码部分的基础设施,这里面的文件夹采用的是约定的方式。
(就是我们必须要在它指定的文件夹里面放上指定的文件)
2、所以我们必须要知道它的整个项目结构,才能知道哪个文件夹里放哪些文件。
(2)依次介绍各个文件或者文件夹的作用。
1、pom.xml
- 它是 Maven 当中最重要的一个文件了,也是最标志性的一个文件了。
- 一个 Maven 项目当中必须有一个 pom.xml 文件。
- 所以说:pom.xml 标志着当前是一个 Maven 项目。
- 学习 Maven 其实就是去学习如何编写 pom.xml 的文件。然后它其实就是 Maven 项目的一个配置文件,后面会学习怎么去写 pom.xml 的一些配置。
2、然后就是 src 文件夹下的两个平行文件夹:main 和 test
- 也都有 java 文件夹,其实也都有 resource 文件夹。
(这里帮忙生成的"脚手架"在 test 文件夹里没有,需要时可以自己去建,默认结构里没有)
- main 文件夹:主要放的是我们项目的主体文件,就是我们开发项目需要用到的一些Java类、一些配置文件就放在 main 文件夹里面。
- test 文件夹:就是放一些我们的一些单元测试
- java 文件夹:放 .java 文件,比如创建一个 java类
- com.fei :它是我们的包,通过 groupid 生成的一个包(暂时这么理解,这个很重要)
- Main :这个类其实没啥作用,就是生成一个 main() 方法,不需要可以删去。
- resources :它里面可以放的文件就很广了。
(除了 .java 文件,都可以放在这个resources 里面,其实就是一些配置文件、静态资源文件:.html、.css、.js 等等,还有一些模板页:jsp)
例如:" .xml "(配置文件)、" .properties "(属性文件)、" .yml "(学 SpringBoot 时的配置文件)
当我们在写代码去开发一个项目时,写的最多的就是 " .java " 文件,其次就是配置文件 " .xml " 。
- 关于 test 文件补充:如果想在单元测试中,用一些测试才会用到的配置,就单独在 test 文件夹当中新建一个 resources 文件夹,通常不用。然后里面的 java 文件夹,也是一样的,放 " .java " 文件
四、采用约定的目录结构的意义
也就是要在指定的文件夹放上规定的文件。这样才能够让它知道去某一个文件夹里拿到某个文件。
1、Maven 为了让构建过程能够尽可能自动化完成,所以必须约定目录结构的作用。
2、例如: Maven 执行编译操作,必须先去Java源程序目录读取Java源代码,然后执行编译,最后把编译结果存放在target目录。
3、就比如去resources 文件夹里面创建一个java类,就会显示一个图标。它不会让你编译,不理这个文件。因为它已经约定了,不允许你放,但是偏要放,它就不会让编译。

五、约定大于配置
1、Maven对于目录结构这个问题,没有采用配置的方式,而是基于约定。
2、这样会让我们在开发过程中非常方便。如果每次创建Maven工程后,还需要针对各个目录的位置进行详细的配置,那肯定非常麻烦。
(就像 eclipse 一样,去创建一些项目,就要先去指定某个文件夹是写啥的,有点繁琐,增加我们去配置需要的时间)
3、目前开发领域的技术发展趋势就是:约定大于配置,配置大于编码。

当我们运行这个 main() 方法时就会去 java文件夹里编译所有的代码,然后放到 target 文件里,这是它和 IDEA 绑定的一个功能。
这篇博客的学习就到这。
相关文章:
基于IDEA的Maven简单工程创建及结构分析
目录 一、用 mvn 命令创建项目 二、用 IDEA 的方式来创建 Maven 项目。 (1)首先在 IDEA 下的 Maven 配置要已经确保完成。 (2)第二步去 new 一个 project (创建一个新工程) (3)…...
解锁空间数据奥秘:ArcGIS Pro与Python双剑合璧,处理表格数据、矢量数据、栅格数据、点云数据、GPS数据、多维数据以及遥感云平台数据等
ArcGISPro提供了用户友好的图形界面,适合初学者快速上手进行数据处理和分析。它拥有丰富的工具和功能,支持各种数据格式的处理和分析,适用于各种规模的数据处理任务。ArcGISPro在地理信息系统(GIS)领域拥有广泛的应用&…...
后端路线指导(4):后端春招秋招经验分享
后端春招&秋招经验分享 春招(暑期实习) /秋招是应届生非常重要的应聘时间,每一个想就业的同学一定要有所了解! 本篇内容,老白将与大家分享暑期实习和秋招如何应对招聘的个人经验,希望每个同学看完都能有所收获! 首先说明一下老白对于面试核心竞争力的…...
面完小红书算法岗,心态崩了。。。
暑期实习基本结束了,校招即将开启。 不同以往的是,当前职场环境已不再是那个双向奔赴时代了。求职者在变多,HC 在变少,岗位要求还更高了。提前准备才是完全之策。 最近,我们又陆续整理了很多大厂的面试题,…...
Android 断点续传进阶之多线程下载
今天继续下载的风骚走位内容—多线程多文件断点续传 Android 断点续传基础之单线程下载:http://blog.csdn.net/qq_27489007/article/details/53897653 效果图: 文件关系: 所需内容 多文件下载列表的显示 启动多个线程分段下载 使用通知栏…...
Python爬虫学习 | Scrapy框架详解
一.Scrapy框架简介 何为框架,就相当于一个封装了很多功能的结构体,它帮我们把主要的结构给搭建好了,我们只需往骨架里添加内容就行。scrapy框架是一个为了爬取网站数据,提取数据的框架,我们熟知爬虫总共有四大部分&am…...
用户态协议栈05—架构优化
优化部分 添加了in和out两个环形缓冲区,收到数据包后添加到in队列;经过消费者线程处理之后,将需要发送的数据包添加到out队列。添加数据包解析线程(消费者线程),架构分层 #include <rte_eal.h> #inc…...
模拟退火算法
模拟退火算法(Simulated Annealing, SA)是一种用于全局优化问题的概率搜索算法,其灵感来自于金属退火过程。在金属退火中,材料被加热到高温,然后缓慢冷却,以减少其晶格中的缺陷并达到最小能量状态。模拟退火…...
Java匿名类
Java 匿名类是一种特殊的内部类,它没有名字,并且通常用来简化代码实现,尤其是在实现接口或者抽象类的实例时。匿名类可以在实例化时定义其行为,而不需要创建单独的类文件。 匿名类的特点 没有名字:匿名类是没有名字的…...
G7易流赋能化工物流,实现安全、环保与效率的共赢
近日,中国物流与采购联合会在古都西安举办了备受瞩目的第七届化工物流安全环保发展论坛。以"坚守安全底线,追求绿色发展,智能规划化工物流未来"为主题,该论坛吸引了众多政府部门、行业专家和企业代表的参与。G7易流作为…...
y=sin(2x)
函数 \( y \sin(2x) \) 是一个正弦函数,其中 \( x \) 是自变量,\( y \) 是因变量。这个函数描述了一个周期性波动的波形,其特点是: 1. **振幅**:正弦函数的振幅是 1,这意味着波形在 \( y \) 轴上的最大值…...
快捷方式(lnk)--加载HTA-CS上线
免责声明:本文仅做技术交流与学习... 目录 CS: HTA文档 文件托管 借助mshta.exe突破 本地生成lnk快捷方式: 非系统图标路径不同问题: 关于lnk的上线问题: CS: HTA文档 配置监听器 有效载荷---->HTA文档--->选择监听器--->选择powershell模式----> 默认生成一…...
从同—视角理解扩散模型(Understanding Diffusion Models A Unified Perspective)
从同—视角理解扩散模型 Understanding Diffusion Models A Unified Perspective【全公式推导】【免费视频讲解】 B站视频讲解 视频的论文笔记 从同一视角理解扩散模型【视频讲解笔记】 配合视频讲解的同步笔记。 整个系列完整的论文笔记内容如下,仅为了不用—一回复…...
docker 基本用法及跨平台使用
一、Docker的优点 docker 主要解决的问题就是程序开发过程中编译和部署中遇到的环境配置的问题。 1.1 Docker与其他虚拟机层次结构的区别** 运行程序重点关注点在于环境。 VM虚拟机是基于Hypervisor虚拟化服务运行的。 Docker是基于内核的虚拟化技术实现的。 1.2 Docker的技…...
Vscode远程ubuntu
远程连接 到这里vscode远程到ubuntu和关闭远程连接,已完成 配置python环境 在远程目录下新建.vscode隐藏文件夹,文件夹里新建一个 settings.json 文件, 先远程服务器看下conda下的python虚拟环境位置 settings.json位置及内容如下 测试pyt…...
SHA256 安全散列算法加速器实验
1、SHA256 介绍 SHA256 加速器是用来计算 SHA-256 的计算单元, SHA256 是 SHA-2 下细分出的一种算法。 SHA-2 名称来自于安全散列算法 2 (英语: Secure Hash Algorithm 2 )的缩写,一种密码散列函 数算法标准…...
Elasticsearch-ES查询单字段去重
ES 语句 整体数据 GET wkl_test/_search {"query": {"match_all": {}} }结果: {"took" : 123,"timed_out" : false,"_shards" : {"total" : 1,"successful" : 1,"skipped" : 0…...
【Apache Doris】周FAQ集锦:第 7 期
【Apache Doris】周FAQ集锦:第 7 期 SQL问题数据操作问题运维常见问题其它问题关于社区 欢迎查阅本周的 Apache Doris 社区 FAQ 栏目! 在这个栏目中,每周将筛选社区反馈的热门问题和话题,重点回答并进行深入探讨。旨在为广大用户和…...
EE trade:炒伦敦金的注意事项及交易指南
在贵金属市场中,伦敦金因其高流动性和全球认可度,成为广大投资者的首选。然而,在炒伦敦金的过程中,投资者需要注意一些关键点。南华金业小编带您一起来看看。 国际黄金报价 一般国际黄金报价会提供三个价格: 买价(B…...
JAVA医院绩效考核系统源码 功能特点:大型医院绩效考核系统源码
JAVA医院绩效考核系统源码 功能特点:大型医院绩效考核系统源码 医院绩效管理系统主要用于对科室和岗位的工作量、工作质量、服务质量进行全面考核,并对科室绩效工资和岗位绩效工资进行核算的系统。医院绩效管理系统开发主要用到的管理工具有RBRVS、DRGS…...
Python|GIF 解析与构建(5):手搓截屏和帧率控制
目录 Python|GIF 解析与构建(5):手搓截屏和帧率控制 一、引言 二、技术实现:手搓截屏模块 2.1 核心原理 2.2 代码解析:ScreenshotData类 2.2.1 截图函数:capture_screen 三、技术实现&…...
装饰模式(Decorator Pattern)重构java邮件发奖系统实战
前言 现在我们有个如下的需求,设计一个邮件发奖的小系统, 需求 1.数据验证 → 2. 敏感信息加密 → 3. 日志记录 → 4. 实际发送邮件 装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其…...
Zustand 状态管理库:极简而强大的解决方案
Zustand 是一个轻量级、快速和可扩展的状态管理库,特别适合 React 应用。它以简洁的 API 和高效的性能解决了 Redux 等状态管理方案中的繁琐问题。 核心优势对比 基本使用指南 1. 创建 Store // store.js import create from zustandconst useStore create((set)…...
ESP32读取DHT11温湿度数据
芯片:ESP32 环境:Arduino 一、安装DHT11传感器库 红框的库,别安装错了 二、代码 注意,DATA口要连接在D15上 #include "DHT.h" // 包含DHT库#define DHTPIN 15 // 定义DHT11数据引脚连接到ESP32的GPIO15 #define D…...
什么是库存周转?如何用进销存系统提高库存周转率?
你可能听说过这样一句话: “利润不是赚出来的,是管出来的。” 尤其是在制造业、批发零售、电商这类“货堆成山”的行业,很多企业看着销售不错,账上却没钱、利润也不见了,一翻库存才发现: 一堆卖不动的旧货…...
srs linux
下载编译运行 git clone https:///ossrs/srs.git ./configure --h265on make 编译完成后即可启动SRS # 启动 ./objs/srs -c conf/srs.conf # 查看日志 tail -n 30 -f ./objs/srs.log 开放端口 默认RTMP接收推流端口是1935,SRS管理页面端口是8080,可…...
Java入门学习详细版(一)
大家好,Java 学习是一个系统学习的过程,核心原则就是“理论 实践 坚持”,并且需循序渐进,不可过于着急,本篇文章推出的这份详细入门学习资料将带大家从零基础开始,逐步掌握 Java 的核心概念和编程技能。 …...
laravel8+vue3.0+element-plus搭建方法
创建 laravel8 项目 composer create-project --prefer-dist laravel/laravel laravel8 8.* 安装 laravel/ui composer require laravel/ui 修改 package.json 文件 "devDependencies": {"vue/compiler-sfc": "^3.0.7","axios": …...
GitFlow 工作模式(详解)
今天再学项目的过程中遇到使用gitflow模式管理代码,因此进行学习并且发布关于gitflow的一些思考 Git与GitFlow模式 我们在写代码的时候通常会进行网上保存,无论是github还是gittee,都是一种基于git去保存代码的形式,这样保存代码…...
Cilium动手实验室: 精通之旅---13.Cilium LoadBalancer IPAM and L2 Service Announcement
Cilium动手实验室: 精通之旅---13.Cilium LoadBalancer IPAM and L2 Service Announcement 1. LAB环境2. L2公告策略2.1 部署Death Star2.2 访问服务2.3 部署L2公告策略2.4 服务宣告 3. 可视化 ARP 流量3.1 部署新服务3.2 准备可视化3.3 再次请求 4. 自动IPAM4.1 IPAM Pool4.2 …...

