【发布时间】:2017-03-10 10:08:57
【问题描述】:
我们正在使用 Spring Boot 开发 Spring Cloud 项目。我们的目标是创建一个可以使用 java -jar 运行的可执行战争。
我关注了一些关于 SO 的帖子,并且能够通过 1) 在 . 2) spring-boot-maven-plugin在执行阶段添加Repackage目标
现在通过这种方法,我得到了两个战争文件: 一场不可执行但可部署的战争 以及适合我要求的引导分类器的另一场战争
有没有办法只生成可执行的战争?
我附上 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>
参考资料: One Spring Boot project, deploy to both JAR or WAR
Failed to load Main-Class manifest attribute while running java -jar
【问题讨论】:
-
您不需要添加任何类型的分类器。 Spring Boot 生成的一个作为 java -jar 和 部署在 servlet 容器中。你试过了吗?
-
@Stephane 感谢您的评论,spring boot 产生的战争可以部署在 servlet 容器上,我们不想这样做。所以我们需要一个可以使用 java -jar 命令运行的可执行战争。在在这里发布这个问题之前,我已经完成了我的部分研究
-
为了更清楚,我们只想使用嵌入式tomcat服务器而不部署在外部servlet容器上
-
我理解您的问题,我想问您是否尝试过,因为如果您使用
repackage目标,默认情况下会发生这种情况。前往 start.spring.io,点击高级,选择战争打包,点击生成项目。解压项目,调用mvn package,然后调用java -jar target/demo-0.0.1-SNAPSHOT.war,您的应用程序将启动。
标签: maven spring-boot