概述

  第一次用maven工具打war包,出现各种各样的问题,做个问题记录方便下次查看

maven

  一开始用的maven是springboot默认的,在.m2下,要打包时才发现没有mvn指令。索性自己就重新装个maven,去官网下载,我安装的是3.5.2版本。因为maven仓库默认是国外的,需要更改为国内的镜像地址,方便建立本地的仓库,于是更改setting.xml文件,在<mirrors>标签内添加一个新的标签,完成之后自己配置环境变量,下图是lz自己电脑的配置,根据自己安装目录进行,完成后测试下maven -version

    <mirror><id>mirrorId</id><mirrorOf>repositoryId</mirrorOf><name>Human Readable Name for this Mirror.</name><url>http://maven.aliyun.com/nexus/content/groups/public/</url></mirror>

环境变量

指定要下载的本地仓库地址,所以添加本地地址

<localRepository>D:\maven\repository</localRepository>

IDEA配置maven

  除此之外,IDEA也需要更改默认的maven地址,home directory选择本地maven,file 选择本地maven的配置文件,local repository选择本地仓库路径

pom.xml修改

重新加载maven->reimport,下载本地仓库时间较慢,慢慢等待吧。本地仓库下载完成后,必须修改打包形式,在pom.xml内添加

<packaging>war</packaging>

因为springboot整合有tomcat的容器如果打成war包放置在外部服务器的tomcat下,将会出现冲突,所以移除内部的tomcat容器,在pom.xml下添加

     <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><exclusions><exclusion><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-tomcat</artifactId></exclusion></exclusions></dependency>

还需要添加servlet-api依赖

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

如果不想用maven打包出来的war名称,还得添加自己自定义的名称

<finalName>seasgame</finalName><pluginManagement><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>2.3.2</version><configuration><encoding>${project.build.sourceEncoding}</encoding><source>1.7</source><target>1.7</target></configuration></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-surefire-plugin</artifactId><configuration><testFailureIgnore>true</testFailureIgnore></configuration></plugin></plugins></pluginManagement>

pom.xml修改到这里,我们开始进行打包,在pom.xml那层目录,执行 mvn clean package

启动类修改

public class SpringBootStartApplication extends SpringBootServletInitializer
{@Overrideprotected SpringApplicationBuilder configure(SpringApplicationBuilder builder){// 注意这里要指向原先用main方法执行的SeasgameApplication启动类return builder.sources(SeasgameApplication.class);}
}

问题汇总

因为移除了tomcat,所以跟tomcat依赖相关的得更改。

ERROR: expected START_TAG or END_TAG not TEXT

这是因为pom.xml的文件内,有不合法的语法,也可以看提示哪一行出的问题,建议处理方法将idea的检验级别拉高,有问题就会一下子报红。将标签内容补全,重新在进行打包

ERROR:No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?

这是因为我们需要之指定一个符合配置的JDK环境,这个问题一般是因为装有多个版本的jdk引发的,idea的maven配置Runner,需要配置哪个版本,最好都一致。

ERROR:Unsupported major.minor version 52.0

版本信息不一致,低版本编译高版本出的问题,springboot我建议用tomcat 8 以上和jdk8以上,因为tomcat7太过老旧了,可能会出现各种不兼容的问题,升级后一般能解决很多问题。

ERROR: Failed to execute goal org.apache.maven.plugins:maven-clean-plugin:2.5

这是被某个程序占用了,我们重新启动下idea,甚至还无法解决可以重启。

在打包的时候出现这几个问题,一 一解决后要部署到服务器。因为服务器还是用jdk7和tomcat7。。各种版本不兼容,很头疼。只能自己在装一个jdk8 和tomcat8,在tomcat8内指定jdk版本运行。

在tomcat8的bin下修改 setclasspath.sh 在第一行添加

export JAVA_HOME=/usr/local/jdk1.8.0_172/
export JAVA_HOME=/usr/local/jdk1.8.0_172/jre

如何还不行,在catalina.sh内也添加上。因为有多个版本tomcat所以端口号会冲突,修改server里的端口号。。可参考这篇文件

https://blog.csdn.net/Jay_1989/article/details/52870760

好了,启动tomcat8,发现

ERROR:Field xxxService in 某个类 required a single bean, but 3 were found

这是因为我在内部有个工程类

private EntityManager entityManager;

找不到这个bean,将注解弄掉。顺利跑起来了,第一次打war包花了一下午的时间,终于成功跑起来,访问127.0.0.1:端口号

转载于:https://www.cnblogs.com/dslx/p/11465842.html

springboot打war包汇总相关推荐

  1. springboot部署war包为什么tomcat会启动两次

    我们在开发中经常遇到springboot打war包的时候经常会启动两次tomcat,原因如下: 在conf文件夹下的server.xml中配置出了问题,如果<Context>节点里配置了应 ...

  2. java 打成war_JAVA语言之Springboot打成war包并在tomcat中运行的部署方法

    本文主要向大家介绍了JAVA语言的Springboot打成war包并在tomcat中运行的部署方法,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助. 把spring-boot项目按照平常 ...

  3. SpringBoot 项目war包部署 配置外置tomcat方法

    一般情况spring-boot-starter-web是自带tomcat(即springboot内嵌tomcat),所以打包直接生成jar包,用java -jar命令就可以启动.但,有时我们希望用wa ...

  4. 阿里云SpringBoot项目war包部署

    在部署war包前先购买好云服务器,将MySQL.Nginx.Tomcat安装好,我会将安装部署手册上传,不用积分就能下载,有问题可以百度,毕竟独立解决困难对程序员也是十分重要的,废话不多说,开始部署: ...

  5. SpringBoot打war包,使用tomcat或金蝶中间件启动

    1.创建一个类继承SpringBootServletInitializer类,重写configure方法 import org.springframework.boot.builder.SpringA ...

  6. springboot打war包抛出org.springframework.context.ApplicationContextException: Unable to start web server

    当我加入打war包的依赖后,在运行项目抛出以下异常 然后我在pom.xml文件中加了一个依赖解决了这个问题 <dependency><groupId>org.springfra ...

  7. weblogic部署springboot项目war包

    weblogic部署SpringBoot项目详细步骤 一.SpringBoot项目创建 二.修改启动类 三.新建web.xml和weblogic.xml 1.web.xml 2.weblogic.xm ...

  8. springBoot 打war包 程序包com.sun.istack.internal不存在的问题

    使用的是 idea - Lifecycle-package 的方式打包(maven) 确认  <packaging>war</packaging> 修改启动类: (原启动类) ...

  9. springboot打war包

    默认场景下,Springboot作为一个jar运行,但是在某些特殊场景下 需要将后台和其他应用共用一个web容器(tomcat之类): 客户强制要求(例如策略只给了一个端口): 其他: 可以打包成wa ...

最新文章

  1. linux 物理内存用完了_Linux用户空间与内核空间(理解高端内存)
  2. (linux中alias的用法)给一些常用的长命令取别名
  3. 基于决策树的多分类_R中基于决策树的糖尿病分类—一个零博客
  4. 6599元!索尼Xperia 5 III国行版今日首销:媲美专业微单相机
  5. 用了 HTTPS 就一定安全吗?
  6. 数据结构经典案例_计算机领域必读的经典书籍清单
  7. 分布式微服务云架构电子商务平台
  8. FreeMarker(七)Html转义
  9. 第三方接口,消息保障性发送机制
  10. tcp服务器测试网页版,tcp测试服务器
  11. 国内最新可用Google谷歌镜像网站入口网站网址
  12. java 简体繁体互相转换
  13. 衣带渐宽终不悔,为伊消得人憔悴--DbHelper增强版
  14. Android侧滑返回分析和实现(不高仿微信),flutter项目实战
  15. 基于Python的安卓图形锁破解程序
  16. CentOS6.8 切换桌面模式与命令行模式
  17. 家居智能安防系统功能和特点介绍,如何合理化的做好家居智能安防?
  18. ORA-01507: ??????
  19. c语言用质因数分解法求最大公约数,《分解质因数的方法求最大公约数》数学教案...
  20. H - Relief grain

热门文章

  1. XAML中格式化日期
  2. 软件建模——第3章 项目前期
  3. 大型门户网站的可伸缩性架构设计
  4. [mmdetection] - win10配置mmdetection(1.1和2.0) + 训练网络(faster-rcnn、mask-rcnn)
  5. ES6专题——整理自阮一峰老师的ECMAScript 6入门
  6. python每天1道面试题(3)--字符串组合
  7. 三种方式在CentOS 7搭建KVM虚拟化平台
  8. RabbitMQ快速安装配置指南
  9. 详解为何在嵌套ESXi环境下要求开启Promiscuous Mode
  10. PLSQL Developer远程连接oracle数据库