springboot打war包汇总
概述
第一次用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
{
@Override
protected 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:端口号
springboot打war包汇总的更多相关文章
- Springboot解决war包放到Tomcat服务器上404的特殊情况
Springboot解决war包放到Tomcat服务器上404的特殊情况 原文链接:https://www.cnblogs.com/blog5277/p/9330577.html 原文作者:博客园-- ...
- springboot打war包后部署到tomcat后访问返回404错误
springboot打war包后部署到tomcat后访问返回404错误 1.正常情况下,修改打包方式为war <packaging>war</packaging> 2.启动类继 ...
- SpringBoot读取war包jar包Resource资源文件解决办法
SpringBoot读取war包jar包Resource资源文件解决办法 场景描述 在开发过程中我们经常会碰到要在代码中获取资源文件的情况,而我在最近在SpringBoot项目中时碰到一个问题,就是在 ...
- springBoot 项目war包部署及改为war包后资源路径错误问题
参考资料: https://blog.csdn.net/rico_zhou/article/details/83415114 https://blog.csdn.net/pz641/article/d ...
- SpringBoot应用War包形式部署到外部Tomcat
这一篇文章介绍SpringBoot应用修改默认打jar形式部署为打war包形式,部署到外部Tomcat. SpringBoot应用默认打包成为可执行jar模式让我们感觉到部署的便捷,接下来给大家介绍一 ...
- springboot 的war包在Tomcat中启动失败
springboot 默认是通常是打包成jar的,里面会内置一个tomcat容器 有时候我们需要使用以前打成war包的方式部署到对应的tomcat中, 具体springboot 怎么从jar改成war ...
- SpringBoot打war包并部署到外部tomcat运行(jar工程改造为正war工程)
如果你的SpringBoot工程是一个jar工程,而想把它改造成war工程,并打成war包放到外部的tomcat下运行,该怎么修改配置呢?这里以Maven工程为例进行介绍. (1)将pom.xml中的 ...
- 踩坑--springboot打war包
springboot需要jdk1.8+tomcat8.0 第一步:从IDEA中通过maven install将项目打成war包 第二步:将war包放在tomcat的webApp目录下,启动tomcat ...
- IntelliJ idea SpringBoot打war包
简单易用的使用idea 将SpringBoot工程打war包的方法 pom.xml中添加标签 1. 声明打包格式 <packaging>war</packaging> 2. ...
随机推荐
- SVG撑满页面
当viewBox属性固定,默认修改svg标签的宽高,svg都会按比例缩放 我们现在不想按比例缩放,需要svg撑满整个画面 这里只需为svg标签添加一个关键属性:preserveAspectRatio ...
- Mysql EF Core 快速构建 Web Api
(1)首先创建一个.net core web api web项目; (2)因为我们使用的是ef连接mysql数据库,通过NuGet安装MySql.Data.EntityFrameworkCore,以来 ...
- Linux kali信息探测以及 Nmap 初体验
Nmap是一个开源的网络连接端口扫描软件(内置于kali中) 打开Nmap: > nmap 打开桌面化Nmap——zenmap: > zenmap Nmap支持多种扫描方式,用法简单,参数 ...
- MariaDB设置主从复制
主从复制包含两个步骤: 在 master 主服务器(组)上的设置,以及在 slave 从属服务器(组)上的设置. 配置主服务器 master 如果没有启用,则需要 激活二进制日志. 给 master ...
- 006-OpenStack-配仪表盘
OpenStack-配仪表盘 [基于此文章的环境]点我快速打开文章 计算节点安装(compute1) 1.安装 yum install openstack-dashboard -y &> ...
- bert,albert的快速训练和预测
随着预训练模型越来越成熟,预训练模型也会更多的在业务中使用,本文提供了bert和albert的快速训练和部署,实际上目前的预训练模型在用起来时都大致相同. 基于不久前发布的中文数据集chineseGL ...
- 08webpack-复习
在调用loader的时候 都是从右往左进行加载的哦 //下面是现在学的webpack的配置文件哦 const path = require("path"); //路径模块 //第2 ...
- 201871010124-王生涛《面向对象程序设计(java)》第四周学习总结
项目 内容 这个作业属于哪个课程 <任课教师博客主页链接>https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 <作业链接地址>http ...
- nullptr与NULL
NULL NULL can be defined as any null pointer constant. Thus existing code can retain definitions of ...
- 每天一道Rust-LeetCode(2019-06-05)
每天一道Rust-LeetCode(2019-06-05) 最长回文子串 坚持每天一道题,刷题学习Rust. 接续昨天,最长会问字符串的另一种解法 题目描述 解题过程 //leetcode最快解法 / ...