Sam*_*uel 15 java spring maven spring-boot
阅读了Spring文档和网络上的其他文章之后,我仍然感到困惑,Spring Boot Maven插件的spring-boot:repackage和常规mvn package有什么区别。
我以为mvn包会创建一个包含所有依赖项的jar,那么Spring真正使用该插件的真正原因是什么?
maven软件包目标和spring-boot:repackage目标本质上是不同的。spring-boot重新打包目标主要是为了使命令行本身使用JAR或WAR可执行文件,java -jar *.jar而maven package目标则采用编译后的代码并将其打包为可分发格式(例如JAR)进行打包。它将maven生成的JAR重新打包以指定主类,并使它使用嵌入式容器可执行。
Maven包
第一种也是最常见的方式是通过同名的POM元素为项目设置包装。一些有效的包装值是jar,war,ear和pom。如果未指定包装值,则默认为jar。
定义一个程序包后,每个程序包都包含要绑定到特定阶段的目标列表,jar程序包将绑定以下目标以构建默认生命周期的阶段:process-resources,compile,process-test-resources,test-编译,测试,打包,安装,部署。
春季启动:重新包装
包含的插件是:
<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>
Run Code Online (Sandbox Code Playgroud)
该配置重新打包了在Maven生命周期的打包阶段构建的jar或war。
因此,一旦pom.xml中包含了spring-boot-maven-plugin,它就会自动尝试使用spring-boot:repackage目标重写存档以使其可执行。您应该使用常规包装元素将您的项目配置为构建jar或war(适当时)。
参考:https : //docs.spring.io/spring-boot/docs/current/reference/html/build-tool-plugins-maven-plugin.html
Spring重新打包在Maven生命周期的打包阶段构建的jar或war。下面的示例在目标目录中显示了重新打包的jar和原始jar:
$ mvn package
$ ls target/*.jar
target/myproject-1.0.0.jar target/myproject-1.0.0.jar.original
Run Code Online (Sandbox Code Playgroud)
如果不包括配置,则可以单独运行插件(但也必须使用软件包目标)。例如:
$ mvn package spring-boot:repackage
$ ls target/*.jar
target/myproject-1.0.0.jar target/myproject-1.0.0.jar.original
Run Code Online (Sandbox Code Playgroud)
使用链接在spring网站上查看更多详细信息
| 归档时间: |
|
| 查看次数: |
9703 次 |
| 最近记录: |