Java spring boot:重新打包和mvn包之间的区别
在阅读了Spring文档和web上的一些其他文章之后,我仍然不清楚Spring Boot Maven插件的Spring Boot:repackage和常规的mvn包之间的区别是什么Java spring boot:重新打包和mvn包之间的区别,java,spring,maven,spring-boot,Java,Spring,Maven,Spring Boot,在阅读了Spring文档和web上的一些其他文章之后,我仍然不清楚Spring Boot Maven插件的Spring Boot:repackage和常规的mvn包之间的区别是什么 我认为mvn包创建了一个包含所有依赖项的jar,那么使用Spring插件的真正原因是什么呢?Spring重新打包在Maven生命周期的包阶段构建的jar或war。以下示例显示了目标目录中重新打包的jar和原始jar: $ mvn package $ ls target/*.jar target/myproject-1
我认为mvn包创建了一个包含所有依赖项的jar,那么使用Spring插件的真正原因是什么呢?Spring重新打包在Maven生命周期的包阶段构建的jar或war。以下示例显示了目标目录中重新打包的jar和原始jar:
$ mvn package
$ ls target/*.jar
target/myproject-1.0.0.jar target/myproject-1.0.0.jar.original
如果不包括配置,则可以自行运行插件(但只有在使用包目标的情况下)。例如:
$ mvn package spring-boot:repackage
$ ls target/*.jar
target/myproject-1.0.0.jar target/myproject-1.0.0.jar.original
查看spring网站的更多详细信息,使用mvn包创建jar或war SpringBoot插件获取jar或war并重新打包,使其可以从命令行执行(即不需要应用服务器) 从插件文档:
“重新打包现有的JAR和WAR归档文件,以便使用java-JAR从命令行执行它们。”maven包目标和spring boot:repackage目标本质上是不同的。spring boot重新打包的目标主要是使用
java-JAR*.JAR
从命令行本身生成一个JAR或WAR可执行文件,而maven包
目标则将编译后的代码打包成可分发的格式,spring boot重新打包的目标是重新打包maven生成的JAR,以指定主类,并使用嵌入式容器使其可执行
Maven软件包
- 第一种也是最常见的方法是通过同名POM元素为项目设置打包。一些 有效的包装值是jar、war、ear和pom。如果没有包装 值已指定,它将默认为jar
- 定义包时,每个包都包含要绑定到特定阶段的目标列表,jar包将绑定 构建默认生命周期阶段的以下目标: 流程资源,编译,流程测试资源,测试编译,测试,打包,安装,部署
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.1.4.RELEASE</version>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
org.springframework.boot
我认为mvn包创建了一个包含所有依赖项的jar
。在@Tome的回复中添加:“……除非您的POM是spring boot starter父项的子项
”,在这种情况下,mvn包
将运行spring boot:repackage
目标,从而创建胖罐。好的,所以我认为这也是由常规包完成的。我现在说的对吗,您不能只使用java-jar作为常规包?为了使该常规包可执行,还应该对其执行哪些操作?SpringBoot插件对常规软件包到底做了什么?如果我感到困惑,我很抱歉,我只是没有从他们的文档中理解它。如果您使用jar
指令,您可以生成一个可执行的自给自足的jar:java-jar-target/mymodule-0.0.1-SNAPSHOT.jar
对不起,我在这里没有得到区别……那么您在这两种情况下都有相同的输出?