上一讲我们用官网包或者 IDE 工具,快速构建了 Spring Boot 应用,并且看到了第一个程序的运行结果:Hello World!

本文我们了解下 Spring Boot 的目录结构,了解一个事物,清楚了它的结构,明白了内部元素各自的职责,就能很好的认识到它的组织方式和运行机制。

我们以 IntelliJ IDEA 这个 IDE 生成的 Spring Boot 应用为例,详细地看一下应用里边都有哪些东西。

下图是在上一讲中我们用 IntelliJ IDEA 生成的 Spring Boot 应用,详情戳:五分钟快速构建第一个 Spring Boot 应用。

乍一看,内容是挺多。不过上边不全是 Spring Boot 本身的文件,还包含了 IDE 生成的文件以及应用构建时生成的文件。

我们挨个来看吧。

course

course:Spring Boot 生成,应用的根文件目录,名称是在创建应用的时候初始化的。你创建的应用名叫 demo,那这个目录文件名就是 demo。

.idea

.idea:IntelliJ IDEA 生成,用于配置应用信息的文件目录。内部包含了类库,应用字符编码,模块,工作区等信息。

.mvn

.mvn:Spring Boot 生成,用于一键通过 Maven 构建、编译、打包和部署的文件目录。内部结构如下:

可以看到,该文件目录包含了 maven-wrapper.jar、maven-wrapper.properties 和 MavenWrapperDownloader.java 三个文件。另外和 .mvn 同层级的 mvnw 和 mvnw.cmd 两个文件,是执行 maven-wrapper.jar 的入口,mvnw 用于 Linux 或 macOS,mvnw.cmd 用于 Windows。

├── .mvn

│   └── wrapper

│       ├── maven-wrapper.jar

│       └── maven-wrapper.properties

│       └── MavenWrapperDownloader.java

├── mvnw

└── mvnw.cmd

那么为什么要用 wrapper,而不用原生的 maven 方式呢?以下这个图应该可以给你讲清楚!

我们发现和传统 maven 的使用方式相比, maven-wrapper 每次更换版本要少操作一步(图中标红箭头),只需要更新配置文件(maven-wrapper.properties )中的 distributionUrl 为目标版本即可。不过也有代价,就是首次下载 maven 包的时候,要单独下载 wrapper(图中蓝色区块),但这是一劳永逸的事情。

简单讲,maven-wrapper 解决了应用依赖的 Maven 版本手动切换的问题,达成自动更新的目标,提高了工作效率 。

src

src:Spring Boot 生成,存放应用源代码的文件目录。

二级目录 main存放程序实际执行相关代码, test 存放程序测试相关代码。

三级目录 java 存放后缀为 .java 的代码文件,resources 存放静态文件,模板文件,应用配置文件等资源或配置类文件。java 目录里边就是一个个代码包和代码文件,CourseApplication 是整个应用程序的启动入口。

target

target:应用构建时生成,主要存放了源代码编译后的 class 文件,相关的配置文件以及打好的包文件等用于实际执行的文件。

.gitignore

.gitignore:Spring Boot 生成,版本控制系统 Git 的配置文件,表示忽略提交。该文件中,只要遵循相应的语法,每一行可以指定一个忽略规则。

course.iml

course.iml:IntelliJ IDEA 生成,IntelliJ IDEA 的工程配置文件。包含了当前工程的一些配置信息,比如模块信息,Java 组件,Maven 组件等等以及一些模块的路径信息和依赖信息。

HELP.md

HELP.md:Spring Boot 生成,帮助文档,提供了 Spring Boot相关文档和教程。

mvnw 和 mvnw.cmd

mvnw 和 mvnw.cmd:Spring Boot 生成,和 .mvn 目录下文件搭配使用,是执行 mvnw 命令的入口。

pom.xml

pom.xml:Spring Boot 生成的项目对象模型文档,主要描述了项目的 Maven 坐标和依赖关系等信息,是项目级别的配置文件。

好了,Spring Boot 应用的目录结构介绍就到这里,如果对你也有用的话,可以给我点个赞,点个在看,也可以分享给身边朋友,非常感谢读者朋友。

我是蜗牛,正在互联网上疯狂爬行,下期见。

springboot干什么的_Spring Boot 项目的这些文件都是干啥用的?相关推荐

  1. Spring Boot 项目的这些文件都是干啥用的?

    本文我们了解下 Spring Boot 的目录结构,了解一个事物,清楚了它的结构,明白了内部元素各自的职责,就能很好的认识到它的组织方式和运行机制. 我们以 IntelliJ IDEA 这个 IDE ...

  2. springboot tomcat配置_Spring Boot项目如何同时支持HTTP和HTTPS协议

    本文首发于个人网站:Spring Boot项目如何同时支持HTTP和HTTPS协议 如今,企业级应用程序的常见场景是同时支持HTTP和HTTPS两种协议,这篇文章考虑如何让Spring Boot应用程 ...

  3. Spring boot 项目下载jio文件多1K

    通过Spring boot项目下载的文件 会比正常的文件多1K 我这里用了nginx ,百度说的都是nginx下载失败 我没有找到我这种情况. 实在是找不到原因了 有没有大佬遇到这种情况请帮帮忙 这个 ...

  4. springboot 修改了端口不生效_Spring Boot 项目 Docker 化快速上手

    开篇 服务部署是应用上线前的必需环节.大道至简,如何做到项目简单化.自动化甚至傻瓜式部署是考验DevOps的一大难题.从docker面世到k8s的脱颖而出,有越来越多的开源工具也在帮助开发和运维人员解 ...

  5. springboot jar包部署_Spring Boot项目基于Jar部署和打包详解教程

    目标:将Spring Boot项目使用maven指令打成jar包并运行测试 分析: 需要添加打包组件将项目中的资源.配置.依赖包打到一个jar包中:可以使用maven的package: 部署:java ...

  6. springboot项目层次结构_spring boot项目结构

    项目之初,一般我们会根据团队的构成和项目的需求把技术选型.框架定下来,技术选型框架确定后,在团队成员参与开发之前,项目的一些基础服务和组织架构需要资深的负责人或者团队讨论一起分工完成.这样在开始开发后 ...

  7. 打包tomcat没有xml文件_Spring Boot 项目打包 War 并部署到 Tomcat

    之前使用 SpringBoot 所做的开发,都是将项目打包成 Jar 的,但是如果是作为一个 Web 项目,最好是将项目打包成 War. 1. Jar 包和 War 包的区别 1.概念 jar 包:J ...

  8. 项目启动时socket自动启动_spring boot 项目在启动时调用接口

    1.环境 目前开发的项目使用的spring boot(2.1.4.RELEASE)+ssm 2. 需求 现在有一个数据处理任务的接口,在spring boot项目启动后,可以手动的去启动任务,但是这样 ...

  9. springboot aop使用_Spring Boot 的自动配置,是如何实现的?

    点击上方"IT牧场",选择"设为星标"技术干货每日送达! 作者 | 祖大帅 链接 | juejin.im/post/5b679fbc5188251aad2131 ...

最新文章

  1. Ubuntu升级后apache所有的失败,以解决虚拟文件夹的设置
  2. 能“看穿”换脸视频背后的AI模型
  3. GoDaddy服务器MySQL配置文件,仅供参考
  4. Spring boot部署工程
  5. Android Gradle 自定义Task 详解
  6. Laravel 某个字段更新失败的原因
  7. SAP CRM WebClient UI和Hybris的controller是如何被调用的
  8. 第4章 Python 数字图像处理(DIP) - 频率域滤波10 - 使用低通频率域滤波器平滑图像 - 理想、高斯、巴特沃斯低通滤波器
  9. 牛客题霸 [没有重复项数字的所有排列] C++题解/答案
  10. oracle动态语句打开游标,Oracle动态语句中返回游标
  11. 课堂测试2014.3.10
  12. 计算机字体颜色太浅,我的打印机打字太淡,如何调,打印的字就能够颜色
  13. C#编写刷机工具exe替代adb敲命令行操作
  14. SQL Server 2008 下载地址
  15. IDEA translation翻译插件报错-》更新TKK失败请检查网络
  16. 用js处理图片加载错误时加载默认图片的方法
  17. Android adb命令开启飞行模式,开启wifi,开启移动数据等相关操作
  18. SwiftUI Xcode教程之在 iOS 中使用Schemes 和 .xcconfig 文件来组织构建交付
  19. java具名参数_Spring jdbc具名参数使用方法详解
  20. 【ChatGPT军事专家】岸防炮的射速是多少,如何攻破岸防炮

热门文章

  1. 安卓 sharedpreferences可以被其它activity读取_Google|再见 SharedPreferences 拥抱 Jetpack DataStore...
  2. matlab impyramid图像金字塔
  3. centos arm-linux-gcc,CentOS 6.4配置arm-linux-gcc交叉环境
  4. biweb wms门户网站php开源建站系统 v5.8.3,BIWEB WMS PHP开源企业建站系统 v5.8.5
  5. MATLAB安装第三方工具箱
  6. 仅使用HTML和CSS实现的标签云效果
  7. 产品经理思维模型:新的增长黑客模型RARRA
  8. mel滤波器组频率响应曲线_了解二阶滤波器的奈奎斯特图
  9. 从WEB应用的角度,一个应用都需要维护一些不同作用范围的状态, 请问下面哪些状态作用域是WEB应用特有的:( )
  10. centos8如何安装yum源(详细步骤)