1.tomcat,maven(纯Java开发)都是有java开发的,所以maven项目里可以不需要tomcat,因为maven自带tomcat插件;
2.项目构建需要做的工作:开发-编译-测试-运行-打包-部署
maven可以做的事:编译-测试-运行-打包(war/jar)-部署(把打成的war包放到tomcat的webapps下即可) (除开发外,都可以由maven完成)
除此之外,依赖管理(jar包管理,)
3.maven常用命令
tomcat:run /tomcat7:run
clean 清除target目录(清除编译)
compile 编译项目,产生target目录(只编译src/java/main目录下文件;不编译src/java/test下文件)
test 编译加运行测试(test测试下的文件)
package 打包到项目target目录下(war包或jar包/项目中pom文件中有设置打包方式)
jar包名称 artifactId-version.jar
install 打包到本地仓库中(包括package命令) --安装到仓库/groupId/artifactId/version 目录
maven build 使用之前操作过的命令
maven build… 手动输入maven命令内容
deploy 打包到公司私服nenex
6.一个项目的生命周期
清理 编译 测试 报告 打包 部署
plugin goal(插件目标) maven管理项目生命周期都是基于插件完成的
7.项目构建
安装配置maven插件(m2e插件) :mars2不需要安装,eclipse已集成
添加依赖: 无maven索引时先添加本地仓库索引
创建maven索引:进入maven–maven Repositories–local Repositories–右键Rebuild index (创建索引后就可以不用手动添加依赖,可以直接从本地仓库中查找,搜索依赖名称即可)
maven坐标
插件(plug-in):是一种计算机应用程序,它和主应用程序(host application)互相交互,以提供特定的功能
创建maven工程 (跳过骨架,要是不跳过骨架项目目录不全)
quickstart是java工程(jar包) webapp是web工程(war包)
设置编译版本(jdk版本) 在pom文件中添加maven自带编译插件(eclipse自带编译器jdt,不许用jdk只需用jre即可)
settings.xml中的配置是针对所有的项目的,而pom.xml中的配置是针对当前项目的,pom.xml中的配置会覆盖settings.xml中的配置。
-
maven常用pom.xml文件 (project object model)
坐标:
--公司或组织名称/域名
--项目名称/模块名称
--版本号 当前项目版本号,snapshot为快照版本即非正式版本 ,release为正式发布版本;
--打包方式 (war,jar pom(pom指父项目,打成包后里边没有war或jar包,只有包的描述信息))
--无实际含义文件根节点
pom.xml使用的对象模型版本
产品的版本号
打包方式
项目的显示名,常用于maven生成的文档
项目描述 常用于maven生成的文档
项目依赖构建配置,配置项目构建的坐标
项目构建配置,配置编译运行插件
5.依赖管理
add Dependency时,添加依赖坐标时需指定依赖范围 scope(依赖适用范围)
scope包括5种:
compile(默认依赖范围) 编译,测试,运行打包都需要
provided(两jar包有冲突时,用此范围) 编译,测试需要;运行打包不需要
test 只测试时需要,不打包
runtime 测试,运行需要打包
system(不推荐)
6.可通过plugin修改tomcat访问路径和端口
org.codehaus.mojo --公司或组织名称/域名
tomcat-maven-plugin --项目名称/模块名称
1.1
tomcat端口号
7.debug调试时:
debug as-- maven build
调试跳转出现问题:run configuration–source–添加工程
8.maven仓库
本地仓库 (自己维护)
远程仓库《私服》 (公司维护)
中央仓库 (maven团队维护)
9.依赖传递(添加一个jar会发现程序中出现了很多jar) 会有依赖冲突
解决依赖版本冲突的原则:
路径近者优先原则(根据远近亲疏) ,可以自己添加不用依赖传递的jar
第一声明优先原则 用在前边的jar
排除原则写要排出的jar包《groupId》
版本锁定原则 <坐标包括version>
可以把锁定的版本写到一起,下边在版本锁定处引用<自定义版本属性>4.2.4.version<>
10.ssh整合开发 搜索 ssh pom
传统项目 分层开发 web Service dao bean
大型项目 分业务开发 用户管理 支付管理 对账
11.分模块开发(传统)
父工程(指挥) 不干事,都交给子工程去完成
子工程创建:在富工程上新建maven module
先做一个父工程,把所需jar都放到父工程中,打包到本地仓库;在父工程中右键创建maven module(添加自己模块所需jar)
继承和聚合 (最终web打war包,运行的是web里的代码,也可运行parent中的代码)
依赖范围对依赖传递造成影响 service模块引用dao模块的包时,会受到传递范围的影响
scope:test没有传递依赖 解决:把需要的依赖添加进来就行(分模块)
把本地子项目关掉,就回去本地仓库找jar包,否则导入的就是项目文件
12. 私服(nexus)
私服搭建(安装) B/S访问方式 浏览器访问,地址http://ip地址:端口号/nexus
cmd-进入bin目录 nexus.bat install
安装成功标志:服务中有
nexus.bat start 启动
用户名密码默认 admin/admin123
仓库类型有4种: 都有连接地址
virtual
proxy 代理了apache-snapshot/中央仓库《仓库》
hosted 第三方,releases,snapshot《仓库》
group 包括第三方,releases,snapshot,central《仓库》
- 上传jar到私服 deploy
配置上传的私服地址:
在pom.xml中配置:
release版本
release版本jar的仓库地址
</>
snapshot版本
snapshot版本仓库地址
</>
上传权限:在setting文件中添加
私服上对应仓库id
登录nexus用户名
密码
从私服下载jar包:
setting.xml文件:
找到profiles标签,添加下载仓库信息
dev
release版本
release版本jar的仓库地址 group仓库地址就行
true //是否下载releases构件