一、Maven介绍
Apache Maven:https://maven.apache.org/what-is-maven.html
Apache Maven是一个软件项目管理和综合工具。基于项目对象模型(POM)的概念,Maven可以从一个中心资料片管理项目构建,报告和文件。
Maven主要目标是提供给开发人员:
- 项目是可重复使用,易维护,更容易理解的一个综合模型。
- 插件或交互的工具,这种声明性的模式。
Maven项目的结构和内容在一个XML文件中声明,pom.xml 项目对象模型(POM),这是整个Maven系统的基本单元。有关详细信息,请参阅Maven POM的部分。
中心仓库:https://mvnrepository.com/
sonatype:https://search.maven.org/
其他参考资料:
https://www.liaoxuefeng.com/wiki/1252599548343744/1255945359327200
二、Maven安装
由于maven依赖jdk的运行,需要先在本地配置jdk的环境变量,然后在配置maven环境变量,本文暂就不叙述。
a)下载maven文件
JDK 环境安装好之后,接下来正式安装配置 Maven。
下载地址:https://maven.apache.org/download.cgi
解压后:
b)配置maven环境变量
安装好后,接下来对 Maven 进行配置。配置内容同 JDK 的配置内容一样,也是两部分:一部分是在系统环境变量或者用户环境变量中配置一个 MAVEN_HOME;另一部分也是将 Maven 里面的 bin 目录添加到 Path 环境变量。
- *配置 MAVEN_HOME
- *追加 Path
- 测试安装是否成功
打开一个 CMD 窗口,输入”mvn-v”命令运行
c)配置maven本地仓库
实际上我们可以将本地仓库理解”缓存”,目的是存放jar包。开发项目时项目首先会从本地仓库中获取 jar 包,当无法获取指定 jar 包的时候,本地仓库会从 远程仓库(或 中央仓库) 中下载 jar 包,并”缓存”到本地仓库中以备将来使用。
默认路径在我们C盘目录下。这里不建议放到C盘,那么如何修改这个默认配置呢。
打开maven安装目录\conf\setting.xml文件。我自己的路径:E:\maven_3.6.1\apache-maven-3.6.1\conf
某个jar包一旦被Maven下载过,即可永久地安全缓存在本地。
最后检查一下配置是否正确。输入命令: mvn help:system
d)配置maven国内仓库源
Maven是当前流行的项目管理工具,但官方的库在国外经常连不上,连上也下载速度很慢。
在maven的配置文件 settings.xml 中添加
alimaven
central
aliyun maven
http://maven.aliyun.com/nexus/content/repositories/central/
三、Maven基本介绍
a)Maven坐标详解
一个完整的坐标信息,由 groupId、artifactId、version、packaging、classifier 组成,如下是一个简单的坐标定义。
junit
junit
3.8.1
test
groupId :属于组织的名称,类似Java的包名;
artifactId : 该jar包自身的名称,类似Java的类名;
version : 该jar包的版本。
通过上述3个变量,即可唯一确定某个jar包。Maven通过对jar包进行PGP签名确保任何一个jar包一经发布就无法修改。修改已发布jar包的唯一方法是发布一个新版本。
注:只有以 -SNAPSHOT 结尾的版本号会被Maven视为开发版本,开发版本每次都会重复下载,这种SNAPSHOT版本只能用于内部私有的Maven repo,公开发布的版本不允许出现SNAPSHOT。
b)Maven 构建生命周期
生命周期阶段 描述 validate(校验) 校验项目是否正确并且所有必要的信息可以完成项目的构建过程。 initialize(初始化) 初始化构建状态,比如设置属性值。 generate-sources(生成源代码) 生成包含在编译阶段中的任何源代码。 process-sources(处理源代码) 处理源代码,比如说,过滤任意值。 generate-resources(生成资源文件) 生成将会包含在项目包中的资源文件。 process-resources (处理资源文件) 复制和处理资源到目标目录,为打包阶段最好准备。 compile(编译) 编译项目的源代码。 process-classes(处理类文件) 处理编译生成的文件,比如说对Java class文件做字节码改善优化。 generate-test-sources(生成测试源代码) 生成包含在编译阶段中的任何测试源代码。 process-test-sources(处理测试源代码) 处理测试源代码,比如说,过滤任意值。 generate-test-resources(生成测试资源文件) 为测试创建资源文件。 process-test-resources(处理测试资源文件) 复制和处理测试资源到目标目录。 test-compile(编译测试源码) 编译测试源代码到测试目标目录. process-test-classes(处理测试类文件) 处理测试源码编译生成的文件。 test(测试) 使用合适的单元测试框架运行测试(Juint是其中之一)。 prepare-package(准备打包) 在实际打包之前,执行任何的必要的操作为打包做准备。 package(打包) 将编译后的代码打包成可分发格式的文件,比如JAR、WAR或者EAR文件。 pre-integration-test(集成测试前) 在执行集成测试前进行必要的动作。比如说,搭建需要的环境。 integration-test(集成测试) 处理和部署项目到可以运行集成测试环境中。 post-integration-test(集成测试后) 在执行集成测试完成后进行必要的动作。比如说,清理集成测试环境。 verify (验证) 运行任意的检查来验证项目包有效且达到质量标准。 install(安装) 安装项目包到本地仓库,这样项目包可以用作其他本地项目的依赖。 deploy(部署) 将最终的项目包复制到远程仓库中与其他开发者和项目共享。
b)版本管理介绍
通常情况下,Maven 的版本号约定中包括如下几个部分:
- 主版本号:主版本号表示该项目的重大升级。例如:Maven1 到 Maven2;
- 次版本号:表示在该主版本下,较大范围的升级或变化。例如:Maven-3.0 到 Maven-3.1;
- 增量版本号:增量版本通常是用来修复bug的版本。例如:Maven-3.1.1;
- 里程碑版本号:用来标记里程碑版本。例如:Maven-3.0-alpha-3。
c)Maven依赖管理
packaging :定义Maven项目打包的方式,使用构件的什么包。首先,打包方式通常与所生成构件的文件扩展名对应,如上例中没有packaging,则默认为jar包,最终的文件名为junit-3.8.1.jar。也可以打包成war等。
classifier: 该元素用来帮助定义构建输出的一些附件。附属构件与主构件对应,如上例中的主构件为junit-3.8.1.jar,该项目可能还会通过一些插件生成如junit-3.8.1-javadoc.jar,junit-3.8.1-sources.jar, 这样附属构件也就拥有了自己唯一的坐标。
上述5个元素中,groupId、artifactId、version是必须定义的,packaging是可选的(默认为jar),而classfier是不能直接定义的,需要结合插件使用。
Maven定义了几种依赖关系,分别是 compile
、 test
、 runtime
和 provided
:
scope 说明 示例 compile 编译时需要用到该jar包(默认) commons-logging test 编译Test时需要用到该jar包 junit runtime 编译时不需要,但运行时需要用到 mysql provided 编译时需要用到,但运行时由JDK或某个服务器提供 servlet-api
d)Maven命令
如果我们运行 mvn package
,Maven就会执行 default
生命周期,它会从开始一直运行到 package
这个phase为止:
- validate
-
…
-
package
如果我们运行 mvn compile
,Maven也会执行 default
生命周期,但这次它只会运行到 compile
,即以下几个phase:
- validate
-
…
-
compile
Maven另一个常用的生命周期是 clean
,它会执行3个phase:
- pre-clean
- clean (注意这个clean不是lifecycle而是phase)
- post-clean
在实际开发过程中,经常使用的命令有:
mvn clean
:清理所有生成的class和jar;
mvn clean compile
:先清理,再执行到 compile
;
mvn clean test
:先清理,再执行到 test
,因为执行 test
前必须执行 compile
,所以这里不必指定 compile
;
mvn clean package
:先清理,再执行到 package
。
e)Maven的pom.xml文件
4.0.0
com.onework
onework-maven2
war
1.0-SNAPSHOT
onework-maven
http://www.one-work.net/
A maven project to study maven.
onework
http://onework.cn
Demo
zhongkai1010@163.com
zhongkai1010@163.com
zhongkai1010@163.com
zhongkai1010@163.com
HELLO WORLD
chaimm
zhongkai1010@163.com
Project Manager
Architect
demo
http://onework.cn
No
-5
Apache 2
http://www.baidu.com/zhongkai1010/LICENSE-2.0.txt
repo
A business-friendly OSS license
scm:svn:http://svn.baidu.com/banseon/maven/banseon/banseon-maven2-trunk(dao-trunk)
scm:svn:http://svn.baidu.com/banseon/maven/banseon/dao-trunk
http://svn.baidu.com/banseon
demo
http://www.onework.cn
......
......
Windows XP
Windows
x86
5.1.2600
mavenVersion
2.0.3
/usr/local/hudson/hudson-home/jobs/maven-guide-zh-to-production/workspace/
/usr/local/hudson/hudson-home/jobs/maven-guide-zh-to-production/workspace/
......
......
......
......
......
......
banseon-repository-proxy
banseon-repository-proxy
http://192.168.1.169:9999/repository/
default
......
org.apache.maven
maven-artifact
3.8.1
jar
test
spring-core
org.springframework
true
......
banseon-maven2
banseon maven2
file://${basedir}/target/deploy
banseon-maven2
Banseon-maven2 Snapshot Repository
scp://svn.baidu.com/banseon:/usr/local/maven-snapshot
banseon-site
business api website
scp://svn.baidu.com/banseon:/var/www/localhost/banseon-web
四、构建Maven工程
a)Maven工程目录
一个使用Maven管理的普通的Java项目,它的目录结构默认如下:
a-maven-project
├── pom.xml
├── src
│ ├── main
│ │ ├── java
│ │ └── resources
│ └── test
│ ├── java
│ └── resources
└── target• IDEA 配置 maven 目录
Original: https://www.cnblogs.com/zhongkai/p/15714547.html
Author: OneWork
Title: Maven基础知识与使用总结
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/572984/
转载文章受原作者版权保护。转载请注明原作者出处!