Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java spring boot:重新打包和mvn包之间的区别_Java_Spring_Maven_Spring Boot - Fatal编程技术网

Java spring boot:重新打包和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

在阅读了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.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
对不起,我在这里没有得到区别……那么您在这两种情况下都有相同的输出?