以下为《MAVEN学习笔记》的无排版文字预览,完整内容请下载
MAVEN工具
第一章.Maven介绍
? ? ?
Maven是由Apache基金会提供一个【免费】项目管理工具,其本身是由Java编程语言开发的
2.Maven可以简化项目开发过程中【jar包管理】和【项目结构】的难度
3.Maven是目前最好的项目管理工具,今后所有的项目都需要Maven帮助
第二章. Maven提供帮助
1.Maven工具可以帮助开发人员简化【项目构建】管理难度.
?2.Maven工具可以帮助开发人员简化【jar包】管理难度.
?3.Maven工具可以帮助开发人员简化【项目解构】管理难度
?
第三章. Maven安装配置 ? ?
1.Maven下载
Maven工具官网地址:?https://maven.apache.org/
点击【Download】进入到MAVEN下载页面,目前官网提供最新版本是“3.6.3”版。点击标注的下载链接地址就可以将MAVEN的安 装包下载到本地计算机上。
Maven安装
Apache提供的MAVEN是一个绿色免安装版,只要将压缩包解压即为安装成功。
Maven配置
将MAVEN工具中bin文件地址注册到WINDOWS中【path环境变量】中,此时我们可以在windows系统任何地方使用MAVEN提供的命令来操作MAVEN工具
测试Maven工具
在cmd窗口中输入 mvn -v?查看maven工具版本
此处Maven工具尚未配置完成,但此时Maven工具具备足够让我了解如何使用Maven工具对项目的【构建】进行管理。在进行项目构建之前,先了解一下Maven工程
Maven工程
Maven工具并不能对所有的项目进行管理。只能对【MAVEN工程】进行管理。那么什么是【MAVEN工程】呢?
Maven工程
依据MAVEN工具提供的规范所创建的工程是MAVEN工程。目前所有的MAVEN工程的结构都是遵守MAVEN-4.0规范
Maven工程结构
MAVEN工程结构设计目的
MAVEN项目要负责项目的构建管理。以编译为例,MAVEN要编译必须知道Java源文件存放的位置。所有MAVEN项目中存放Java源文件的位置都是一致的,MAVEN工具就可以自动到约定的位置进行定位,省略了开发人员手动通知麻烦
pom.xml介绍
pom是Project Object Model的缩写,翻译中文的意思就是【工程对象模型】。在MAVEN工具中将每一个MAVEN工程都作为一个对象进行管理。每一个MAVEN都需要
声明一个pom.xml文件。在MAVEN工程构建这个项目时通过pom.xml文件了解当前工程的ID编号,编译当前工程需要使用的JDK版本号等信息
创建一个Maven工程
第一步: 在D盘下创建一个文件夹,命名为【maven_project】这个就是我们的Maven工程
第二步:在【maven_project】下创建src文件夹。然后在src文件夹下分别创建main和test文件夹
第三步:分别在main和test文件夹下创建java和resuorces文件夹
第四步:在src/main/java下创建一个Student类。
类路径 com.bjpowernode.entity
??package com.bjpowernode.entity
public class Student
??{
????public void sayHello(String name){
???????System.out.println("hello "+ name);
????}
????public void study(String course){
???????System.out.println("study hard "+course);
????}
????public void play(String game){???????
???????System.out.println("play "+game);
????}
????}
第五步:在【maven_project】下创建pom.xml文件
接下来我们聊聊pom.xml文件的编写细节
pom.xml之工程信息配置
pom.xml文件作用:
Maven工程基本信息设置,比如Maven工程坐标的设置
Maven工程之间关系设置,比如继承关系,聚合关系
Maven工程依赖的jar包某某
Maven插件设置
可以说一个Maven工程中可以没有任何代码,但不能没有pom.xml文件。
在第五章中,我们只是对pom.xml文件中工程基本信息配置进行讲解。便于后续学习如何使用Maven工具对工程进行构建管理做一个铺垫。完整的pom.xml文件讲解需要在Maven工具讲解完毕,也就是最后一章才能出现,不要着急。
project标签是pom.xml文件中根目录标签。其他配置标签都要声明在其内部。同时在project标签需要声明Maven工具提供的标签约束
通知Maven工具当前的Maven工程内部结构,便于Maven工具对当前工程进行构建管理时到指定位置中定位源文件和其他资源文件。目前Maven工具对Maven工程结构的最新管理规则是4.0.0规范,这个规范也是Maven工具唯一
支某某的规范。在这个规范中本别指定了Maven_Java工程和Maven_Web工程的内部结构。之前在第四章的【maven_project】依据4.0.0规范来创建的【Maven_Java】工程
4.0.0
Maven项目坐标/GAV
一个Maven工具可以同时管理多个Maven工程。在Maven工具中每一个Maven工程都被作为一个对象进行管理。这一点跟JVM管理class文件的方式一样。在JVM中每一个class文件都是一个Class类型对象。
在Maven工具中每一个Maven工程对象都需要有一个独立的ID编号。这个ID编号被称为【Maven项目坐标】。
为了确保每一个【Maven项目坐标】都是唯一。Maven工具将【Maven项目坐标】的内容设置为三个组成部分。这一点也很好理解。
比如为了***中每一个职员的编号都是唯一。我们也可以将职员编号设置为多个组成部分。比如【部门编号】【项目组编号】【职位编号】【职位等级编号】【入职日期(精确到秒)】【名字缩写】。这样就可以确保每一个职员的编号都是唯一的
【Maven项目坐标】的内容由三个标签组成,分别是,,,因此【Maven项目坐标】也称为GAV.
通常设置Maven工程所属的组,一般携***名或则组织名。比如 com.bjpowenrode
4.0.0
com.bjpowernode
设置Maven工程名称,比如 maven_project
4.0.0
com.bjpowernode
maven_project
表示项目的版本号。一般来说项目版本号由四部分组成。
分别是 【主版本号】.【次级版本号】.【修订版本号】_【后缀名】
【主版本号】:表示技术级别。比如servlet2.0, servlet3.0;其中2与3就是主版本号。主版本号每次变动代表依次全面技术升级。比如servlet3.0使用注解代替了xml文件并引入了异步请求和文件上传优化。相当于对servlet2.0进行了全面升级。
【次级版本号】:表示在主版本基础上进行较小的升级。比如
JDK1.5功能要少于JDK1.8
【修订版本号】:表示对项目原有的BUG修改.比如Maven工具中项目结构规范多年来一直都是4.0.0.说明一直没有发现有任何的瑕疵。反过来说如果一个项目1.8.1 , 1.8.2 ....1.8.390那就说明这个项目本身的Bug数量有点多,让人不太敢用了。
【后缀名】:
SNAPSHOT:开发中项目
RELEASE:正式发布版
RC:发布候选版
GA:基本功能版
4.0.0
com.bjpowernode
maven_project
1.0.0_SNAPSHOT
以上构成了Maven项目坐标内容。即Maven工程的ID。
表示Maven工程在打包环节中打成的包某某,一般Maven_Java工程打成jar包。Maven_Web工程打成war包
也可以打成其他包:
maven-plugin
rar
ejb
ear
4.0.0
com.bjpowernode
maven_project
1.0.0_SNAPSHOT
jar
第六章:阶段总结
在第四章与第五章我们学习了如何生成一个符合Maven规范的Maven工程以及pom.xml文件基本配置。这两章的目的是为了我们学习使用Maven工具对项目进行构建做的铺垫。
毕竟要使用Maven工具进行构建,你手上总的有个Maven工程吧。
第七章:项目构建生命周期
什么是Maven的项目构建生命周期
在Maven工具产生之前,项目构建这个概念就已经存在了。简单来说就是开发人员对项目进行清理,编译,测试,部署等工作。但是***在项目构建过程中操作步骤以及使用工具各不相同,简单说就是大家各自按照自己习惯去搞,导致后期项目维护时难度极大。
Maven工具作者通过大量项目构建案例和构建工具的学识和使用进行反思。总结了一套高度完美的,易扩展的生命周期。这个生命周期包含了项目的清理,初始化,编译,测试,打包,集成测试,验证,部署和站点生成等几乎所有构建步骤。
Maven的生命周期是抽象的,这意味着生命周期本身不做任何实际工作,在Maven的设计中,实际任务(如源代码编译)都交由插件来完成。
Maven指定的构建生命周期:
清理阶段: 即clean阶段,这个阶段将之前开发测试时生成class文件,资源文件,jar包从硬盘中清理。
default阶段:是项目构建生命周期核心阶段,主要涉及编译,测试,打包等工作
site阶段:生成项目API文档
3.default阶段
第八章:使用Maven进行项目构建
在maven_project位置中进入到CMD窗口中
mvn validate
主要检测pom.xml文件的配置标签是否书写正确
3 mvn compile
这个命令自动将src/main/java文件中所有java文件编译为class
编译后的class文件会被Maven工具自动存入工程中target文件夹中。这个target文件夹由Maven工具生成的。
mvn test
这个命令自动将src/test/java文件夹中所有的java文件编译为class文件并保存到target中。然后自动运行每一个测试方法。
在当前工程中,由于我们还没有引入junit.jar因此没有写测试类。在讲到Maven对工程中jar包某某在演示
mvn pakage
将target中classes文件所有的类文件打成jar包某某war包。
并存放到target文件中
至于是打成jar包某某war包,则根据Maven工程中pom.xml中标签来指定。
mvn install
将target中jar包添加到maven工具的本地仓库中。
Maven工具会自动在当前计算机生成一个本地仓库。用于对当前计算机中的Maven工程提供jar包某某.
本地仓库默认位置:
Maven工具安装地址/conf/settings.xml中看到如下内容
红线处就是Maven本地仓库地址
C://user/window系统登录名/.m2/respository
mvn deploy
将target中jar或则war包推送到远程的Maven仓库
mvn clean
将target文件所有的内容都清除
pom文件之build标签
build标签作用
简单来说build标签来指导Maven工程对Maven工程的构建生命周期设置,也就是告诉Maven工具当前maven工程源文件在哪里,生成的class要放到哪里去。以及参与清理,编译,测试,打包的工具类来自于哪里。
细说的话,build标签有两个功能
功能1:通知Maven工具当前MAVEN工程资源文件位置以及target的位置
功能2:通知Maven工具在编译时使用插件的信息
build之directory
在maven工具中lib文件下找到如下jar包
maven-model-builder-3.3.9.jar.打开后找到pom-4.0.0.xml文件
这些包含”directory”的标签用于通知Maven工具当前Maven工程资源文件位置。
:指定target位置。按照如下方式修改
然后再次执行mvn compile时,我们会发现在Maven工程下并没有出现target.在D盘下出现了一个target。
:指定Maven工程中源代码位置。
按照如下修改
然后在[maven_project]下创建lianxi包,在这个包下创建
com.bjpowernode.entity.Teacher
package com.bjpowernode.entity;
public class Teacher
{
public void teach(String course){
System.out.println("teach "+course);
}
}
在cmd窗口先执行mvn clean
再执行 mvn compile
最后到D://target/classes查看
我们可以看到entity包下只有teacher类,而没有Student类。
build之plugins
Maven是通过pom.xml来执行任务的,其中的build标签描述了如何来编译及打包项目,而具体的编译和打包工作是通过build中配置的 plugin 来完成。当然plugin配置不是必须的,默认情况下,Maven 会绑定以下几个插件来完成基本操作。
即在没有配置的情况下,执行mvn clean install时,maven会调用默认的plugin来完成编译打包操作,具体来讲,执行mvn clean install时会执行
maven-clean-plugin:2.5:clean (default-clean)
maven-resources-plugin:2.6:resources (default-resources)
maven-co 内容过长,仅展示头部和尾部部分文字预览,全文请查看图片预览。 -->D_1.2(TestD 没有Method1)
项目A向Maven工具索要TestD类。由于路径相等,此时谁先声明就定位谁。
exclusion
exclusion是dependcy一个子标签。用于阻止加载指定的jar包。目前是Maven工具主要用于jar包冲突的解决方案。
上面案例中。就可以在加载项目E时阻止其依赖的D_1.2jar包的加载
project
projectE
1.1.0
project
projectD
[文章尾部最后500字内容到此结束,中间部分内容请查看底下的图片预览]请点击下方选择您需要的文档下载。
以上为《MAVEN学习笔记》的无排版文字预览,完整内容请下载
MAVEN学习笔记由用户“n灰白”分享发布,转载请注明出处