IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

5分钟开始Maven

并发编程网 - ifeve.com 2016-04-21 13:27:15 累计浏览 2,562 次
本机暂存

前提

你必须明白如何在电脑上安装软件。如果你不知道如何做,请向你学校、办公室里等的人请教下,或者付费给他人让他们解释给你。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的入门指南

   原文地址

同分类推荐文章

  1. 等了十年的 Go 链式管道,终于来了:seq 让你像写 Scala 一样写 Go (2026-06-25 18:38:18)
  2. Go 实验特性详解 (2026-06-21 10:05:27)
  3. amd64 微架构级别对 Go 程序性能提升多少? (2026-06-21 09:38:49)

查看更多 后端 文章 →

建议继续学习

  1. SmartSprites - 命令行形式的CSS Sprites生成器 (累计阅读 123,894)
  2. Java开发岗位面试题归类汇总 (累计阅读 22,156)
  3. android 开发入门 (累计阅读 19,527)
  4. 我的PHP,Python和Ruby之路 (累计阅读 13,147)
  5. HashMap解决hash冲突的方法 (累计阅读 12,654)
  6. 一个大二学生有关如何成为一名软件工程师的疑问及答复 (累计阅读 9,181)
  7. Java程序员应该知道的10个eclipse调试技巧 (累计阅读 8,012)
  8. 如何让员工忠于公司? (累计阅读 7,940)
  9. Java技术路线 (累计阅读 7,725)
  10. 聊聊ThoughtWorks面试 (累计阅读 7,614)