本篇承接上一篇: 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 持续介绍与注意事项相关推荐

  1. Maven实战——常用Maven插件介绍

    http://www.infoq.com/cn/news/2011/04/xxb-maven-7-plugin 我们都知道Maven本质上是一个插件框架,它的核心并不执行任何具体的构建任务,所有这些任 ...

  2. 常用Maven插件介绍(下)(转)

    我们都知道Maven本质上是一个插件框架,它的核心并不执行任何具体的构建任务,所有这些任务都交给插件来完成,例如编译源代码是由maven- compiler-plugin完成的.进一步说,每个任务对应 ...

  3. Windows Server 2012 NIC Teaming 网卡绑定介绍及注意事项

    Windows Server 2012 NIC Teaming 网卡绑定介绍及注意事项 转载自:http://www.it165.net/os/html/201303/4799.html Window ...

  4. Jenkins+Git+Maven持续集成经典教程

    作者:mousycoder(极简小站) segmentfault.com/a/1190000002895521 Jenkins 是一个开源软件项目,旨在提供一个开放易用的软件平台,使软件的持续集成变得 ...

  5. transactionscope 中的异步 处理 异常_.NET Core中TransactionScope事务处理方法介绍及注意事项...

    作者:依乐祝 原文链接:https://www.cnblogs.com/yilezhu/p/10170712.html 今天在写CzarCms的UnitOfWork的使用使用到了这个Transacti ...

  6. 常用Maven插件介绍(上)

    转自 : http://www.infoq.com/cn/news/2011/04/xxb-maven-7-plugin 我们都知道Maven本质上是一个插件框架,它的核心并不执行任何具体的构建任务, ...

  7. (三)Maven仓库介绍与本地仓库配置

    1.Maven本地仓库/远程仓库的基本介绍 示意图: 本地仓库是指存在于我们本机的仓库,在我们加入依赖时候,首先会跑到我们的本地仓库去找,如果找不到则会跑到远程仓库中去找.对于依赖的包大家可以从这个地 ...

  8. Maven——profile介绍

    2019独角兽企业重金招聘Python工程师标准>>> 4       profile介绍 4.1     profile简介 profile可以让我们定义一系列的配置信息,然后指定 ...

  9. Windows下安装和配置Maven的方法及注意事项

    首先,从http://maven.apache.org/download.cgi网站上下载适用于当前操作系统操作格式的最新版本的maven安装包.如:apache-maven-3.2.5-bin.zi ...

最新文章

  1. PTA 基础编程题目集 7-22 龟兔赛跑 C语言
  2. python 函数参数传递 格式_Python学习6.1_函数参数及参数传递
  3. 初识Tcl(九):Tcl 字典
  4. windows下使用Python来修改文件时间戳
  5. 瀑布模型(经典的生命周期模型)
  6. 基于Spring+SpringMVC+Mybatis的分布式敏捷开发系统架构
  7. 主持人副语言包括什么_央视主持人大赛,董卿最精彩的这几段点评,居然被剪掉了...
  8. Java小数中的四舍五入
  9. JQuery 之 跳出循环
  10. java 内存调优_JVM内存模型以及性能调优
  11. 机器学习中性能评估指标中的准确率(Accuracy)、召回率(Recall=TPR)、精确率(Precision)、误报率(FPR)、漏报率(FNR)及其关系
  12. 程序员 -- 黎明前凋零的奇葩
  13. 3D建模的几种常用建模方法
  14. JAVA怎么打开pkg_PKG文件在电脑上怎么打开!(普通PC)
  15. 修改复选框默认的样式
  16. URAL 1742 Team building 强联通
  17. jq 获取本地ip地址
  18. e会学计算机课后作业答案,大学语文网课答案e会学
  19. Java中的Swing概述
  20. 360网站卫士 PHP-DOS攻击脚本专杀工具使用笔记

热门文章

  1. kotlin项目开发基础之gradle初识
  2. 【Monkey】Monkey基础概念
  3. HDU 1085 Holding Bin-Laden Captive!
  4. Pro*C/C++简单介绍
  5. Swift - 邮件发送功能的实现
  6. 文本编码与解码问题解决方案
  7. jeecg3.8popup弹出窗口触发失去焦点事件,引发验证弹窗,影响体验问题的解决办法
  8. 解决https无法缓存的问题
  9. ABP源码分析四十七:ABP中的异常处理
  10. 解决SQL server不支持utf8,php却用utf8的矛盾问题