Spring Boot 打war包 without parent 躺坑记


声明:本文转载自https://my.oschina.net/dailongyao/blog/1580258,转载目的在于传递更多信息,仅供学习交流之用。如有侵权行为,请联系我,我会及时删除。

  由于公司运维部署项目采用的都是外置tomcat形式,所以要将springboot默认jar形式改成war形式,其中遇到各种坑,在此记录一下,也希望可以帮助遇到同样坑的伙伴。
  如标题,我项目不是继承spring-boot-starter-parent形式,如下:

  <dependencyManagement>     <dependencies>       <dependency>         <!-- Import dependency management from Spring Boot -->         <groupId>org.springframework.boot</groupId>         <artifactId>spring-boot-dependencies</artifactId>         <version>1.5.7.RELEASE</version>         <type>pom</type>         <scope>import</scope>       </dependency>      </dependencies>   </dependencyManagement>

因为我的是一个web项目,引入spring-boot-starter-web,此模块包含tomcat,所以在pom做如下剔除即可

    <dependency>       <groupId>org.springframework.boot</groupId>       <artifactId>spring-boot-starter-tomcat</artifactId>       <scope>provided</scope>     </dependency>

对啦,剔除之后还要引用如下

    <dependency>       <groupId>javax.servlet</groupId>       <artifactId>javax.servlet-api</artifactId>       <scope>provided</scope>     </dependency>

再将packaging jar 改为 war,

构建插件加入如下(注意看代码中的注释,很重要):

<plugin>         <!-- The plugin rewrites your manifest -->         <groupId>org.springframework.boot</groupId>         <artifactId>spring-boot-maven-plugin</artifactId>         <version>1.5.7.RELEASE</version>         <configuration><!-- 指定该Main Class为全局的唯一入口 -->           <mainClass>xxx.Application</mainClass>           <layout>ZIP</layout><!--(可选,按需加-->           <jvmArguments>-Dfile.encoding=UTF-8</jvmArguments><!--解决spring boot:run中文乱码(可选,按需加-->           <executable>true</executable><!--打包成可执行文件(可选,按需加)-->         </configuration>         <executions>           <execution>             <goals>               <goal>repackage</goal><!--可以把依赖的包都打包到生成的Jar包中,继承的可以不用加这个,parent中有-->             </goals>           </execution>         </executions>       </plugin>       <plugin>         <groupId>org.apache.maven.plugins</groupId>         <artifactId>maven-war-plugin</artifactId>         <configuration>           <failOnMissingWebXml>false</failOnMissingWebXml><!-- 此处必须要加这个,否则会报miss web.xml错误 -->           <archive>             <manifest>               <mainClass>xxx.Application</mainClass>               <addDefaultImplementationEntries>true</addDefaultImplementationEntries>             </manifest>           </archive>         </configuration>       </plugin>

最后,最重要的一个就是更改启动类Application,修改如下(也请注意注释):

@SpringBootApplication //@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})如果项目不需要连数据库,一定要剔除dataSource自动配置,否则会报错误,具体你实验就知道了,哈哈 public class Application extends SpringBootServletInitializer{  	public static void main(String[] args) { 		SpringApplication.run(Application.class, args); 	}  	@Override 	protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) { 		return builder.sources(Application.class); 	} }

按照以上操作完就可以把打好的war放到外置的tomcat跑起来了,躺坑记录完毕,又可以愉快地耍了~~

本文发表于2017年11月27日 16:39
(c)注:本文转载自https://my.oschina.net/dailongyao/blog/1580258,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如有侵权行为,请联系我们,我们会及时删除.

阅读 2230 讨论 0 喜欢 0

抢先体验

扫码体验
趣味小程序
文字表情生成器

闪念胶囊

你要过得好哇,这样我才能恨你啊,你要是过得不好,我都不知道该恨你还是拥抱你啊。

直抵黄龙府,与诸君痛饮尔。

那时陪伴我的人啊,你们如今在何方。

不出意外的话,我们再也不会见了,祝你前程似锦。

这世界真好,吃野东西也要留出这条命来看看

快捷链接
网站地图
提交友链
Copyright © 2016 - 2021 Cion.
All Rights Reserved.
京ICP备2021004668号-1