当前位置: 首页 > 知识库问答 >
问题:

如何在spring boot中创建单个可执行war

鲜于凯歌
2023-03-14

我们正在使用spring Boot进行spring云项目。我们的目标是创建一个可以使用java-jar运行的可执行war。

有没有办法只生成可执行的WAR?

为了便于参考,我附加了pom.xml

http://maven.apache.org/xsd/maven-4.0.0.xsd“>4.0.0

<artifactId>discovery-service</artifactId>
<version>1.0.0-SNAPSHOT</version>
<packaging>war</packaging>

<description>
    Discovery microservice to provide a service registry using Spring Cloud
    and Netflix Eureka for cloud native microservices.
</description>

<properties>
    <java.version>1.8</java.version>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <version>1.2.3.RELEASE</version>
            **<configuration>
                <classifier>boot</classifier>
            </configuration>
            <executions>
                <execution>
                    <goals>
                        <goal>repackage</goal>
                    </goals>
                </execution>
            </executions>**
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-war-plugin</artifactId>
            <version>2.6</version>
            <configuration>
                <failOnMissingWebXml>false</failOnMissingWebXml>
                <outputDirectory>target</outputDirectory>
                <warName>ROOT</warName>
            </configuration>
        </plugin>
    </plugins>
</build>

<dependencies>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-eureka-server</artifactId>
    </dependency>
</dependencies>

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>Brixton.SR1</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-parent</artifactId>
            <version>Brixton.SR1</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

共有1个答案

房项禹
2023-03-14

感谢Stephane建议删除分类器并建议使用starter.io。

我最初的问题是在目标中得到两个war文件:1)root.war和另一个2)discovery-service-boot.war

我想,魔鬼是在maven-war-plugin配置中。删除warName和outputDirectory的xml标记后,我将获得可执行的war。

我发布最后的pom.xml是为了让其他面临类似情况的人受益:

http://maven.apache.org/xsd/maven-4.0.0.xsd“>4.0.0

<artifactId>discovery-service</artifactId>
<version>1.0.0-SNAPSHOT</version>
<packaging>war</packaging>

<description>
    Discovery microservice to provide a service registry using Spring Cloud
    and Netflix Eureka for cloud native microservices.
</description>

<properties>
    <java.version>1.8</java.version>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <version>1.2.3.RELEASE</version>
            <executions>
                <execution>
                    <goals>
                        <goal>repackage</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-war-plugin</artifactId>
            <version>2.6</version>
            <configuration>
                <failOnMissingWebXml>false</failOnMissingWebXml>
            </configuration>
        </plugin>
    </plugins>
</build>

<dependencies>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-eureka-server</artifactId>
    </dependency>
</dependencies>

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>Brixton.SR1</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-parent</artifactId>
            <version>Brixton.SR1</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>
 类似资料:
  • 问题内容: 伙计们,我的模块中有很多python代码,这些模块位于多个python软件包中,现在我需要创建一个包含所有这些文件的python可执行模块或文件,因此它将在Windows和Linux服务器上运行。有哪些可能的解决方案,以及如何解决? 问题答案: 这就是鸡蛋文件的用途。请阅读以下内容:将python库/应用程序打包为.egg文件有什么好处?

  • 问题内容: 我已经在JCreator中编写了Java程序,一切都已完成,但是我想从中创建一个可执行文件,即,我不想通过加载Java类并编译然后执行来运行程序,而是将其作为独立的可执行文件。 最快的方法是什么? 问题答案: 你可以使用SDK附带的jar工具,并创建该程序的可执行版本。 这就是完成的方式。 我将从命令提示符中发布结果,因为它更容易,但是使用JCreator时也应如此。 首先创建你的程序

  • 如何在一个项目中创建库和可执行文件?我只想在开发库的同时测试它,使用测试并不总是最好的方法。我认为我必须使用和,但我在crates.io中没有找到有关这方面的信息。

  • 问题内容: 我想从我的Python项目创建一个可执行文件。用户无需安装Python就可以下载并运行它。如果我只是分发软件包,则可以使用pip,wheel和PyPI进行构建和分发,但这需要用户具有Python并且知道如何安装软件包。我可以用什么来从Python项目构建一个自包含的可执行文件? 问题答案: 这是一些常见的。除非明确指出,否则截至我上次编辑(2020年1月)时,下面列出的所有项目都将得到

  • 如何用Gradle创建可执行JAR? 我尝试了,但它不起作用。

  • 问题内容: 我想创建一个线程池,它将执行最新提交的任务。关于如何做到这一点的任何建议? 谢谢 问题答案: 您可能只需要实现自己的包装,即可将要约/投票映射到堆栈。然后将此作为您传递给的实现。我的建议是包装一个现有的实现,例如。 这是不同步的,因此您需要使用同步器包装每个方法(如果不是更奇特的东西)。 您还需要为阻止操作引入/ 条件。 最后,您需要将一组极性(“放”侧或“取”侧)映射到出队的另一端(