Maven工程的搭建
1、什么是Maven?
Maven这个单词的本意是:专家,内行。读音是[‘meɪv(ə)n]或[‘mevn],不要读作“妈文”。Maven是一款自动化构建工具,专注服务于Java平台的项目构建和依赖管理。在JavaEE开发的历史上构建工具的发展也经历了一系列的演化和变迁:Make→Ant→Maven→Gradle
2、Maven可以用来做什么?
1)项目构建
2)依赖管理
3、什么是项目构建?
所谓把动态的Web工程经过编译得到的编译结果部署到服务器上的整个过程。
编译:java源文件[.java]->编译->Classz字节码文件[.class]
部署:最终在sevlet容器中部署的不是动态web工程,而是编译后的文件
a、构建的过程:
①清理:将以前编译得到的旧文件class字节码文件删除
②编译:将java源程序编译成class字节码文件
③测试:自动测试,自动调用junit程序
④报告:测试程序执行的结果。
⑤打包:动态web工程打war包,java工程打jar包
⑥安装:Maven特定的概念—–将打包得到的文件复制到“仓库”中的指定位置
⑦部署:将动态Web工程生成的war包复制到Servlet容器下,使其可以运行。
b、自动化构建
简单的说来就是它可以自动的从构建过程的起点一直执行到终点:maven可以帮助我们,从清理-编译-测试-报告-打包-部署全过程一站式完成。
4、什么是依赖管理?
简单的说,就是当我们导入jar的时候,如果该jar包依赖其他jar,它会自动帮我们把它依赖的其他jar自动导入。
5、maven的命令
1)mvn clean:表示运行清理操作(会默认把target文件夹中的数据清理)。
2)mvn clean compile:表示先运行清理之后运行编译,会将代码编译到target文件夹中。
3)mvn clean test:运行清理和测试。
4)mvn clean package:运行清理和打包。
5)mvn clean install:运行清理和安装,会将打好的包安装到本地仓库中,以便其他的项目可以调用。
6)mvn clean deploy:运行清理和发布(发布到私服上面)。
2、Maven的安装配置
1、
下载地址
:[http://maven.apache.org/download.cgi]
2、配置
-
确保jdk环境变量正确
2)配置环境变量
M2_HOME:D:\apache-maven-3.3.9
path: %M2_HOME%\bin
3)验证是否成功
在命令行输入:mvn -v或者mvn -version
3、Maven仓库分类
1)本地仓库 2)远程仓库(a、中央仓库 b、私服 c、其他的公共仓库)
4、仓库
Maven项目需要的jar是在pom.xml文件中通过坐标来声明的,我们在构建的时候,会根据坐标到本地仓库中找到对应的jar,如果没有找到就到中央仓库或者国内的私服上去下载,将下载的jar保存到本地仓库。这样工程就可以顺利的构建,不会因为找不到jar而失败。
1)本地仓库
2)远程仓库-中央仓库
3)远程仓库-私服
4)镜像仓库
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>central</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
默认的内置Maven
全局maven配置
通过Maven可以创建的工程的类型:
1)普通的java工程,它的打包方式是jar
项目位置:
2)普通的javaWeb工程,它的打包方式是war
3)可以多模块工程(父工程和子模块),父工程的打包方式是POM,子工程根据需要可以是jar,也可以是war
4)xxxxx-site是父工程模板,xxx-webapp是web工程,xxx-quikstart是maven工程
3、maven的依赖高级特性
1)依赖的传递性
如果项目p3依赖工程p2,而工程p2又依赖工程p1,那么当我们在p3中添加p2的依赖的时候,Maven会自动帮我们把传递的p1依赖添加进行(不需要用户自己去做)
2)依赖版本的原则
a)路径最短者优先原则(层次最浅原则):如果p3依赖p2和p1,而p2依赖p1,由于依赖具有传递性。那么对应p3来讲,它需要解决到底是依赖p2传递的p1,还是直接依赖p1的版本的问题?根据原则,p1在p3中的层次比p2传递的p1的层次浅,因此最终依赖的是在p3中直接声明的p1
b)路径相同先声明优先原则:对应传递的依赖,哪个写在前面,就依赖哪个传递的版本。比如p4依赖p2和p3,p2依赖p1的1.0版,p3依赖p1的2.0版本。在p4中必须对传递过来的p1的两个版本1.0和2.0进行版本的仲裁。结果就是谁先写在pom.xml的前面谁先依赖。
4、idea中创建Maven工程
A、全局的配置
B、工程创建
1)步骤
说明:快照版代表还不稳定的版本,等稳定后就会发布正式版
2)Maven工程的标准目标
3)为什么 maven 工程的目录结构要这样呢?
a)Maven 要负责项目的自动化构建,以编译为例,Maven 要想自动进行编译,那么它必须知道 Java 的源文件保存在哪里,这样约定之后,不用我们手动指定位置,Maven 能知道位置,从而帮我们完成自动编译。
b)遵循 约定>配置>编码。即能进行配置的不要去编码指定,能事先约定规则的不要去进行配置。这样既减轻了劳动力,也能防止出错。
4)Maven默认约定了一套目录结构,在通过Maven创建了项目以后,项目的目录结构就是以这套目录结构作为模板创建的。
文档中关于所有目录结构的含义如下:
src/main/java Application/Library sources
src/main/resources Application/Library resources
src/main/filters Resource filter files
src/main/webapp Web application sources
src/test/java Test sources
src/test/resources Test resources
src/test/filters Test resource filter files
src/it Integration Tests (primarily for plugins)
src/assembly Assembly descriptors
src/site Site
LICENSE.txt Project’s license
NOTICE.txt Notices and attributions required by libraries that the project depends on
README.txt Project’s readme
5、Maven构建SSM工程
1、拷贝文件:7个文件的拷贝
a)修改工程结构,将项目补充成标准的maven web (目录结构看上图)
b)拷贝如下文件到resoureces文件夹
1)applicationContext.xml:spring框架的配置文件
2)springmvc.xml:springmvc的配置文件
3)SqlMapConfig.xml:mybatis的主配置文件
4)log4j.properties:日志的属性配置文件
5)db.properties:数据库的属性配置文件
6)web.xml拷贝到webapp的WEB-INF下面
7)pom.xml拷贝到src下面
2、检查配置文件的内容(注意7次修改)
1)修改db.properties,注意账号和密码,以及数据库的名称
2)applicationContext.xml注意的位置(5个位置)
3)springmvc.xml 1个位置
4)在webapp的WEB-INF下建立jsp的文件夹
反向工程生成代码
1、将generatorConfig.xml放在resources资源文件夹下面.
2、在电脑的某个文件夹下面放置mysql-connector-java-5.1.38.jar
3、修改generatorConfig.xml配置文件,主要是数据库名、用户名、密码、实体类的包名、mapper.xml的包名、Mapper接口的包名、指定自动生成的表
4、执行