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. ...
随机推荐
- 从webkit内核简单看css样式和css规则优先级(权重)
目录 webkit中样式相关类及类间关系 样式规则匹配 权重(优先级)计算 权重相同时的覆盖原则 webkit中样式相关类及类间关系 资料来源: <webkit技术内幕> 结构相关类: 1 ...
- python基础-面向对象编程之反射
面向对象编程之反射 反射 定义:通过字符串对对象的属性和方法进行操作. 反射有4个方法,都是python内置的,分别是: hasattr(obj,name:str) 通过"字符串" ...
- [ElasticSearch]Java API 之 滚动搜索(Scroll API)
一般搜索请求都是返回一"页"数据,无论数据量多大都一起返回给用户,Scroll API可以允许我们检索大量数据(甚至全部数据).Scroll API允许我们做一个初始阶段搜索并且持 ...
- PostgreSQL 插入行、查表、导出
1.连接数据库 使用cmd选择安装路径下的psql.exe 登录用户名为postgres 输入密码进行登录. D:\PostgreSQL\9.6\bin\psql.exe -U postg ...
- 001-k8s集群的安装
k8s集群的安装 1.实验描述 通过搭建 K8S 的集群,来学习对容器的编排 2.实验环境 [你可能需要][CentOS 7 搭建模板机]点我快速打开文章 [你可能需要][VMware 从模板机快速克 ...
- 七、union联合
Union:联合 作用:把2次或多次查询结果合并起来 案例(认识union):我想把商品价格大于5000元的和商品价格小于20元的商品都取出来 1.Select * from goods where ...
- uiautomator 调试例子
package com.bing.cn; import com.android.uiautomator.testrunner.UiAutomatorTestCase; public class Dem ...
- tensorflow 待阅读的资料
tensorflow性能调优实践 https://www.jianshu.com/p/937a0ce99f56 2018.04.01 Deep Learning 之 最优化方法 https://blo ...
- luoguP4008 [NOI2003]文本编辑器
题意 splay维护即可 code: #include<bits/stdc++.h> using namespace std; const int maxn=2000010; int T, ...
- 关于gcd
内容: \(gcd(a,b)=gcd(b,a\% b)\) 用途: 这不废话嘛,当然是用来求最大公约数啊 证明:(这还是四月份的时候cdx巨佬给我讲的qwq) 设\(d=gcd(a.b)\) 则有\( ...