无法跳过 spring-boot-maven-plugin 的重新打包目标

Cannot skip repackage goal of spring-boot-maven-plugin

我有一个多模块 Maven 项目,其中包含一个由多个 Spring 引导服务组成的应用程序。我正在尝试为服务设置集成和端到端测试,并使用组合 Maven 插件来编排它。

我有一个模块旨在仅包含对执行某些工作的协作服务组的端到端测试。它仅包含测试代码和资源。我正在使用故障安全插件 (org.apache.maven.plugins:maven-failsafe-plugin) 执行集成测试,使用 Spring Boot Maven 插件 (org.springframework.boot:spring-boot-maven-plugin) 启动和停止 "main" 服务以及 Maven exec 插件 (org.codehaus.mojo:exec-maven-plugin) 以启动端到端测试中使用的其他服务。

我 运行 遇到了一个似乎与 Spring 启动插件的 repackage 目标有关的问题。 e2e 模块没有任何需要重新打包的东西,所以我想跳过这个目标。应该不会太难吧?

      <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
        <executions>
          <execution>
            <goals>
              <goal>repackage</goal>
            </goals>
            <configuration>
              <skip>true</skip>
            </configuration>
          <execution>
          ...

好吧,这行不通。尽管如此,它仍然运行重新打包。

这个问题是 Maven 构建失败,因为它找不到 "main" class 来重新打包(我相信是作为可执行 jar)。好吧,没有这个模块的主class。

更重要的问题是:为什么 <skip>true</skip> 被忽略了?

您需要在执行以上目标后添加<id>repackage</id>

我也遇到了同样的问题。我使用 <plugins>

上方的 <pluginManagement> 标签解决了这个问题
      <pluginManagement>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <executions>
                <execution>
                    <goals>
                        <goal>repackage</goal>
                    </goals>
                    <configuration>
                        <skip>true</skip>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
    </pluginManagement>