基于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.mzph.cn/news/855153.shtml

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

相关文章

论文精读——KAN

目录 1.研究背景 2.关键技术 2.1 原始公式 2.2 KAN结构 2.3 缩放定律 3.技术扩展 4.模型效果 5.相关讨论 6.总结 文章标题:《KAN: Kolmogorov–Arnold Networks》 文章地址: KAN: Kolmogorov-Arnold Networks (arxiv.org)https://arxiv.org/a…

再次递表港交所,慧算账能否把握AI+财税SaaS机遇?

5月以来,港股IPO市场日渐兴旺,多家公司实现上市首日“零破发”,平均收涨约30%,6月更是出现了超2500倍超购新股。市场赚钱效应显现,投资者打新随之热情高涨,越来越多国内企业也开始抓紧赴港上市。 近日&…

Android-app自动更新总结(已适配9-0)(1)

} //检查版本号,第一次请求(post),,,UpdateAppBean根据服务器返回生成 private void requestAppUpdate(int version, final DataRequestListener listener) { OkGo.post(Const.HOST_URL Const.UPDATEAPP).params(“version”, v…

vue element-ui 下拉框 以及 input 限制输入,小数点后保留两位 界面设计案例 和 例子:支持mp4和m3u8视频播放

vue input 限制输入,小数点后保留两位 以及 图片垂直居中显示 和 分享 git 小技巧-CSDN博客文章浏览阅读430次,点赞5次,收藏4次。error:Your local changes to the following files would be overwritten by merge:_error: your local change…

Python 介绍——浔川python社

python简介 Python是一种高级、通用的编程语言,由Guido van Rossum于1989年创建。它被设计为易于阅读和理解,并且具有简洁的语法,使得开发人员能够更快地编写代码。 Python被广泛用于不同的领域,包括Web开发、数据分析、人工智能…

2024.6.18 作业 xyt

今日作业: 1. 完善对话框,点击登录对话框,如果账号和密码匹配,则弹出信息对话框,给出提示”登录成功“,提供一个Ok按钮,用户点击Ok后,关闭登录界面,跳转到其他界面 如果…

广东省省站节能检测试题库(2024年)

1.外墙外保温系统耐候性试验设备,测温点不应少于( ),每个测温点的温度与平均温度偏差不应大于( )。 A、2个,5℃ B、4个,5℃ C、2

未来谁主沉浮? / 全能AI模型的发展趋势和展望

在近日腾讯元宝APP的正式上线后,国内大模型产品如雨后春笋般涌现,引发了广泛的关注。在这股AIGC(人工智能生成内容)的热潮中,我也体验过不少全能型的大模型产品。那么,这些产品有哪些优缺点呢?在…

C++ 64 之 函数模版和普通函数调用规则

#include <iostream> #include <string> using namespace std;template<typename T> void myPrint(T a, T b){cout << "函数模板的调用" << endl; }void myPrint(int a, int b){cout << "普通函数调用" << endl…

C#——只读属性readonly

只读属性readonly 类的字段可以通过一个readonly(只读)表示这个为只读字段&#xff0c;不能被构造函数之外地方进行修改&#xff0c;静态只读字段不能在非静态的构造函数中使用 定义 只读属性的特点&#xff1a; 字段是只读的非静态 只能在非静态方法中进行修改 字段是只读的…

如何使用芯片手册做软件开发?

在阅读和利用芯片手册进行软件开发时&#xff0c;你应该关注以下几个关键点&#xff1a; 引脚功能&#xff1a;了解芯片上每个引脚的功能&#xff0c;包括它们可以被配置为输入还是输出&#xff0c;以及它们支持的特殊功能&#xff0c;如模拟输入、PWM输出、中断等。 寄存器映…

NoSQL-Tidis支持分布式事务,兼容redis协议,使用tikv存储引擎,可水平扩展

项目repo地址 GitHub - yongman/tidis: Distributed transactional NoSQL database, Redis protocol compatible using tikv as backend Tidis是分布式数据库,支持redis协议,多种数据结构支持,编写语言为golang。 Tidis工作角色类似于TIDB,提供协议转换和数据结构计算,底…

RockChip Android12 System之Datetime

一:概述 本文将针对Android12 Settings二级菜单System中Date&time的UI修改进行说明。 二:Date&Time 1、Activity packages/apps/Settings/AndroidManifest.xml <activityandroid:name="Settings$DateTimeSettingsActivity"android:label="@stri…

JavaFX选择框

JavaFX选择框允许用户在几个选项之间快速选择。 创建一个选择框 我们可以使用ChoiceBox中的构造函数来创建ChoiceBox对象。 以下代码显示了如何使用其构造函数创建和填充选择框。 列表项是从可观察的列表来创建的。 ChoiceBox cb newChoiceBox(FXCollections.observableArra…

音频处理2_进阶概念

本节主要对”音乐”和”人声“等概念初步整理&#xff0c;并过度到AI模型的讲解&#xff0c;本节后续会有补充或修改。 1. 名词概念 1.1 音频类 基频&#xff08;f0&#xff09; 复杂声音&#xff08;例如人声、乐器音&#xff09;通常由多个频率成分组成。基频是最低的频率成…

Unity基础(三)3D场景搭建

目录 简介: 一.下载新手资源 二.创建基本地形 三.添加场景细节 四,添加水 五,其他 六. 总结 简介: 在 Unity 中进行 3D 场景搭建是创建富有立体感和真实感的虚拟环境的关键步骤。 首先&#xff0c;需要导入各种 3D 模型资源&#xff0c;如建筑物、角色、道具等。这些模…

springboot与flowable(9):候选人组

act_id_xxx相关表存储了所有用户和组的数据。 一、维护用户信息 Autowiredprivate IdentityService identityService;/*** 维护用户*/Testvoid createUser() {User user identityService.newUser("zhangsan");user.setEmail("zhangsanqq.com");user.setF…

TOP150-LC45-跳跃问题II-java版

java解法-贪心 /*跳跃游戏II 给定一个长度为 n 的 0 索引整数数组 nums。初始位置为 nums[0]。每个元素 nums[i] 表示从索引 i 向前跳转的最大长度。换句话说&#xff0c;如果你在 nums[i] 处&#xff0c;你可以跳转到任意 nums[i j] 处:0 < j < nums[i]i j < n 返…

一周刷爆leetcode!(b站视频)

文章目录 一、排序思想的题目二、使用步骤1. 一、排序思想的题目 跟着b站一周刷爆leetcode这个视频开始刷一下leetcode的题目 进行一下记录啥的 二、使用步骤 1. 315. 计算右侧小于当前元素的个数 代码如下&#xff1a; 写了一下暴力解法&#xff0c;没有通过 使用归并排序…

CHATGPT说这个运算放大器是比较器,我说这是运放典型的同相比例放大器,一个光控电路分析

纠正 图1 光控电路 该电路来自一个问题&#xff0c;链接见文末。 因GPT的分析有误&#xff0c;特此纠正。 引用图片和答案用于分析&#xff0c;如侵权请联系本人。 电路分析&#xff1a; 该电路为光控灯电路&#xff0c;灯光为LED发光二极管 D。 光敏电阻RG的阻值和光线强度关…