eclipse下打包ssm项目成war包丢上服务器遇到的问题以及解决方式

之前有打包过简单的小项目,打包过程中并没有碰到什么问题,最近想把毕设打包丢上腾讯云服务器,然后在maven项目打包的过程中就遇到了不少的问题!废话不多说,我先把问题给列出来:
这是我在右键项目->run->maven install之后出现的问题(并且打包过程中直接报错,提示打包失败,然后打开控制台出现了未找到xxx程序包,哪里出现了什么符号错误等等一大堆,由于我未来的及截图,这里就没有显示那张图片了)
eclipse下打包ssm项目成war包丢上服务器遇到的问题以及解决方式_第1张图片

既然问题出现了,那么就只能一个一个的去解决:
问题一:Cannot change version of project facet Dynamic Web Module to 2.3
这种问题之前也碰到过,但是奇怪的是我之前就解决了,没有想道maven update项目之后,这种问题又出现了,我表示很无奈啊!
打开web.xml文件:将版本改为2.5,我这里一直是2.5
eclipse下打包ssm项目成war包丢上服务器遇到的问题以及解决方式_第2张图片
在项目的.settiing目录下有这样一些文件:
eclipse下打包ssm项目成war包丢上服务器遇到的问题以及解决方式_第3张图片
org.eclipse.wst.common.project.facet.core.xml:
eclipse下打包ssm项目成war包丢上服务器遇到的问题以及解决方式_第4张图片

org.eclipse.jdt.core.prefs:
eclipse下打包ssm项目成war包丢上服务器遇到的问题以及解决方式_第5张图片
org.eclipse.wst.common.component:
eclipse下打包ssm项目成war包丢上服务器遇到的问题以及解决方式_第6张图片
将这些文件都昨晚更改后(其实我的文件内的版本号一直都相同),右键项目选择properties
eclipse下打包ssm项目成war包丢上服务器遇到的问题以及解决方式_第7张图片
做完这些更改之后刷新项目,选择maven->update project(不知道为什么我的这个错误还是一直存在)
问题二:One or more constraints have not been satisfied.
org.eclipse.wst.common.project.facet.core.xml:
eclipse下打包ssm项目成war包丢上服务器遇到的问题以及解决方式_第8张图片
eclipse下打包ssm项目成war包丢上服务器遇到的问题以及解决方式_第9张图片
最后,我以为这些问题都结局了,结果还是打包失败,在网上又各种百度
右键项目选择properties->builders 取消Validation,之后我再打包并没有显示失败,但是控制台还是存在未找到程序包以及符号错误

eclipse下打包ssm项目成war包丢上服务器遇到的问题以及解决方式_第10张图片
百度参考其他大佬的做法,在pom.xml中加入了一下配置:
eclipse下打包ssm项目成war包丢上服务器遇到的问题以及解决方式_第11张图片
配置到这一步,我有重新打包,结果是不会打包过程就终止了,但是控制台还是有输出为找程序包,于是乎,又得找问题所在,后面在pom.xml中发现junit的依赖中scope标签的值为test
eclipse下打包ssm项目成war包丢上服务器遇到的问题以及解决方式_第12张图片
百度发现:
原来,scope是用于配置打包的jar包配置,有几个可选参数
compile,test,system,provided等,默认是compile,所以,一般不配置scope也是可以在项目编译打包的时候把jar包打进去的。
compile
默认就是compile,什么都不配置也就是意味着compile。compile表示被依赖项目需要参与当前项目的编译,当然后续的测试,运行周期也参与其中,是一个比较强的依赖。打包的时候通常需要包含进去。
test
scope为test表示依赖项目仅仅参与测试相关的工作,包括测试代码的编译,执行。比较典型的如junit。
runntime
runntime表示被依赖项目无需参与项目的编译,不过后期的测试和运行周期需要其参与。与compile相比,跳过编译而已,说实话在终端的项目(非开源,企业内部系统)中,和compile区别不是很大。比较常见的如JSR×××的实现,对应的API jar是compile的,具体实现是runtime的,compile只需要知道接口就足够了。oracle jdbc驱动架包就是一个很好的例子,一般scope为runntime。另外runntime的依赖通常和optional搭配使用,optional为true。我可以用A实现,也可以用B实现。
provided
provided意味着打包的时候可以不用包进去,别的设施(Web Container)会提供。事实上该依赖理论上可以参与编译,测试,运行等周期。相当于compile,但是在打包阶段做了exclude的动作。
system
从参与度来说,也provided相同,不过被依赖项不会从maven仓库抓,而是从本地文件系统拿,一定需要配合systemPath属性使用。
于是我干脆把scope删掉,最后刷新项目再maven->update project之后重新打包,终于成功了!
eclipse下打包ssm项目成war包丢上服务器遇到的问题以及解决方式_第13张图片
我的解决方式不一定可以给大家套用,如有什么不对地方,望大家能指出来!大家一起进步!

你可能感兴趣的:(eclipse下打包ssm项目成war包丢上服务器遇到的问题以及解决方式)