Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/340.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.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 为什么SpringBootMaven插件在重新打包覆盖的war文件时会添加war本身?_Java_Maven_Spring Boot_War - Fatal编程技术网

Java 为什么SpringBootMaven插件在重新打包覆盖的war文件时会添加war本身?

Java 为什么SpringBootMaven插件在重新打包覆盖的war文件时会添加war本身?,java,maven,spring-boot,war,Java,Maven,Spring Boot,War,我有以下pom.xml: <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersi

我有以下
pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>org.example</groupId>
    <artifactId>foo-war</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>war</packaging>

    <dependencies>
        <dependency>
            <groupId>org.jasig.portlet</groupId>
            <artifactId>CalendarPortlet</artifactId>
            <version>2.6.2</version>
            <type>war</type>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>2.1.6.RELEASE</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>build-info</goal>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <version>3.2.3</version>
                <configuration>
                    <failOnMissingWebXml>false</failOnMissingWebXml>
                    <overlays>
                        <overlay>
                            <groupId>org.jasig.portlet</groupId>
                            <artifactId>CalendarPortlet</artifactId>
                        </overlay>
                    </overlays>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

4.0.0
org.example
福娃
0.0.1-快照
战争
org.jasig.portlet
日历portlet
2.6.2
战争
org.springframework.boot
springbootmaven插件
2.1.6.1发布
构建信息
重新包装
org.apache.maven.plugins
maven战争插件
3.2.3
假的
org.jasig.portlet
日历portlet
当我运行
mvn包时
生成的重新打包war文件包含
WEB-INF/lib/CalendarPortlet-2.6.2.war下的原始war本身

为什么spring boot在重新打包时会添加战争,我如何防止这种情况

在我的实际项目中,我想替换现有war的一些资源,并添加构建信息以供执行器显示。但是,将工件的大小增加一倍并不仅仅是为了这个目的

编辑:

重新打包JAR时也会出现此问题。

通过在spring boot maven插件的配置中手动指定该工件的排除项,可以防止原始工件包含在重新打包的工件中:

<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <version>2.1.6.RELEASE</version>
    <configuration>
        <excludes>
            <exclude>
                <groupId>org.jasig.portlet</groupId>
                <artifactId>CalendarPortlet</artifactId>
            </exclude>
        </excludes>
    </configuration>
    <executions>
        <execution>
            <goals>
                <goal>build-info</goal>
                <goal>repackage</goal>
            </goals>
        </execution>
    </executions>
</plugin>

org.springframework.boot
springbootmaven插件
2.1.6.1发布
org.jasig.portlet
日历portlet
构建信息
重新包装

但我仍然不知道为什么该插件在重新打包的插件中包含原始工件。

您自己调用
maven-war插件的意图是什么
我想如果您删除该插件(执行),它会默认工作。@MartinvanWingerden没有额外执行
maven-war插件
,我只是将配置添加到默认执行中。好吧,那么我真的不明白你的目的是什么,或者我确实明白,但这种方式让我困惑。您是否正在尝试重新打包现有的spring boot war以向其添加构建信息?但是你放在里面的构建信息不是来自实际构建的构建信息,你想用它做什么?也许您应该使用标准插件来解包和重新打包,而不是同时使用
maven-warr插件
spring-boot-maven插件
。请注意,处于相同阶段的插件是按照它们在
pom.xml
中的顺序执行的。共享您的构建日志可能也会有所帮助。