一.需求

如何将一个java web项目传给别人?放到github上.要想放到github上,就要学会git,markdown和maven.像那些jar包是不鼓励传到github上的,应该尽量把源文件等文本文件传上去,所以要把依赖写在pom.xml中.要让别人能够重复你的工作,使用git,maven这套体系,别人只需要clone一下,mvn package一下,从target目录中把war包取出来,略微配置一下就可以用了.这个过程多么简洁美好.所以以后建项目应该尽量脱离IDE,尽量使用maven,gradle等构建工具.它们能使程序便于移植.

二.Cannot change version of project facet Dynamic Web Module to 3.1.

这是一种类似破解软件的解决方案,打开window/show view/navigator/.settings/org.eclipse.wst.common.project.facet.core.xml,将其中的jst.web改为3.1.至于到底改成哪个版本,这需要跟web.xml保持一致,在web.xml中是这么定义webapp版本的

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns="http://xmlns.jcp.org/xml/ns/javaee"xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"id="WebApp_ID" version="3.1">

实际上,这种方法并没有从根本上解决问题,这个问题好像是eclipse的bug.

三.maven compile

maven会使用maven-compiler-plugin来进行编译,这个插件默认的source(源文件API版本)和target(生成的jar包的运行环境)都是1.5,所以就需要手动更改一下这个插件的一些属性.

<project>[...]<build>[...]<plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.2</version><configuration><source>1.8</source><target>1.8</target></configuration></plugin></plugins>[...]</build>[...]
</project>

四.archetype-webapp

在eclipse中新建maven项目,选择archtype为webapp类型.如果报错说maven插件有问题,
Could not calculate build plan: Plugin org.apache.maven.plugins:maven-war-plugin:2.1.1 or one of
解决方案:进入~/.m2/org/apache/maven/plugins目录,将其下面的文件全部删除.maven自己会重新下载这些插件,下载的新插件就比较正常.
生成的项目目录结构如下:

├─src
│  ├─main
│  │  ├─java
│  │  ├─resources
│  │  └─webapp
│  │      └─WEB-INF
│  └─test
│      └─java
└─target

五.写完pom.xml之后

写完pom.xml之后,就开始下载一些库了,会发现在eclipse中下载特别慢.解决方案是,打开工程目录,手动执行mvn package命令,这是就会在控制台下下载库,速度比较快.

七.mvn package

在eclipse里面是buildpath-library添加了server runtime之tomcat依赖,但这件事是依赖eclipse的,maven可不知道关于tomcat的信息.执行mvn package会报错找不到javax.servlet等一些库.
实际上,tomcat也不过是一对jar包,它也是一种依赖,需要在pom.xml中添加dependency

<dependency><groupId>org.apache.tomcat</groupId><artifactId>tomcat-catalina</artifactId><version>8.5.6</version>
</dependency>

这样一来,就可以mvn package,去target目录下寻找war包了.随便一改pom.xml中的tomcat版本就可以生成不同版本tomcat下的war包,大大增强了程序的可移植性.

八.mysql数据库表名的大小写问题

Linux下的MySQL默认是区分表名大小写的,通过如下设置,可以让MySQL不区分表名大小写:

  1. 用root登录,修改 /etc/my.cnf;
  2. 在[mysqld]节点下,加入一行: lower_case_table_names=1
  3. 重启MySQL即可;

其中 lower_case_table_names=1 参数缺省地在 Windows 中这个选项为 1,在Unix中为0.

九.mysql时区问题

The server time zone value 'AEST' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the serverTimezone configuration property) to use a more specifc time zone value if you want to utilize time zone support.

这个问题是mysql-connector 6.x出现的问题,换成老版本就不存在这个问题了.另一种解决方案是:
jdbc:mysql://localhost:3306/test?serverTimezone=America/New_York,时区可以改成中国的serverTimezone=Asia/Shanghai.
想要查看有哪些时区,运行如下代码:

import java.util.Arrays;
import java.util.TimeZone;public class Main {public static void main(String[] args) {Arrays.asList(TimeZone.getAvailableIDs()).forEach(System.out::println);}
}

十.在eclipse中建立web项目属性常常需要更改的地方

1.项目右键属性>facet>添加dynamyc web

eclipse中可以新建各种类型的项目,如dynamic web,static web,maven project,这些项目其实就相当于模板.可以通过facet来给项目添加一些属性集.

2.deployment assembly,部署时需要设置那些文件,需要把哪些库导出
3.compiler设置一下compliance
4.build path添加library>server runtime

十一.在intelliJ中新建maven archetype-webapp速度奇慢

这是因为默认情况下,都去服务器上下载archetype,下载速度比较慢.解决方案有两种:

  1. 在创建Maven项目时加上 archetypeCatalog=internal 参数
  2. 在maven的VM Options加上-DarchetypeCatalog=internal参数

这个问题解释如下

archetypeCatalog表示插件使用的archetype元数据,不加这个参数时默认为remote,local,即中央仓库archetype元数据,由于中央仓库的archetype太多了,所以导致很慢,指定internal来表示仅使用内部元数据

第一种方法只能在这一次生效,第二种方法能永远生效.

十二.eclipse中的tomcat服务器webapp的位置

$WORKSPACE\.metadata\.plugins\org.eclipse.wst.server.core
当遇到部署问题时,可能是因为tomcat过去的部署影响了现在的正常部署.

  • 解决方案一,server视图下将tomcat clean一下.
  • 解决方案二,进入上述目录清空一下这个文件夹

十三.maven缺少包,本地已经缓存一部分,需要强制更新

mvn clean compile install -e -U

总结

对于以上这种bug,通过它们的解决方案可以找到一些规律:

  • 清空一下
  • 重启一下
  • 属性改一下
  • 把异常复制粘贴,百度一下,stackOverflow上的通常是正解

像这些bug,有的是历史遗留问题,有的是各大组织代码不协调不一致问题,有的问题是默认配置太坑不够人性化.这些问题本身都是很没意义的,与其研究它们,不如学些别的有用的知识.然而,如果你能快速解决这些细节犄角旮旯的小问题,你就会被人称为"厉害".

老子曰:盖闻善摄生者,路行不遇兕虎,入军不被甲兵;兕无所投其角,虎无所措其爪,兵无所容其刃。夫何故?以其无死地。

但愿我能时时刻刻走在正确的平坦的大路上.

转载于:https://www.cnblogs.com/weiyinfu/p/6058035.html

maven webapp栽坑录相关推荐

  1. IDEA maven webapp项目not find catalina.jar 错误

    IDEA maven webapp项目not find catalina.jar 错误 原因:可能是Tomcat没有安装 第一次使用maven创建项目,是参照一篇博文一步一步操作,但在运行时却弹出no ...

  2. sts写java没有自动补齐,STS 创建 Maven 项目填坑

    用 STS 创建 Maven 项目并不复杂,只是其中有一些坑在里面,我在解决这些坑的时候发现很多人都遇到了相同的问题,因此把创建的步骤记录在这里.所有的步骤不外乎就是一些套路,并没有什么复杂的地方,只 ...

  3. Intellij Idea 创建maven WebAPP项目

    结合上一篇环境搭建,下面通过idea创建一个webapp项目 Mac配置Tomcat 打开idea,点击create new project 选中Create from archetype 选中之后才 ...

  4. 无框架,简单maven webapp骨架跑一个项目 (快速回忆基本使用及其流程用)

    文章目录 0.先建数据库 一.建立IDEA基本环境 1.1 新建module 1.2 选择maven->webapp骨架 1.3 改名称和包名 1.4 第一次要修改maven仓库配置 1.5 f ...

  5. Maven Webapp项目中配置Tomcat

    1.在idea中配置并启动tomcat 接上一条使用模板创建一个webapp项目的博客,在配置完maven之后,要配置tomcat  在这里点击ok之后会出现一个警告 要解决上面那个警告,可以点右边的 ...

  6. Android GooglePay 填坑录

    转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/106197857 本文出自[赵彦军的博客] 目录 1.基础概念坑 2.支付坑 3.发 ...

  7. cesium 3dtiles 加载本地数据_深入echarts学习:加载跨域、异步、本地json数据的防坑录

    1 说明: ===== 1.1 推荐指数:★★★★ 1.2 网上这方面说明,大多模棱两可,坑很多,讲透彻的不多,故本人做一个小结. 1.3 我曾介绍echarts的简单基本用法: <Echart ...

  8. 小程序坑录-wx.getLocation接口申请

    最近在用uni-app通用框架做h5和小程序,结果在小程序审核的时候,又遇到了很多天坑,故记录之. 从2022 年 7 月 14 日开始,使用位置接口,就必须在app.json中进行声明了,除此之外, ...

  9. maven项目创建出错Could not calculate buil d plan:Plugin org.apache.maven.plugins 避坑

    遇见问题: 首先检查是否完成maven配置,可以参考大佬教程: https://www.cnblogs.com/pengyan-9826/p/7767070.html 如果解决了,那就恭喜了 如果还是 ...

最新文章

  1. 如何进行网络推广浅析网站长尾词优化该如何更好地操作?
  2. HDU 3954 Level up(线段树)
  3. 第一届河北工业大学程序设计竞赛校赛 【个别题的解析】
  4. int *p,cons int *p,int const *p,int * const p,const int * const p,int const * const p的区别
  5. Python正则表达式如何进行字符串替换
  6. django-后台管理-表显示相关
  7. STM32工作笔记0028---上拉电阻,下拉电阻
  8. Java日常编程优化细节
  9. python集合的元素可以是_Python - 集合与元素之集合定义和基本操作方法
  10. jmeter接口性能测试实例
  11. 计算机科学数学背景,Emory的Mathematics and Computer Science「埃默里大学数学与计算机科学系」...
  12. 夜深了,最好喝点咖啡
  13. word撰写格式系列2
  14. 如何判断一个APP页面是原生的还是H5页面
  15. 计算机内存条多大容量,电脑内存条到底怎么选?选多大容量最合适?
  16. datagrip连接sqlserve发生[08S01] 驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接
  17. appuim+python+MUMU模拟器连接方法
  18. VS2015:libcurl静态编译
  19. CNC系统G代码M代码大全
  20. 软件设计师之法律法规知识

热门文章

  1. 夯实Java基础(十九)——集合
  2. django框架之模板系统
  3. sklearn-preprocessing预处理数据的方法
  4. HttpURLConnection的使用步骤
  5. Introduction to replication 翻译
  6. Debug Assertion Failed.Expression:_BLOCK_TYPE_IS_VALID(phead-nBlockUse)
  7. 我在用的浏览器插件利器
  8. 【jQuery笔记Part2】02-jQuery展开收起动画帷幔效果案例下拉菜单案例显示隐藏更多案例折叠菜单案例
  9. 软件测试学习指南(更新中)
  10. SELinux系列(十七)—awk命令使用详解