有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何使Spring引导在重新打包的WAR中包含清单文件?

我正在使用spring-boot-starter-parent版本2.1.0-RELEASE构建一个Spring启动应用程序,并需要它生成一个可部署的WAR文件,其中包含META-INF/目录中的MANIFEST.MF。我已经设置了Maven WAR插件,将清单包含在构建工件中:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-war-plugin</artifactId>
  <version>3.2.2</version>
  <configuration>
    <archive>
      <manifest>
        <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
      </manifest>
    </archive>
  </configuration>
</plugin>

但是,最终构建工件不包括清单文件。我注意到,在Maven WAR插件首先打包WAR文件之后,Spring Boot执行了重新打包:

[INFO] --- spring-boot-maven-plugin:2.1.0.RELEASE:repackage (repackage)

事实上,这是神器。战争target目录中的原始文件确实包含清单

如何使Spring引导也将清单包含在最终WAR文件中


共 (2) 个答案

  1. # 1 楼答案

    使用spring-boot-maven-plugin进行如下操作

    <packaging>war</packaging>
    
    <build>
        <outputDirectory>${basedir}/src/main/webapp/WEB-INF/classes</outputDirectory>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>2.1.2.RELEASE</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <mainClass>com.yourMainClass</mainClass>
                </configuration>
            </plugin>
        </plugins>
    </build>
    
  2. # 2 楼答案

    在“重新打包”的战争中,你不需要它(至少不是在你想要的地方),因为它包含自定义加载机制。重新包装的战争仍然是“可部署的”