maven项目的流程及其解析
来源:互联网 发布:新网域名转出 编辑:程序博客网 时间:2024/05/16 18:52
- mvn siteMaven Site 插件一般用来创建新的报告文档、部署站点等。
- Maven 将会开始处理并显示直到 site 阶段的 site 生命周期的各个阶段。
Maven - 插件
什么是 Maven 插件?
Maven 实际上是一个依赖插件执行的框架,每个任务实际上是由插件完成。Maven 插件通常被用来:
- 创建 jar 文件
- 创建 war 文件
- 编译代码文件
- 代码单元测试
- 创建工程文档
- 创建工程报告
插件通常提供了一个目标的集合,并且可以使用下面的语法执行:
mvn [plugin-name]:[goal-name]
例如,一个 Java 工程可以使用 maven-compiler-plugin 的 compile-goal 编译,使用以下命令:
mvn compiler:compile
插件类型
Maven 提供了下面两种类型的插件:
类型 描述 Build plugins在构建时执行,并在 pom.xml 的 元素中配置。Reporting plugins在网站生成过程中执行,并在 pom.xml 的 元素中配置。下面是一些常用插件的列表:
插件 描述 clean构建之后清理目标文件。删除目标目录。compiler编译 Java 源文件。surefile运行 JUnit 单元测试。创建测试报告。jar从当前工程中构建 JAR 文件。war从当前工程中构建 WAR 文件。javadoc为工程生成 Javadoc。antrun从构建过程的任意一个阶段中运行一个 ant 任务的集合。例子
我们已经在我们的例子中大量使用了 maven-antrun-plugin 来输出数据到控制台上。请查看 Maven - 构建配置文件 章节。让我们用一种更好的方式理解这部分内容,在 C:\MVN\project 目录下创建一个 pom.xml 文件。
<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.projectgroup</groupId><artifactId>project</artifactId><version>1.0</version><build><plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-antrun-plugin</artifactId> <version>1.1</version> <executions> <execution> <id>id.clean</id> <phase>clean</phase> <goals> <goal>run</goal> </goals> <configuration> <tasks> <echo>clean phase</echo> </tasks> </configuration> </execution> </executions> </plugin></plugins></build></project>
接下来,打开命令终端跳转到 pom.xml 所在的目录,并执行下面的 mvn 命令。
C:\MVN\project>mvn clean
Maven 将开始处理并显示 clean 生命周期的 clean 阶段。
[INFO] Scanning for projects...[INFO] ------------------------------------------------------------------[INFO] Building Unnamed - com.companyname.projectgroup:project:jar:1.0[INFO] task-segment: [post-clean][INFO] ------------------------------------------------------------------[INFO] [clean:clean {execution: default-clean}][INFO] [antrun:run {execution: id.clean}][INFO] Executing tasks [echo] clean phase[INFO] Executed tasks[INFO] ------------------------------------------------------------------[INFO] BUILD SUCCESSFUL[INFO] ------------------------------------------------------------------[INFO] Total time: < 1 se7.cond[INFO] Finished at: Sat Jul 07 13:38:59 IST 2012[INFO] Final Memory: 4M/44M[INFO] ------------------------------------------------------------------
上面的例子展示了以下关键概念:
- 插件是在 pom.xml 中使用 plugins 元素定义的。
- 每个插件可以有多个目标。
- 你可以定义阶段,插件会使用它的 phase 元素开始处理。我们已经使用了 clean 阶段。
- 你可以通过绑定到插件的目标的方式来配置要执行的任务。我们已经绑定了 echo 任务到 maven-antrun-plugin 的 run 目标。
- 就是这样,Maven 将处理剩下的事情。它将下载本地仓库中获取不到的插件,并开始处理。
Maven 核心特点之一是依赖管理。一旦我们开始处理多模块工程(包含数百个子模块或者子工程)的时候,模块间的依赖关系就变得非常复杂,管理也变得很困难。针对此种情形,Maven 提供了一种高度控制的方法。
传递依赖发现
这种情形经常可见,当一个库 A 依赖于其他库 B. 另一工程 C 想要使用库 A, 那么该工程同样也需要使用到库 B。
Maven 可以避免去搜索所有需要的库资源的这种需求。通过读取工程文件(pom.xml)中的依赖项,Maven 可以找出工程之间的依赖关系。
我们只需要在每个工程的 pom 文件里去定义直接的依赖关系。Maven 则会自动的来接管后续的工作。
通过传递依赖,所有被包含的库的图形可能会快速的增长。当重复的库存在时,可能出现的情形将会持续上升。Maven 提供一些功能来控制可传递的依赖的程度。
依赖范围
传递依赖发现可以通过使用如下的依赖范围来得到限制:
依赖管理
通常情况下,在一个共通的工程下,有一系列的工程。在这种情况下,我们可以创建一个公共依赖的 pom 文件,该 pom 包含所有的公共的依赖关系,我们称其为其他子工程 pom 的 pom 父。 接下来的一个例子可以帮助你更好的理解这个概念。
下面是上述依赖图表的细节:
- App-UI-WAR 依赖于 App-Core-lib 和 App-Data-lib.
- Root 是 App-Core-lib 和 App-Data-lib 的父类。
- Root 在其依赖模块里定义了 Lib1,lib2, Lib3 3个依赖关系。
一般情况下,在一个工程开发进程里,一次部署的过程包含需如下步骤:
- 合入每个子工程下的代码到 SVN 或者源代码库,并标记它。
- 从 git下载完整的源代码。
- 构建应用程序。
- 保存构建结果为 WAR 或者 EAR 类型文件并存放到一个共同的指定的网络位置上。
- 从网络上获得该文件并且部署该文件到产品线上。
- 更新文档日期和应用程序的版本号。
- maven项目的流程及其解析
- 创建Maven项目流程
- maven clean install流程解析
- Maven项目结构解析
- maven 项目情动报错解析
- maven(三):maven项目结构及其运行机制
- 新建Maven项目流程表
- 使用MAVEN进行项目管理的标准流程化配置
- 用intellij Idea加载eclipse的maven项目全流程
- Spring mybatis maven的项目环境运行流程
- maven安装及maven项目导入流程
- 软件外包项目管理的全流程全过程解析
- Maven的配置流程
- Maven项目里的pom解析和nexus私服
- 用maven定制一个车联网的天气预报解析项目
- maven构建hibernate项目及其详解
- LSMW的流程及其注意事项
- Maven结合Nexus管理项目配置流程
- HDU-2032杨辉三角形
- win7---keras安装
- 比较两个Json对象是否相等
- MHA快速配置
- 一位资深程序员大牛给予Java初学者的学习路线建议
- maven项目的流程及其解析
- C# 中2,10,16进制及其ASCII码之间转化
- Java中的String,StringBuffer,StringBuilder
- bzoj1717(poj3261) [Usaco2006 Dec]Milk Patterns 产奶的模式(后缀数组,二分答案)
- 最大似然估计(MLE)与最大后验估计(MAP)
- 常见WEB漏洞原理分析
- 异常简记
- 心灵鸡汤
- java enum(枚举)使用详解 + 总结