一、文件目录结构
使用IDEA生成的Spring Boot工程结构如上图所示。该目录是一个符合maven目录结构的maven程序,包含src目录和pom.xml文件,还包含mvnw,mvnw.cmd,.mvn文件。
.mvn 、mvnw、mvnw.cmd提供构建maven项目的所需文件。mvnw是运行mvn命令的winds脚本文件。其中mvnw是适合Linux平台的脚本文件。mvnw 全名是maven wrapper,它的原理是在maven-wrapper.properties文件中记录你要使用的maven版本,当用户执行mvnw clean 命令时,发现当前用户的maven版本和期望的版本不一致,那么就下载期望的版本,然后用期望的版本来执行mvn命令,比如刚才的mvn clean。
如果你本机安装了maven则直接使用mvn命令,不必理会其它文件,只需关注src和pom.xml就可以。
为工项目添加mvnw支持有两种方式:
1.在pom.xml中添加plugin声明
<plugin>
<groupId>com.rimerosolutions.maven.plugins</groupId>
<artifactId>wrapper-maven-plugin</artifactId>
<version>0.0.4</version>
</plugin>
这样当我们执行mvn wrapper:wrapper时,会帮我们生成mvnw.bat, mvnw, maven/maven-wrapper.jar, maven/maven-wrapper.properties这些文件。然后我们就可以使用mvnw代替mvn命令执行所有的maven命令。
2.直接执行goal
#表示我们期望使用的maven的版本为3.3.3
mvn -N io.takari:maven:wrapper -Dmaven=3.3.3
产生的内容和第一种方式是一样的,只是目录结构不一样,maven-wrapper.jar和maven-wrapper.properties在.mvn/wrapper目录下。
IDEA和Spring Boot官网生成的Spring Boot工程都是这种形式的。
二、打包总结
Spring Boot下打包过程
基于IDEA创建的工程项目中已经创建好了相应的配置文件和信息具体的文件如上面所示的目录结构图。其中的
-** mvnw, mvnw.cmd 此为对mvn命令的封装
-** pom.xml maven项目的配置文件
-** mvn clean : 删除target目录内容,清理打包痕迹
-** mvn compile 编译项目,查看是否有语法或者依赖问题
-** mvn package 打包当下的项目
-DskipTests主要用以调过测试用例的执行,如果不加上面的参数,则会执行测试目录下的测试程序。
Spring Boot打包结果内容
Spring boot中打出的包主要有如下信息:
-** Boot-INF 主要的类库信息,以及项目代码编译的class所在位置
-** META-INF 关于当下应用的配置信息,比如Spring,以及maven的信息
-** org目录, 其中为可执行jar或者war中所需要的相关信息
Spring Boot中的Maven插件介绍
Spring Boot的pom文件中只有一个缺省的plugins
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
在spring boot maven中已经集成了若干必须的插件信息,可以直接使用。如果需要的话,可以自行添加注入相关插件即可
如何使用jar命令来打包
jar cvf mq.jar -C target/classes
jar cvf mq-0.0.1-SNAPSHOT.jar -C target\classes\ .
target/classes表示单个jar,打特定目录的文件。-C是指切换到指定的目录下,然后执行jar的打包命令.