java - 如何为无限运行(无限循环)的 Spring boot 应用程序生成 Jar 文件?

标签 java spring-boot jar executable-jar

我知道如何构建具有所有依赖项的应用程序的 jar,但这就是我的情况, 当我们构建一个 jar (使用 mvn 包)时,它首先运行应用程序以检查一切是否正常(意味着:应用程序需要成功/正确停止)。但就我而言,应用程序不会停止,因为它正在运行无限循环并且没有创建任何 jar。

请问有什么帮助吗? 如果这个问题重复,我很抱歉。我确实在这里搜索过,但找不到任何相关答案。

Pom.xml

<plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
                <fork>true</fork>
                <mainClass>${start-class}</mainClass>
            </configuration>
            <executions>
                <execution>
                    <goals>
                        <goal>repackage</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
        <plugin>
            <artifactId>maven-assembly-plugin</artifactId>
            <version>2.2-beta-5</version><!--$NO-MVN-MAN-VER$ -->
            <configuration>
                <archive>
                    <manifest>
                        <addClasspath>true</addClasspath>
                        <mainClass>path.to.mainclass</mainClass>
                    </manifest>
                </archive>
                <descriptorRefs>
                    <descriptorRef>jar-with-dependencies</descriptorRef>
                </descriptorRefs>
            </configuration>
            <executions>
                <execution>
                    <id>assemble-all</id>
                    <phase>package</phase>
                    <goals>
                        <goal>single</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>

最佳答案

距离提出问题已经过去了 8 个多月,我认为 OP 可能已经找到了一些解决方案或继续前进。为遇到与我相同问题的其他人写这个答案,并找到了以下解决方案。

正如问题中提到的,当您运行mvn package/install时,它首先运行应用程序以检查一切是否正常,然后创建package/jar。

因此,一旦您确信应用程序正常,请停止它并重新运行mvn package/install,但这次跳过测试。这可以通过以下任何一种方式来完成。

  1. 如果您使用 Spring Tool Suite:
    右键单击项目 -> Run As -> Maven Build... -> 在 Main 选项卡中,选择复选框“Skip Tests” -> Apply -> Run
  2. 如果您从命令行运行:
    mvn包-Dmaven.test.skip=true
  3. 此外,您还可以在 pom.xml 文件中设置它:
    <properties> <java.version>1.8</java.version> <maven.test.skip>true</maven.test.skip> </properties>
    并运行 mvn package
  4. 如果您使用 Surefire 插件:
    mvn 包-DskipTests

如需进一步引用,请查找以下源链接:

  1. https://www.mkyong.com/maven/how-to-skip-maven-unit-test/
  2. http://maven.apache.org/surefire/maven-surefire-plugin/examples/skipping-tests.html
  3. https://docs.spring.io/spring-boot/docs/current/maven-plugin/examples/it-skip.html

关于java - 如何为无限运行(无限循环)的 Spring boot 应用程序生成 Jar 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52700359/

相关文章:

java - 在 Wicket 中,为什么我的结果在提交表单后没有刷新?

java - 如何在 spring-boot 中为泛型类提供类类型?

java - Jar 找不到主方法 - 连接到主类,但无法访问方法

java - 系统找不到文件指定的文档 document = documentBuilder()

java - 从作为参数传递的数组创建测试用例名称(使用 JUnitParams)

java - 我有一个错误,但依赖项包含在 gradle root 和 gradle 模块配置中,为什么?

java - 如何使用 Spring Boot、Gradle 和 JSP 构建项目

java - 将 int 转换为 byte 在 Netbeans 和 JCreator 中给出不同的结果

java - 有没有办法在终端中执行包含单个单词(或短语)的 jar 文件?

java - 如何从 64 位 Java 连接到 Access .mdb 数据库?