《maven官方文档》5分钟开始Maven

前提

你必须明白如何在电脑上安装软件。如果你不知道如何做,请向你学校、办公室里等的人请教下,或者付费给他人让他们解释给你。Maven邮件组不是寻求这个建议的最好地方。

安装

Maven是个Java工具,所以你必须安装了Java才能继续。首先,下载Maven,然后按照安装指南。完成后,在终端或命令行中键入如下指令:

mvn --version

应该会打印已安装Maven的版本。例如:

Apache Maven 3.0.5 (r01de14724cdef164cd33c7c8c2fe155faf9602da; 2013-02-19 14:51:28+0100)
Maven home: D:\apache-maven-3.0.5\bin\..
Java version: 1.6.0_25, vendor: Sun Microsystems Inc.
Java home: C:\Program Files\Java\jdk1.6.0_25\jre
Default locale: nl_NL, platform encoding: Cp1252
OS name: "windows 7", version: "6.1", arch: "amd64", family: "windows"

基于你的网络设置,你需要额外的配置。如果有必要的话看看Maven配置指南.如果你在使用Windows,你应该查看Windows前提以确保你已准备好在Windows上使用Maven。

创建一个项目

你需要一个给你项目保存的地方。在某处创建一个目录,然后在这个目录里开始shell。在你的命令行上,执行如下Maven语言:

mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false

如果你已安装Maven,第一次执行这个需要一定时间。这是因为Maven在下载最新的物件(jar插件和其他文件)到你的本地仓库。在成功前,也需要你执行几次命令。这是因为在下载完成前,远程服务器可能超时。别担心,有几种解决这个的方法。

你讲看见生成语言创建了一个和物件ID相同名字的目录。变更到这个目录:

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

在Maven里,pom.xml文件是项目配置的核心。它是一个独立的配置文件,包含了你想要的方式下建立项目所必须的主要信息。POM是巨大的,其复杂度使人苦恼。但你只需要有效地使用它,没有必要明白所有的错综复杂。项目的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>0.0</modelVersion>

  <groupId>mycompany.app</groupId>
  <artifactId>my-app</artifactId>
  <version>0-SNAPSHOT</version>
  <packaging>jar</packaging>

  <name>Maven Quick Start Archetype</name>
  <url>http://maven.apache.org</url>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>8.2</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
</project>

 

只需要我做的是什么?

你执行了Maven语言原型:generate,向这个语言传了许多参数。前缀原型是包含这个语言的插件。如果你熟悉Ant,你可以设想这个是相同的任务。基于一个原型,这个语言创建了一个简单的项目。现在可以说,插件是个有通用目的的语言的集合。例如jboss-maven-plugin,目的是“处理大量jboss条目”。

建设项目

mvn package

命令行会打印出各种指令,并具有以下结尾:

...
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------[INFO] Total time: 2 seconds
[INFO] Finished at: Thu Jul 07 21:34:52 CEST 2011
[INFO] Final Memory: 3M/6M
[INFO] ------------------------------------------------------------------------

不像第一个执行的命令(archetype:generate),你可能注意到第二个命令是简单的一个词-package。这是个阶段实行而不是语言。实行阶段是[建设生命周期]( https://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html)里的而一个步骤,是一系列有序的阶段。当给出一个实行阶段,Maven将执行序列里的每一个阶段,并且包括定义的阶段。例如,如果我们执行编译阶段,实际上得到执行的阶段是:

  1. 验证
  2. 编译代码
  3. 处理代码
  4. 生成资源文件
  5. 处理资源文件
  6. 编译
您可以使用以下命令测试新编译和打包的JAR:
java -cp target/my-app-1.0-SNAPSHOT.jar com.mycompany.app.App

将打印经典语句:

Hello World!

运行Maven工具

Maven阶段

尽管几乎没有一个全面的清单,这些都是执行最常用的默认生命周期阶段。

  • 验证:验证项目是正确的,所有必要的信息
  • 编译:编译项目的源代码
  • 测试:使用合适的单元测试框架测试编译的源代码。 这些测试应该不需要代码被打包或部署
  • :把编译后的代码,并在其分发格式打包,例如一个JAR。
  • 集成测试:如果需要,处理和部署包到集成测试可以运行的环境
  • 验证:运行任何检查,以验证包是有效的,同时符合质量标准
  • 安装:包本地安装到本地存储库中,用作本地其他项目的依赖
  • 部署:在集成或发布环境中进行,复制最终的包到远程仓库与其他开发者和项目共享。

还有值得注意的另外两个Maven的生命周期超出上面的默认列表。 他们是

  • 清洁:清理之前建立创建的工件
  • 网站:生成此项目的站点文档,

实行阶段实际上映射到底层的语言。 每阶段中执行的具体语言是取决于项目的包类型。 例如, packet执行jarjar如果项目类型为JAR和warwar ,如果项目类型是-你猜对了-WAR。

需要注意的一个有趣的事情是,阶段和语言,可以按顺序执行。

mvn clean dependency:copy-dependencies package

此命令将清理项目,复制依赖关系,并打包项目(当然执行各个阶段到 )。

生成站点

mvn site

这个阶段产生基于对项目的POM信息的站点。你可以看一下在target/site生成的文档。

结论

我们希望这一快速浏览已经激起了你的Maven中的通用性兴趣。请注意,这是一个非常截断快速入门指南。现在,你已经准备好关于你刚才执行的动作更全面的信息。 看看Maven的入门指南 。

转载自 并发编程网 - ifeve.com

时间: 2024-09-03 19:02:53

《maven官方文档》5分钟开始Maven的相关文章

《Maven官方文档》什么是原型(Archrtype)?

什么是原型? 简单来说,原型(Archetype)是一个Maven工程模板工具包.一个原型被定义为一个提供相同性质内容的原始样式或模型.这个名字适合当我们试图提供一个系统,这个系统提供了一个一致的方式生成Maven项目.原型将帮助作者为用户创建Maven工程模板,并且为用户提供方法去使用参数来调整生成的工程模板. 使用原型提供了一个很好的方式,使开发人员快速的符合你的项目或组织的最佳实践,在Maven项目中,我们提供了一个演示了Maven多种特性的示例工程,以此希望帮助我们的用户尽快的启动并运行

《Maven官方文档》插件的发展

来讲解一下Maven 2.0 插件的发展       maven中有一个核心引擎,它提供了基础项目的处理能力和构建能力的管理,还有很多用于构建任务的插件. 那到底什么是插件呢? Maven 核心框架就是一个插件的集合.换而言之,这些插件就是行为的执行者,插件可以用于:创建jar文件,war文件,编译代码,单元测试,创建项目文档等等.几乎任何的行为,你都可以认为是这个项目在执行对应的Maven插件. 插件是Maven的核心特性并可以给多个项目重复使用.插件执行的这些行为包含在一个项目描述--项目对

《Maven官方文档》POM文件(一)

什么是POM? POM(project object model)包含了工程信息和工程的配置细节,Maven使用POM文件来构建工程.POM文件包含了工程中的大部分默认值.举个例子,target是默认的构建目录,src/main/java是默认的源码目录,src/test/java是默认的测试源码目录,等等. Maven2中的pom.xml就是Maven1中的project.xml.相比于在maven.xml中包含可执行的goal,现在goals和plugins都可以在pom.xml中配置.当执

《Maven官方文档》POM文件(二)

工程继承 POM中可配置的元素如下: 依赖 (dependencies) 开发者和贡献者 (developers and contributors) 插件列表,包括报告 (plugin lists, including reports) 相应id的插件执行 (plugin executions with matching ids) 插件配置 (plugin configuration) 资源 (resources) Super POM就是一个工程继承的例子.你也可以通过在POM中指定parent

《Maven官方文档》创建Archetype

创建archetype是一个非常简单的过程.archetype就是一个非常简单的构件,它包含了你想创建的工程的模型.archetype由这些东西组成: 一个archetype描述符(archetype descriptor)(src/main/resources/META-INF/maven目录下的archetype.xml).这个文件列出了包含在archetype中的所有文件并将这些文件分类,因此archetype生成机制才能正确的处理. 原型文件(prototype files),arche

《Maven官方文档》创建Archetype 原文链接

创建archetype是一个非常简单的过程.archetype就是一个非常简单的构件,它包含了你想创建的工程的模型.archetype由这些东西组成: 一个archetype描述符(archetype descriptor)(src/main/resources/META-INF/maven目录下的archetype.xml).这个文件列出了包含在archetype中的所有文件并将这些文件分类,因此archetype生成机制才能正确的处理. 原型文件(prototype files),arche

《Log4j 2 官方文档》Testing in Maven

在 Maven 中使用测试 Maven在整个构建生命周期内可以运行单元测试和功能测试.默认情况下, 任何在 src/test/resources 路径下的文件都会复制到 target/test-classes 路径中, 同时这些文件在执行测试过程中,也会被包含在 classpath 中. 正因为这样的特性,如果将一个 log4j2-test.xml 文件放到 src/test/resources 目录中, 这会替换掉当前正在使用的 log4j2.xml 或 log4j2.json 配置.因此,

《Maven官方文档》-Maven依赖机制简介(一)

依赖机制是Maven最为用户熟知的特性之一,同时也是Maven所擅长的领域之一.单个项目的依赖管理并不难, 但是当你面对包含数百个模块的多模块项目和应用时,Maven能帮你保证项目的高度控制力和稳定性. 大纲:  传递性依赖 排除.可选依赖 依赖范围 依赖管理 导入依赖 系统依赖 传递性依赖 传递性依赖是Maven2.0的新特性.假设你的项目依赖于一个库,而这个库又依赖于其他库.你不必自己去找出所有这些依赖,你只需要加上你直接依赖的库,Maven会隐式的把这些库间接依赖的库也加入到你的项目中.这

《Maven官方文档》-Maven依赖机制简介(二)

项目B: <project> <modelVersion>4.0.0</modelVersion> <groupId>maven</groupId> <artifactId>B</artifactId> <packaging>pom</packaging> <name>B</name> <version>1.0</version> <depend