基于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 绑定的一个功能。


这篇博客的学习就到这。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/356809.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

1027. 方格取数

Powered by:NEFU AB-IN Link 文章目录 1027. 方格取数题意思路代码 1027. 方格取数 题意 某人从图中的左上角 A 出发,可以向下行走,也可以向右行走,直到到达右下角的 B 点。 在走过的路上,他可以取走方格中的数(取…

Docker网络介绍

网络是虚拟化技术中最复杂的部分,也是Docker应用中的一个重要环节。 Docker中的网络主要解决容器与容器、容器与外部网络、外部网络与容器之间的互相通信的问题。 这些复杂情况的存在要求Docker有一个强大的网络功能去保障其网络的稳健性。因此,Docker…

SCI一区TOP|双曲正弦余弦优化算法(SCHO)原理及实现【免费获取Matlab代码】

目录 1.背景2.算法原理2.1算法思想2.2算法过程 3.结果展示4.参考文献5.代码获取 1.背景 2023年,J Bai受到双曲正弦余弦函数启发,提出了双曲正弦余弦优化算法(Sinh Cosh optimizer, SCHO)。 2.算法原理 2.1算法思想 SCHO灵感来源…

分布式锁(Redission)

分布式锁: 使用场景: 通常对于一些使用率高的服务,我们会进行多次部署,可能会部署在不同的服务器上,但是他们获取和操作的数据仍然是同一份。为了保证服务的强一致性,我们需要对线程进行加锁,…

ROS中的TF是什么

在ROS (Robot Operating System) 中,tf::TransformBroadcaster 是一个用于发布坐标变换信息的重要类,尤其在处理机器人定位和导航数据时非常常见。tf::TransformBroadcaster 对象允许你广播从一个坐标系到另一个坐标系的变换关系,这对于多传感…

Vue38 安装脚手架 vue-cli ,并使用脚手架创建项目

安装脚手架 vue-cli ,并使用脚手架创建项目 第一步 安装脚手架 npm config set registry https:\\[registry.npmmirror.com // 切换淘宝镜像 npm install -g vue/cli第二步 切换到创建项目的目录,创建项目 cd XXX vue create XXX第三步 启动项目 npm…

【Linux】基础IO_3

文章目录 六、基础I/O3. 软硬链接4. 动静态库 未完待续 六、基础I/O 3. 软硬链接 使用 ln 就可以创建链接,使用 ln -s 可以创建软链接,直接使用 ln 则是硬链接。 我们对硬链接进行测试一下: 根据测试,我们知道了 硬链接就像一…

WPF文本绑定显示格式StringFormat设置-数值类型处理

绑定显示格式设置 在Textblock等文本控件中,我们经常要绑定一些数据类型,但是我们希望显示的时候能够按照我们想要的格式去显示,比如增加文本前缀,后面加单位,显示百分号等等,这种就需要对绑定格式进行处理…

天马学航——智慧教务系统(移动端)开发日志四

天马学航——智慧教务系统(移动端)开发日志四 日志摘要:优化了教师端界面的UI,更新了教师端添加课程,提交成绩等功能,修复了一些已知的BUG 1、教师添加课程设计 教师在此界面添加课程,并将数据提交后端进行审核 界…

Dell戴尔灵越Inspiron 16 Plus 7640/7630笔记本电脑原装Windows11下载,恢复出厂开箱状态预装OEM系统

灵越16P-7630系统包: 链接:https://pan.baidu.com/s/1Rve5_PF1VO8kAKnAQwP22g?pwdjyqq 提取码:jyqq 灵越16P-7640系统包: 链接:https://pan.baidu.com/s/1B8LeIEKM8IF1xbpMVjy3qg?pwdy9qj 提取码:y9qj 戴尔原装WIN11系…

python flask配置邮箱发送功能,使用flask_mail模块

🌈所属专栏:【Flask】✨作者主页: Mr.Zwq✔️个人简介:一个正在努力学技术的Python领域创作者,擅长爬虫,逆向,全栈方向,专注基础和实战分享,欢迎咨询! 您的点…

Mamba: Linear-Time Sequence Modeling with Selective State Spaces论文笔记

文章目录 Mamba: Linear-Time Sequence Modeling with Selective State Spaces摘要引言 相关工作(SSMs)离散化计算线性时间不变性(LTI)结构和尺寸一般状态空间模型SSMs架构S4(补充)离散数据的连续化: 基于零阶保持技术做连续化并采样循环结构表示: 方便快速推理卷积结构表示: 方…

Vue80-全局路由守卫:前置、后置

一、路由守卫的定义 二、需求 在第三步,做校验! 三、代码实现 3-1、前置路由守卫 注意,此时就不能将router一开始就暴露出去了! to和from是路由组件的信息。 写法一: 写法二: 缺点:若是路由…

算法04 模拟算法之一维数组相关内容详解【C++实现】

大家好,我是bigbigli,模拟算法我们将分为几个章节来讲,今天我们只看一维数组相关的题目 目录 模拟的概念 训练:开关灯 解析 参考代码 训练:数组变化 解析 参考代码 训练:折叠游戏 解析 参考代码 …

动态ARP

定义 动态ARP表项由ARP协议通过ARP报文自动生成和维护,可以被老化,可以被新的ARP报文更新,可以被静态ARP表项覆盖。 动态ARP适用于拓扑结构复杂、通信实时性要求高的网络。 ARP地址解析过程 动态ARP通过广播ARP请求和单播ARP应答这两个过…

33 - 连续出现的数字(高频 SQL 50 题基础版)

33 - 连续出现的数字 -- 开窗函数lead(col,n) 统计窗口内往下第n行值 -- over(partition by xxx) 按照xxx所有行进行分组 -- over(partition by xxx order by aaa) 按照xxx分组,按照aaa排序select distinct num as ConsecutiveNums from(select num,# 从当前记录获…

运行vue3项目相关报错

1. VSCode打开TSVue3项目很多地方报错 报错内容 几乎所有文件都会出现未知飘红 error Delete CR prettier/prettier报错原因 插件冲突,Windows系统回车换行符与MAC不一致(所以这个问题Windows系统才会出现) 解决 需要安装Vue - Official…

永磁同步电机FOC调试记录(一)

永磁同步电机FOC调试记录(一) 前言架构硬件架构软件架构 调试过程元器件选型开环控制编码器调试速度采样电流检测中断优先级的确定电流环部分烧坏IPM速度-电流环位置-电流环 结语 前言 这是我个人从零开始尝试永磁同步电机(PMSM)…

【LeetCode刷题】232.用栈实现队列

目录 题目链接 图解思路 整体结构 实现过程 入队列 出队列 实现代码 MyQueue.h MyQueue.c stack.h stack.c test.c 题目链接 232. 用栈实现队列 - 力扣(LeetCode) 图解思路 整体结构 实现过程 入队列 插入数据时,插入到ist。…

尚品汇-(四)

(1)商品的基本知识 1.1基本信息—分类 一般情况可以分为两级或者三级。咱们的项目一共分为三级,即一级分类、二级分类、三级分类。 比如:家用电器是一级分类,电视是二级分类,那么超薄电视就是三级分类。…