Maven 持续介绍与注意事项
本篇承接上一篇: maven 入门介绍
POM
POM 代表工程对象模型。它是使用 Maven 工作时的基本组件,是一个 xml 文件。它被放在工程根目录下,文件命名为 pom.xml。
能够在 POM 中设置的一些配置如下:
project dependencies
plugins
goals
build profiles
project version
developers
mailing list
所有的 POM 文件需要 project 元素和三个必须的字段:groupId, artifactId,version。
在仓库中的工程标识为 groupId:artifactId:version
示例:
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.companyname.project-group</groupId>
<artifactId>project</artifactId>
<version>1.0</version>
</project>
所有的 POM 都继承自一个父 POM(无论是否显式定义了这个父 POM)。父 POM 也被称作 Super POM,它包含了一些可以被继承的默认设置。
Maven 使用 effective pom(Super pom 加上工程自己的配置)来执行相关的目标,它帮助开发者在 pom.xml 中做尽可能少的配置,当然这些配置可以被方便的重写。
查看 Super POM 默认配置的一个简单方法是执行以下命令:mvn help:effective-pom。
在Eclipse中可以很容易看到effective pom
构建生命周期
构建生命周期是一组阶段的序列(sequence of phases),每个阶段定义了目标被执行的顺序。这里的阶段是生命周期的一部分。
举例说明,一个典型的 Maven 构建生命周期是由以下几个阶段的序列组成的:
阶段 | 处理 | 描述 |
prepare-resources | 资源拷贝 | 本阶段可以自定义需要拷贝的资源 |
compile | 编译 | 本阶段完成源代码编译 |
package | 打包 | 本阶段根据 pom.xml 中描述的打包配置创建 JAR / WAR 包 |
install | 安装 | 本阶段在本地 / 远程仓库中安装工程包 |
当我们执行 mvn post-clean 命令时,Maven 调用 clean 生命周期,它包含以下阶段。
pre-clean
clean
post-clean
Maven 的 clean 目标(clean:clean)绑定到了 clean 生命周期的 clean 阶段。它的 clean:clean 目标通过删除构建目录删除了构建输出。所以当 mvn clean 命令执行时,Maven 删除了构建目录。
Default (or Build) 生命周期
这是 Maven 的主要生命周期,被用于构建应用。包括下面的 23 个阶段。
生命周期阶段 | 描述 |
validate | 检查工程配置是否正确,完成构建过程的所有必要信息是否能够获取到。 |
initialize | 初始化构建状态,例如设置属性。 |
generate-sources | 生成编译阶段需要包含的任何源码文件。 |
process-sources | 处理源代码,例如,过滤任何值(filter any value)。 |
generate-resources | 生成工程包中需要包含的资源文件。 |
process-resources | 拷贝和处理资源文件到目的目录中,为打包阶段做准备。 |
compile | 编译工程源码。 |
process-classes | 处理编译生成的文件,例如 Java Class 字节码的加强和优化。 |
generate-test-sources | 生成编译阶段需要包含的任何测试源代码。 |
process-test-sources | 处理测试源代码,例如,过滤任何值(filter any values)。 |
test-compile | 编译测试源代码到测试目的目录。 |
process-test-classes | 处理测试代码文件编译后生成的文件。 |
test | 使用适当的单元测试框架(例如JUnit)运行测试。 |
prepare-package | 在真正打包之前,为准备打包执行任何必要的操作。 |
package | 获取编译后的代码,并按照可发布的格式进行打包,例如 JAR、WAR 或者 EAR 文件。 |
pre-integration-test | 在集成测试执行之前,执行所需的操作。例如,设置所需的环境变量。 |
integration-test | 处理和部署必须的工程包到集成测试能够运行的环境中。 |
post-integration-test | 在集成测试被执行后执行必要的操作。例如,清理环境。 |
verify | 运行检查操作来验证工程包是有效的,并满足质量要求。 |
install | 安装工程包到本地仓库中,该仓库可以作为本地其他工程的依赖。 |
deploy | 拷贝最终的工程包到远程仓库中,以共享给其他开发人员和工程。 |
资源库
本地资源库:
Maven的本地资源库是用来存储所有项目的依赖关系(插件jar和其他文件,这些文件被Maven下载)到本地文件夹。
默认情况下,Maven的本地资源库默认为 .m2 目录文件夹:
Unix/Mac OS X – ~/.m2
Windows 7– C:\Users\{your-username}\.m2
可改变默认的 .m2 目录下的默认本地存储库文件夹到其他更有意义的名称,例如, maven-repo
找到 {M2_HOME}\conf\setting.xml, 更新 localRepository 到其它名称。
<settings><!-- localRepository
| The path to the local repository maven will use to store artifacts.
|
| Default: ~/.m2/repository
<localRepository>/path/to/local/repo</localRepository>
--><localRepository>D:\inssoftware\apache-maven-3.5.3\repository</localRepository>
中央存储库:
Maven 中央存储库是 Maven 用来下载所有项目的依赖库的默认位置。
Archetype
Archetype是一个Maven项目模板工具包。通过Archetype我们可以快速搭建Maven项目。
常见的Archetype:
1.简单的maven工程骨架
maven-archetype-quickstart
maven-archetype-simple
2.简单的maven web工程骨架
maven-archetype-webapp
使用Archetype的一般步骤
1. 命令——mvn archetype:generate
2. 输入命令后,Archetype插件会输出一个Archetype列表供用户选择;选择自己想要使用的Archetype,输入对应编号
3. 提示输入一些基本参数,如groupId,artifactId,version,package等
4. Archetype插件生成项目骨架
创建Project and 常用命令
执行 mvn archetype:generate ,
会看到常常的输出,有很多可用的Archetype供选择;每一个Archetype前面都有一个对应的编号,同时命令行会提供一个默认的编号,其对应的Archetype为maven-archetype-quickstart,回车选择该Archetype
紧接着Maven会提示输入要创建项目的groupId,artifactId,version及包名package:
除了这种交换模式之外, 还可以一开始就在命令行把参数设置好:
mvn archetype:generate -DgroupId={project-packaging} -DartifactId={project-name}-DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
Maven 常用命令
1. mvn archetype:generate , 创建Project, 上面介绍了, 下面也会介绍带参数的创建方式。
2. mvn compile ; 源码编译, 编译后的文件将放在项目根目录下的target目录中。(.class)
3. mvn test-compile ; 测试代码编译
4. mvn test ; 编译源码和测试源码进行测试
5. mvn package ; 项目打包
6. mvn install ; 安装jar包到Maven的本地仓库
7. mvn deploy; 安装当前项目到远程仓库
8. mvn clean ; 清除存放在临时文件的target目录
其他注意事项
1. archetype:create 这个命令在maven 3.02以上的版本已经不用了, 用generate 命令代替
2. 在使用mvn archetype:generate命令时,加上-DarchetypeCatalog=local,以替换网络上的catalog.xml
http://repo1.maven.org/maven2/archetype-catalog.xml
下载archetype-catalog.xml文件,放到本地的apache-maven目录中。
3. 关于资源文件
如果需要把一些资源文件也一并打包到jar包里面的话,需要在${basedir}/src/main下新建一个resources目录,然后把所有的资源文件都放到这个目录中,这样这些文件都会放到类路径下面。如果需要在测试代码中访问到对应的资源,那么相对的就需要在${basedir}/src/test下新建一个resources目录,然后把相应的资源文件放在这个目录下。
Maven 持续介绍与注意事项相关推荐
- Maven实战——常用Maven插件介绍
http://www.infoq.com/cn/news/2011/04/xxb-maven-7-plugin 我们都知道Maven本质上是一个插件框架,它的核心并不执行任何具体的构建任务,所有这些任 ...
- 常用Maven插件介绍(下)(转)
我们都知道Maven本质上是一个插件框架,它的核心并不执行任何具体的构建任务,所有这些任务都交给插件来完成,例如编译源代码是由maven- compiler-plugin完成的.进一步说,每个任务对应 ...
- Windows Server 2012 NIC Teaming 网卡绑定介绍及注意事项
Windows Server 2012 NIC Teaming 网卡绑定介绍及注意事项 转载自:http://www.it165.net/os/html/201303/4799.html Window ...
- Jenkins+Git+Maven持续集成经典教程
作者:mousycoder(极简小站) segmentfault.com/a/1190000002895521 Jenkins 是一个开源软件项目,旨在提供一个开放易用的软件平台,使软件的持续集成变得 ...
- transactionscope 中的异步 处理 异常_.NET Core中TransactionScope事务处理方法介绍及注意事项...
作者:依乐祝 原文链接:https://www.cnblogs.com/yilezhu/p/10170712.html 今天在写CzarCms的UnitOfWork的使用使用到了这个Transacti ...
- 常用Maven插件介绍(上)
转自 : http://www.infoq.com/cn/news/2011/04/xxb-maven-7-plugin 我们都知道Maven本质上是一个插件框架,它的核心并不执行任何具体的构建任务, ...
- (三)Maven仓库介绍与本地仓库配置
1.Maven本地仓库/远程仓库的基本介绍 示意图: 本地仓库是指存在于我们本机的仓库,在我们加入依赖时候,首先会跑到我们的本地仓库去找,如果找不到则会跑到远程仓库中去找.对于依赖的包大家可以从这个地 ...
- Maven——profile介绍
2019独角兽企业重金招聘Python工程师标准>>> 4 profile介绍 4.1 profile简介 profile可以让我们定义一系列的配置信息,然后指定 ...
- Windows下安装和配置Maven的方法及注意事项
首先,从http://maven.apache.org/download.cgi网站上下载适用于当前操作系统操作格式的最新版本的maven安装包.如:apache-maven-3.2.5-bin.zi ...
最新文章
- PTA 基础编程题目集 7-22 龟兔赛跑 C语言
- python 函数参数传递 格式_Python学习6.1_函数参数及参数传递
- 初识Tcl(九):Tcl 字典
- windows下使用Python来修改文件时间戳
- 瀑布模型(经典的生命周期模型)
- 基于Spring+SpringMVC+Mybatis的分布式敏捷开发系统架构
- 主持人副语言包括什么_央视主持人大赛,董卿最精彩的这几段点评,居然被剪掉了...
- Java小数中的四舍五入
- JQuery 之 跳出循环
- java 内存调优_JVM内存模型以及性能调优
- 机器学习中性能评估指标中的准确率(Accuracy)、召回率(Recall=TPR)、精确率(Precision)、误报率(FPR)、漏报率(FNR)及其关系
- 程序员 -- 黎明前凋零的奇葩
- 3D建模的几种常用建模方法
- JAVA怎么打开pkg_PKG文件在电脑上怎么打开!(普通PC)
- 修改复选框默认的样式
- URAL 1742 Team building 强联通
- jq 获取本地ip地址
- e会学计算机课后作业答案,大学语文网课答案e会学
- Java中的Swing概述
- 360网站卫士 PHP-DOS攻击脚本专杀工具使用笔记