论坛首页 Java企业应用论坛

5分钟熟悉Maven之官方文档翻译

浏览 2005 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2009-04-30   最后修改:2009-04-30
5分钟熟悉Maven
根据官网文档翻译,其中有些地方翻译的不够好,还望指导。
来自:Http://azhp.blog.163.com
安装
Maven是个Java工具,所以你必须首先安装Java以便进行下一步操作.
首先, 下载 Maven然后按照以下说明进行设置. 然后,在终端或者命令提示符输入以下:
mvn --version
接下来应该会输出你安装的Maven的版本, 比如:
Maven version: 2.0.8
Java version: 1.5.0_12
OS name: "windows 2003" version: "5.2" arch: "x86" Family: "windows"
根据你的网络设置, 你也许想要进行额外的详细设置. 如果需要则根据Maven的设置指导来进行详细设置.
创建一个新工程
在你的命令行,执行以下的Maven目标命令:
mvn archetype:create -DgroupId=com.mycompany.app -DartifactId=my-app
如果你正好已经安装了Maven,那么在第一次运行的时候可能会花费少许时间。这是因为Maven正在下载最近的运行时参考(插件jar包和别的文件)到你的本地资源仓库。在命令成功运行之前你可能需要一段时间。这是因为在你下载完成之前对远程服务器的连接可能会超时。但是别担心,其会通过不同的方法来完成下载。
你将会注意到命令“create goal” 创建了一个与给定的项目命令一样的文件夹。
进入到这个文件夹下面 。
cd my-app
进入这个文件夹后你将会发现一套具有标准结构的项目。
my-app
|-- pom.xml
`-- src
    |-- main
    |   `-- java
    |       `-- com
    |           `-- mycompany
    |               `-- app
    |                   `-- App.java
    `-- test
        `-- java
            `-- com
                `-- mycompany
                    `-- app
                        `-- AppTest.java
这个文件夹 “src/main/java” 包括了项目的源代码,而在这个 “src/test/java”文件夹则包括了测试的代码,以及这个项目的项目对象模型pom.xml, 或简称 POM。
项目对象模型--- POM
Pom.xml这个文件是这个项目中Maven的核心设置。这个设置文件包括了构建该项目时所需要的所有的构建信息。项目对象模型是一个强大的及复杂的模型,但并不是所有的复杂问题都需要深刻的了解。这个项目的项目对象模型—POM如以下:
<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.mycompany.app</groupId>
  <artifactId>my-app</artifactId>
  <packaging>jar</packaging>
  <version>1.0-SNAPSHOT</version>
  <name>Maven Quick Start Archetype</name>
  <url>http://maven.apache.org</url>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
</project>
我刚才做了什么呢?
你执行了Maven的目标命令 archetype:create,并把多种参数传给刚才那个目标命令。命令前缀archetype 是一个插件其中也包括了一项目标命令。如果你对Ant熟悉的话,你可能会熟悉这些任务。这个目标命令会在一个典型的项目结构的基础上创建一个简单的项目。可以很清楚的说出一个插件其实就是一个目标命令的集合所完成的普通目的功能。例如插件“jboss-maven-plugin”,它的目的功能就是“处理多个jboss的任务”。
构建项目
mvn package
命令行将会输出多个活动日志,就像如下所示:
...
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 2 seconds
[INFO] Finished at: Thu Oct 05 21:16:04 CDT 2006
[INFO] Final Memory: 3M/6M
[INFO] ------------------------------------------------------------------------
你可能会注意到第二次不像第一次执行命令(archetype:create) 时那么复杂,而仅仅只有一个参数- package 。本次并不仅仅是一个目标命令,而是一个构造阶段的完成。这个阶段在构建生命周期的过程中的多个有序的阶段中是其中的一个步骤, Maven将会执行每一个阶段直到达到一个特定的阶段 。比如:如果我们执行了编译这个阶段那么各个阶段都得到执行,实际上是执行了:Unlike the first command executed (archetype:create) you may notice the second is simply a single word - package. Rather than a goal, this is a phase. A phase is a step in the build lifecycle, which is an ordered sequence of phases. When a phase is givenwill execute every phase in the sequence up to and including the one defined. For example, if we execute the compile phase, the phases that actually get executed are:
1. 验证validate
2. 生成代码generate-sources
3. 处理代码process-sources
4. 生成资料generate-resources
5. 处理资料process-resources
6. 变异compile
你可以测试最新编译以及打包好的Jar文件,命令如下:
java -cp target/my-app-1.0-SNAPSHOT.jar com.mycompany.app.App
然后将会输出该主类执行的结果:
Hello World!
运行Maven工具
Maven 的分段执行计划
虽然没有一个比较综合统一的执行计划,但这这些是最常见的生命周期执行阶段。
 验证:验证该项目是正确的以及运行这个项目所必须得信息是有效的。
 编译:编译该项目的源代码。
 测试:使用适当的单元测试框架来测试编译后的代码。测试的时候并不需要对代码进行打包或者是部署。
 打包:根据描述的格式来对编译后的代码进行打包,例如jar包。.
 集成测试:为了能够使集成测试运行,那么我的在处理或者是部署包文件的时候如果需要就得设置运行时环境变量。
 确定功能:运行及检查每一个功能包都是有效及达到质量认证的。
 安装:安装包到本地的资源库中,以方便别的该项目对此包的应用。
 部署:最后把环境变量整合好后,把最终版本的副本上传到远程资源仓库中,继而与别的开发者及项目来共享资源。
还有两个特殊的Maven的生命周期并不在其默认的生命周期中。它们是:
 清除:清除掉之前创建的版本。
 日志记录:为这个项目生产一个每一步操作的日志记录。
每一个阶段实际上正好就是每一个目标命令所达到的结果。执行的每个阶段的具体目标取决于项目的封装类型。比如:如果项目的类型是jar包那么就执行命令“jar:ja”,而如果执行命令“war:war”的话,那么这个项目的类型肯定就是war包型。
如果你对其关注的比较详细的话会注意到,那些阶段和目标命令的执行都是具有一定顺序的。
mvn clean dependency:copy-dependencies package
这条命令将会清除该项目上次的编译结果、类型的依赖、以及打好包的工程(当然是打包时所建立的子项目包)。
自动生成站点
mvn site
这个阶段会生基于项目中项目对象模型的信息而生成一个站点。你可以根据构建的日志记录到“target/site”下面查看。
总结
我们希望那个这个快速上手概述可以让你对Maven的接触中有更大的辅助作用。不过要注意这只是一个快速上手的指导。现在你可以为下一步详细、强大的功能的使用奠定了前期的具体概念。请查看Maven的入门指南。

论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics