使用Maven构建项目

一、简单介绍一下maven
maven是apache旗下的一个集项目构建、项目依赖和项目信息管理为一体的自动化工具,是目前最流行的java项目架构管理软件,maven的主要特点:
1、完全java编写,免费、跨平台。
2、自动化构建项目。一键清理、编译、打包、测试、安装、部署以及生成报告等,无需进行繁琐又重复的操作。
3、多种不同的archetype(原型)选择。快速搭建各种不同架构的项目,甚至还可以自己定义archetype来实现自己想要的架构模板。
4、自动化依赖。在项目中需要依赖的第三方jar包时,可以通过简单的配置来实现依赖,如果该jar包还依赖于其他库,maven能够实现自动依赖,同时也能够自动解决版本冲突,jar包冲突等问题,开发人员搭建项目时无需手动找jar包,也不用再为jar包冲突等问题头痛,maven还拥有全世界最丰富的中央仓库,囊括了几乎市面上所有开源的jar包,以maven架构开发的程序也可以被其他maven项目集成。
5、丰富的插件支持。
6、结合Hudson或Jenkins,实现敏捷开发模式 + 持续集成。(其实Hudson是jenkins的前身)

二、Maven的安装【IDEA虽然自动集成了Maven3,但是最好还是安装一个】:
因为Maven也是java语言开发,所以需要依赖jre(java运行时环境)
1、确保电脑上安装了JDK或JRE,并已配好环境变量JAVA_HOME或JRE_HOME
2、下载并解压Maven3到某个指定目录
3、配置环境变量M2_HOME为安装目录,并将bin目录配置到Path变量中
4、在cmd命令窗口中输入 mvn -v检查是否安装配置成功

三、Maven的安装目录结构:
bin:存放maven的运行所需的脚本
boot:存放maven的类加载器框架
conf:存放了maven的配置文件settings.xml
lib:存放maven运行所需要的jar文件

四、Maven的三种仓库
本地仓库:自己电脑上的库,一般默认在C:/user/当前登陆用户/.m2/repository/
远程仓库/私人仓库:公司搭建的仓库,一般可以给整个公司提供jar包下载。
中央仓库:maven官方提供的仓库,供所有互联网用户下载。
【在构建项目时,如果在项目中依赖了jar文件,则先会到本地仓库查看是否有jar文件存在,如果本地仓库有jar文件,则直接添加依赖,如果本地仓库没有,则查看是否配置了远程仓库,如果配置了远程仓库,则到远程仓库下载,如果没有配置远程仓库或远程仓库也没有,则会到中央仓库下载,最终把jar文件下载到本地仓库/远程仓库中】

五、创建Maven项目前需要弄清楚的一些知识点【maven中的坐标】:
groupId:工程ID,一般是一个大工程,通常取工程公有的域名部分作为groupId
artifactId:模块ID,该工程下的某个模块
version:版本号,一般新建项目默认版本号是1.0.SNAPSHOT
【SNAPSHOT为快照,说明版本处于不稳定阶段】
【RELEASE为发行版,说明版本处于稳定可信赖阶段】
package:打包方式,取值有jar、war等,使用maven命令打包时能自动生成jar/war包
【注意groupId、artifactId、version构成了maven的三维坐标,通过这个坐标才能让maven项目找到所依赖的具体组件,所以这个3个不能写出问题】

以spring的aop和web为例子:
groupId: org.springframework
artifactId: spring-aop
version: 5.1.18.RELEASE

groupId: org.springframework
artifactId: spring-web
version: 5.1.18.RELEASE

六、使用IDEA创建Maven项目的步骤:
1、new > module > maven
2、选择一个archetype原型(quickstart、webapp等)
3、填写groupId、artifactId、version
【parent一般是用来开发多模块的,一般不用填写。使用parent后,子模块可以继承一个父模块,则自动继承父模块的groupId、version,还可以继承父模块的依赖配置等】

七、Maven项目的目录结构
src
main
java
resource
webapp
test
java

【其中main为主文件夹,test为测试文件夹,main下又有java和resource文件夹(web项目还有webapp文件夹),java是用来编写java包、类、接口等代码的目录,而resource则是用来存放配置文件的目录,webapp文件夹是用来存放jsp页面等,test下有java文件夹,是用来编写单元测试junit代码的目录】

八、Maven构建命令:
clean:清除,用来清除本地仓库中的组件。
compile:编译,尝试将编写的maven项目编译成class文件
test:测试,运行maven项目的test目录中所有测试类(包括junit)
package:打包,执行clean > compile > test,并将项目打包成jar包或war包。
install:安装,执行clean > compile > test > package,一键清理编译测试打包,最后install会将jar包安装到本地仓库中
deploy:部署,执行clean > compile > test > package > install,最后还会将jar包发布到远程仓库或私服上

【程序打包、安装、部署时,test目录不会出现在jar包中】

九、详细解析pom.xml中的元素
pom.xml是Maven项目的核心文件,它配置了整个Maven项目的构建信息,至关重要。
module-version:pom.xml的版本
groupId:项目的groupId
artifactId:项目的artifactId
version:项目的版本
packaging:打包方式,可以是jar、war、zip、pom等
description:项目的描述
name:项目名
parent:父项目的三维坐标【用于继承】
modules:该项目的所有子项目的artifactId的集合【用于继承】
url:项目的URL地址
properties:声明自定义键值对,以便在pom.xml中重复使用,通过${key}来使用。
dependencyManagement:声明引用的jar包的版本信息【只是声明并不会引用】,该元素是为了方便dependencies中引入jar包时不用写版本用的。
dependencies:依赖配置,它的子元素dependency表示一个依赖的jar包的三维坐标,包括子元素:
groupId、artifactId、version
scope:引入jar包的有效范围,取值一般为compile、test
exclusions:需要排除的依赖包
build:项目构建标签,一般会用到里面的子元素plugin,用来引入插件【自己上官网查看maven插件库去了解】

十、nexus介绍【了解一下】
nexus是一个用来搭建私服的软件。在pom.xml中设置私服地址和deploy插件,再通过deploy命令可以将项目的jar包发布到私服中,并结合jenkins来实现持续集成。

你可能感兴趣的:(Maven,java)