Maven
Maven(项目管理器)
1.Maven:是apach公司一个开源项目.本质就是一个项目管理器.
传统项目的问题:
1 需要把jar复制到项目中,繁琐
2 项目体积更大,不利于维护
3 不利于团队开发
作用:管理依赖(管理项目所需要Jar包);
构建项目(清理、编译、单元测试、打包、安装、部署、运行));
2.Maven安装步骤:
2.1:从官网http://maven.apache.org/download.cgi下载windows版本的maven包
apache-maven-版本号-bin.zip
2.2:解压maven包,解压后有四个目录
bin:maven的脚本运行文件和命令.
boot:存类加载器框架
conf:存放maven配置文件.
settings.xml文件配置仓库的地址.
lib:存放所需要的Jar.
2.3:配置环境变量:我的计算机->右键属性->高级系统设置->环境变量->系统变量
2.3.1:新建->MAVEN_HOME:maven安装路径
(D:\apache-maven-3.6.3-bin\apache-maven-3.6.3)
2.3.2:找到path->在path原路径值的后面;%MAVEN_HOME%\bin
2.4:每次配置好环境变量后,重新打开运行->cmd->mvn -version.
3.Maven检索顺序图
4.配置Maven仓库
4.1:选择一个目录,新建一个文件夹作为本地仓库.
maven安装包下面建一个文件夹repo.
4.2:设置maven配置文件:打开settings.xml文件
4.2.1:配置本地仓库路径:在settings.xml文件的根节点下面
配置本地仓库的路径<localRepository>本地仓库的路径</localRepository>
4.2.2:配置*仓库的境像(远程仓库):在settings.xml文件中找到
<mirrors>节点,在下面 配置*仓库的境像
<!--配置*仓库的镜像-->
<mirror>
<id>alimaven</id>
<mirrorOf>central</mirrorOf>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
</mirror>
4.2.3:配置maven依赖jdk信息:在settings.xml文件中找到节点,在下面配置jdk
<!--jdk的全局配置-->
<profile>
<id>jdk18</id>
<activation>
<activeByDefault>true</activeByDefault>
<jdk>1.8</jdk>
</activation>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.compilerVersion>1.8 </maven.compiler.compilerVersion>
</properties>
</profile>
4.2.4:将maven中conf文件夹中配置好的settings.xml复制
到C:\Users\电脑登录名.m2(如果maven一次都没用过,没有.m2目录就不用配置)
5.将idea与Maven关联上:使用自己下载的maven
6.将eclipse与Maven关联上:使用自己下载的maven
6.1: 首先使用自己的Maven安装文件替换掉Eclipse插件的Maven,如下图:
6.2:配置用户自己maven的配置文件
7.maven项目:
7.1:idea创建maven工程:
7.1.1:第一种:创建Maven的Java Project
7.1.2:第二种:idea创建Maven的Java工程
7.1.3:idea创建Maven版web工程
7.2:eclipse中创建maven项目:在package explore中空白地方->new->Maven project->
注意:
<!-- 打包方式 :项目类型
POM:MAVEN项目,常用在继承和聚合上
JAR:JAVASE项目,没有网页,跟服务器没关系 ,对应java project
WAR:JAVAEE项目,跟服务器没关系,对应web project -->
7.3:maven项目结果
7.3.1:maven项目目录结构:Jar包版本maven项目
src/main/java:存放项目的.java文件
src/main/resources:存放项目资源文件。存放c3p0,Spring,Hibernate配置文件 src/test/java:存放所有测试的.java文件.如Junit测试类
src/test/resources:测试资源文件
target:项目输出位置(可以自动生成)
pom.xml(maven项目核心配置文件,可配置当前项目所依赖的Jar包)
7.3.2:maven项目目录结构:War包版本maven项目
src/main/java:存放项目的.java文件
src/main/resources:存放项目资源文件。如何Spring,Hibernate配置文件 src/test/java:存放所有测试的.java文件.如Junit测试类
src/test/resources:测试资源文件
src/main/webapp:存放前端页面及配置 相当于web项目的webcontent目录
注意:在webapp下自己手动创建WEB-INF目录,在WEB-INF目录复制一个web.xml
target:项目输出位置(可以自动生成)
pom.xml(maven项目核心配置文件,可配置当前项目所依赖的Jar包)
7.4:Maven工程打包方式有三种;
<packaging>Jar</packaging> 创建Maven的Java工程
<packaging>war</packaging> 创建Maven的web工程
<packaging>pom</packaging> 创建父工程,专门用来管理子模块,继承的
7.5:pom.xml配置整个项目所需要外部Jar包(外部Jar包坐标)
6.3.1:在<project>节点中新建一个子节点<dependencies></dependencies>
6.3.2:在<dependencies></dependencies>节点中配置依赖Jar包
打开https://mvnrepository.com/网页,在搜索框中输入需要的包名
将打开类似下面路径,放在<dependencies></dependencies>节点 中
eg: <dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>3.1.12</version>
</dependency>
<dependency>
<groupId>junit</groupId><!--公司或组织名-->
<artifactId>junit</artifactId><!--项目中,包名-->
<version>4.12</version><!--版本号-->
<scope>test</scope> <!--包的使用范围-->
</dependency>
注意:Scope:声明jar包的存活时间
取值说明:
1、provided:编译和测试时需要
2、compile:编译、测试、运行、打包需要 3、runtime:测试、运行、打包需要
4、test:测试
5、system:编译和测试时需要,显示引用,Maven不会检索
7.Maven项目的生命周期:(三套生命周期)
7.1:Clean Lifecycle(Clean生命周期) 在进行真正的构建之前进行一些清理工作。
pre-clean 执行一些需要在clean之前完成的工作
clean 移除所有上一次构建生成的文件
post-clean 执行一些需要在clean之后立刻完成的工作
7.2:Default Lifecycle(Default生命周期) 构建的核心部分,编译,测试,打包,部署 等等。
compile 编译项目的源代码
install 将包安装至本地仓库,以让其它项目依赖。
deploy 将最终的包复制到远程的仓库,以让其它开发人员与项目共享
process-test-resources 复制并处理资源文件,至目标测试目录
process-resources 复制并处理资源文件,至目标目录,准备打包
test-compile 编译测试源代码
test 使用合适的单元测试框架运行测试。这些测试代码不会被打包或部署
package 接受编译好的代码,打包成可发布的格式,如 JAR
validate
generate-sources
process-sources
generate-resources
process-classes
generate-test-sources
process-test-sources
generate-test-resources
process-test-classes
prepare-package
pre-integration-test
integration-test
post-integration-test
verify
7.3:Site Lifecycle(Site生命周期) 生成项目报告,站点,发布站点。
pre-site 执行一些需要在生成站点文档之前完成的工作
site 生成项目的站点文档
post-site 执行一些需要在生成站点文档之后完成的工作,并且为部署做准备
site-deploy 将生成的站点文档部署到特定的服务器上
8.maven构造项目常用命令(了解,重点知道每个命令做什么用):
mvn clean:清理(删除)编译的文件 --执行clean生命周期中pre-clean,clean
使用插件:maven-clean-plugin:2.5:clean
mvn compile:编译主目录的文件 --执行default生命周期中compile
使用插件: maven-resources-plugin:2.6:resources
maven-compiler-plugin:3.1:compile
mvn test: 编译并运行test目录的代码
使用插件: maven-resources-plugin:2.6:resources
maven-compiler-plugin:3.1:compile
maven-resources-plugin:2.6:testResources
maven-compiler-plugin:3.1:testCompile
maven-surefire-plugin:2.12.4:test
mvn package:打包项目,jar包或war包
使用插件: maven-resources-plugin:2.6:resources
maven-compiler-plugin:3.1:compile
maven-resources-plugin:2.6:testResources
maven-compiler-plugin:3.1:testCompile
maven-surefire-plugin:2.12.4:test
maven-jar-plugin:2.4:jar
mvn install: 安装到仓库 --执行clear生命周期及default生命周期中install前面所有过程
使用插件:maven-resources-plugin:2.6:resources
maven-compiler-plugin:3.1:compile
maven-resources-plugin:2.6:testResources
maven-compiler-plugin:3.1:testCompile
maven-surefire-plugin:2.12.4:test
maven-jar-plugin:2.4:jar
maven-install-plugin:2.4:install
9.(扩展)maven升级web项目出现的问题:
9.1:验证码的Jar包是别人写的,*创建中没有,在web项目中想用:
9.1.1:将验证码的包构建到本地仓库中:
9.1.1.1.将ValidateCode.jar包放在C:\Users\用户名下
9.1.1.2.打开cmd进入jar包所在的目录:
输入代码
mvn install:install -file -DgroupId=cn.dsna.util.images
-DartifactId=ValidateCode -Dversion=1.0 -Dpackaging=jar -Dfile=ValidateCode.jar
DgroupId:group id;
DartifactId:名称;
Dversion:版本;
9.1.2:在web项目中pom.xml中引入坐标
<!--验证码的Jar包-->
<dependency>
<groupId>cn.dsna.util.images</groupId>
<artifactId>ValidateCode</artifactId>
<version>1.0</version>
</dependency>
9.2:Maven版本的web项目默认是web2.3版本不支持el表达式,会报Jsp的错误,怎么解决?
第一种:在jsp文件头上添加如下:<%@ page isELIgnored="false" %>
第二种:在web.xml文件中如下定义:
<jsp-config>
<jsp-property-group>
<url-pattern>*.jsp</url-pattern>
<el-ignored>false</el-ignored>
<scripting-invalid>true</scripting-invalid>
</jsp-property-group>
</jsp-config>
第三种:改变web.xml中的头为2.5之上的版本..
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
9.3:项目打包到本地仓库,用猫运行:在idea中的maven管理中点击install->成功后,在本 地仓库中找到打的当前打的war包->丢在tomcat的webapps中(部署)->在tomcat的 bin下startup.bat启动猫(发布)->打开浏览器输入访问项目就可(用户访问).