1、maven功能介绍
2、maven整合javaweb案例
3、私服应用(了解)
4、总结
5、相关资料下载
6、参考文章javascript
Maven的Apache公司开源项目,是项目构建工具。用来依赖管理。
1.1 maven的好处
使用传统项目开发crm项目,项目大小:html
一样的项目使用maven开发java
一样的代码,实现功能都同样,maven项目如何作到的?能够初步推断maven项目中必定没有jar包。没有jar包的maven项目如何运行?
Maven项目找jar包过程:web
1.2 maven的好处api
maven的两大核心:
依赖管理:对jar包管理过程
项目构建:项目在编码完成后,对项目进行编译、测试、打包、部署等一系列的操做都经过命令来实现tomcat
经过maven命令将web项目发布到tomcat:服务器
舒适提示:使用myeclipse或者IDEA时,maven命令无需出现mvn,直接tomcat:run便可。eclipse
1.3 Maven工程的分类
打包方式
常见:jar、war、pomssh
Jar包
编译完成,打包
会打成一个JAR包,用做jar包使用maven
war包
是一个Web工程
发布在服务器上的工程,好比,网站或服务
未来咱们会将全部的JAR包,打到一块儿
打到一个war包里面,能够部署到Tomcat上
Pom
聚合工程
通常都是父工程,管理jar包的版本、maven插件的版本、统一的依赖管理
Pom工程中,至少要有一个war包
maven程序安装前提:maven程序java开发,它的运行依赖jdk。
2.1 maven的下载安装
下载安装包
解压到本地磁盘(解压目录不要有中文,空格)
配置环境变量,Jdk环境变量:JAVA_HOME
将maven_home环境变量配置到path环境变量中
查询maven的版本信息:
2.2 配置本地仓库
本地仓库是指jar包存放的文件夹
2.3 maven配置中央仓库,阿里云仓库地址
使用maven自带的中央仓库地址很慢,因此咱们能够改为国内的地址,好比阿里云,jar包下载到本地仓库的速度就会快不少,具体配置以下:
打开maven安装目录conf下的settings.xml文件,大概在145行找到<mirrors>下添加如下代码:
<mirror> <id>maven.net.cn</id> <mirrorOf>central</mirrorOf> <name>central mirror in china</name> <url>http://maven.net.cn/content/groups/public</url> </mirror>
对项目中文件进行细分:
4.1 clean:清理
将项目根目录下target目录清理掉。
4.2 compile:编译
将项目中.java文件编译为.class文件
4.3 test:单元测试
单元测试类名有要求:XxxxTest.java
将项目根目录下src/test/java目录下的单元测试类都会执行。
4.4 package:打包
web project ---- war包
java project -----jar包
将项目打包,打包项目根目录下taget目录
4.5 install:安装
解决本地多个项目公用一个jar包。
打包到本地仓库
4.6 舒适提示
使用myeclipse或者IDEA时,maven命令无需出现mvn,直接tomcat:run便可。
依赖范围:默认是compile
若是将servlet-api.jar设置为compile,打包后包含serlvet-api.jar,war包部署到tomcat跟tomcat中存在servlet-api.jar包冲突。致使运行失败。
若是使用到tomcat自带jar包,将项目中依赖做用范围设置为:provided,其余能够默认
6.1 依赖传递规则介绍
传递依赖:A(项目)依赖B,B依赖C(1.1版本),B是A的直接依赖,C就是A的传递依赖
导入依赖D,D依赖C(1.2版本)
6.2 Maven本身调解原则
第一声明者优先原则
谁先定义的就用谁的传递依赖。
路径近者优先原则
直接依赖级别高于传递依赖。
6.3 排除依赖
方法一:
方法二:版本锁定(推荐使用)
1.1 配置eclipse中maven环境
配置m2e插件,Mars2版本自带maven插件
须要配置maven程序
配置userSetting:让eclipse知道maven仓库位置
1.2 建立maven的javaweb项目
建立好的web项目,可能出现如下错误:
(1)web.xml缺失
(2)jdk编译版本1.5,在pom.xml中添加插件
(3)建立servlet,serlvet编译报错,缘由:缺失servlet-api-xx.jar包
1.3 maven命令运行项目
2.1 拆分、聚合基本介绍
对如今已有maven ssh项目进行拆分,拆分思路:将dao层的代码已经配置文件全体提取出来到一个表现上独立的工程中。一样service、action拆分。
ssh-parent: 父工程
ssh-dao:(子模块)
ssh-service
ssh-web
拆分完成对拆分后的项目进行聚合,提出概念父工程
2.2 建立父工程
建立好父工程目录结构:只有pom.xml,能够推断父工程不进行编码。
(1)项目须要的依赖的信息,在父工程中定义,子模块继承过程
(2)将各个子模块聚合到一块儿
2.3 将建立父工程发布到本地仓库
将父工程发布到本地仓库后,其余的字工程才能继承使用
2.4 建立子模块ssh-dao
舒适提示:子模块须要右键父项目新建Module。
ssh-dao负责数据访问层:包含dao相关代码&配置文件
建立以后,将ssh-dao发布到本地仓库,给2.5的ssh-service进行依赖
2.5 建立子模块ssh-service
将ssh-service工程打包到本地仓库,给2.6的ssh-web项目添加依赖
2.6 建立子模块ssh-web:war
在ssh-web项目中添加service工程依赖。
2.7 运行方式
Maven方式:
方式1:运行父工程。父工程将各个子模块聚合到一块儿。将ssh-web打war包发布到tomcat
方式2:直接运行web工程
其余方式:部署到tomcat
下载安装包
解压到本地磁盘
使用管理员权限打开dos,在dos下执行命令安装私服
启动服务
找到私服的访问url
Hosted:宿主仓库
存放本公司开发的jar包(正式版本、测试版本、第三方:存在版权问题--Oracle)
Proxy:代理仓库
代理中央仓库、Apache下测试版本的jar包
Group:组仓库
未来链接组仓库。包含Hosted:宿主仓库,Proxy:代理仓库
在maven目录下conf/settings.xml.认证:配置用户名密码
<server> <id>releases</id> <username>admin</username> <password>admin123</password> </server> <server> <id>snapshots</id> <username>admin</username> <password>admin123</password> </server>
在将要上传的项目的pom.xml中配置jar包上传路径url
<distributionManagement> <repository> <id>releases</id> <url>http://localhost:8081/nexus/content/repositories/releases/</url> </repository> <snapshotRepository> <id>snapshots</id> <url>http://localhost:8081/nexus/content/repositories/snapshots/</url> </snapshotRepository> </distributionManagement>
执行命令发布项目到私服(上传)
在maven目录下conf/settings.xml。配置模板
<profile>
<!--profile的id--> <id>dev</id> <repositories> <repository> <!--仓库id,repositories能够配置多个仓库,保证id不重复--> <id>nexus</id> <!--仓库地址,即nexus仓库组的地址--> <url>http://localhost:8081/nexus/content/groups/public/</url> <!--是否下载releases构件--> <releases> <enabled>true</enabled> </releases> <!--是否下载snapshots构件--> <snapshots> <enabled>true</enabled> </snapshots> </repository> </repositories> <pluginRepositories> <!-- 插件仓库,maven的运行依赖插件,也须要从私服下载插件 --> <pluginRepository> <!-- 插件仓库的id不容许重复,若是重复后边配置会覆盖前边 --> <id>public</id> <name>Public Repositories</name> <url>http://localhost:8081/nexus/content/groups/public/</url> </pluginRepository> </pluginRepositories> </profile>
激活模板
<activeProfiles> <activeProfile>dev</activeProfile> </activeProfiles>
Maven好处包括如下几点
一、再也不拷贝jar包。项目不须要存放jar包。致使项目源代码小
二、使用maven开发的工程,若是环境统一导入别的maven的项目不会报错
三、代码耦合度进一步下降.
四、方便项目进行升级
五、节省人力成本
连接:https://pan.baidu.com/s/1UUCps9Be3n8ZwGOXmVjfgw
提取码:s15f