阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Linux下Maven的安装与使用

129次阅读
没有评论

共计 4131 个字符,预计需要花费 11 分钟才能阅读完成。

Apache Maven,是一个软件(特别是 Java 软件)项目管理及自动构建工具,由 Apache 软件基金会所提供。基于项目对象模型(POM)概念,Maven 利用一个中央信息片断能管理一个项目的构建、报告和文档等步骤。曾是 Jakarta 项目的子项目,现为独立 Apache 项目。

现在有很多 Apache 项目都已经开始采用 Maven 进行管理。

本篇文章简单介绍了 Maven 的相关知识,以及在 Linux 下的安装与使用方法。如果需要进一步了解 Maven,请移步 Maven 官网。http://maven.apache.org

 

安装 Maven

Maven 的下载地址:http://maven.apache.org/download.cgi
这里以最新的 3.2.3 版本为例进行安装,在这之前需要确保机器上已经安装了 JDK。

首先下载 Maven 并解压,并移动到 usr/local 目录下

$ wget http://mirror.bit.edu.cn/apache/maven/maven3/3.2.3/binaries/apache-maven-3.2.3-bin.tar.gz
$ tar vxf apache-maven-3.2.3-bin.tar.gz
$ mv apache-maven-3.2.3 /usr/local/maven3

修改环境变量,在 /etc/profile 中添加以下几行

MAVEN_HOME=/usr/local/maven3
export MAVEN_HOME
export PATH=${PATH}:${MAVEN_HOME}/bin

记得执行 source /etc/profile 使环境变量生效。

最后运行 mvn -v 验证 maven 是否安装成功,如果安装成功会打印如下内容

Apache Maven 3.2.3 (33f8c3e1027c3ddde99d3cdebad2656a31e8fdf4; 2014-08-12T04:58:10+08:00)
Maven home: /usr/local/maven3
Java version: 1.7.0_65, vendor: Oracle Corporation
Java home: /usr/lib/jvm/java-7-openjdk-amd64/jre
Default locale: en_US, platform encoding: UTF-8
OS name: “linux”, version: “3.13.0-35-generic”, arch: “amd64”, family: “unix”

使用 Maven 创建项目

无论是学习语言还是框架,先来一个 Hello World 基本上已经是套路了,我们也通过构建一个 Hello World 项目来了解如何使用 Maven。
首先通过 maven 创建 helloworld 项目

$ mvn archetype:create -DgroupId=helloworld -DartifactId=helloworld

生成的项目目录如下,其中 src/main/java 是源码目录,src/test/java 是测试文件目录。
一共只有三个文件,打开这三个文件,可以看到 App.java 中已经写好了一个 Hello World 程序,而 AppTest 中是 Junit 单元测试的代码,至于 pom.xml,则给出了项目的一些基本信息以及依赖关系。

helloworld/
├── pom.xml
└── src
├── main
│  └── java
│  └── helloworld
│  └── App.java
└── test
└── java
└── helloworld
└── AppTest.java

这里主要看一下 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>helloworld</groupId>
<artifactId>helloworld</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
 
<name>helloworld</name>
<url>http://maven.apache.org</url>
 
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
 
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>

在 pom.xml 文件中,首先描述了项目的定义,groupId:artifactId:packaging:version 这个四元组能够唯一标记一个项目。我们不仅可以用这个四元组来标记我们的项目,也可以用来标记其它的项目,比如用来描述项目依赖关系。perperties 中定义了项目的属性,也可以在这里定义变量并在其它的地方引用。至于最后的 dependencies,则是描述了项目的依赖关系,Maven 会根据依赖关系自动下载相应的文件并在编译时使用。

在大型项目开发中,往往会将其分成若干个子项目,每个子项目都有着自己的的 pom.xml,它们与父 pom.xml 之间相当于继承的关系。

可以说,pom.xml 文件的配置是整个 Maven 的核心重点,也是学习 Maven 过程中需要详细了解的内容。这里只给出了最简单的配置样例,详细了解可以查看官方文档。

接下来编译并运行 Helloworld 项目。

如果是第一次编译的话,需要联网,因为 Maven 会自动下载依赖包。

$ mvn package

下载的依赖包会保存在~/.m2/repository 文件夹中,打开这个文件夹,我们会发现里面的包正是按前面所说的四元组目录结构进行存储的。Maven 在依赖一个 jar 包时会先去本地库查找,如果没找到就会从网上下载。当然,并不是所有的包都能从网上下载到,比如我们自己开发的 jar 包,这时,我们就可以用 mvn install 命令将一个项目安装到本地仓库。

打包成功后我们会发现项目中多了一个 target 文件夹,目录结构如下

target/
├── classes
│  └── helloworld
│  └── App.class
├── helloworld-1.0-SNAPSHOT.jar
├── maven-archiver
│  └── pom.properties
├── maven-status
│  └── maven-compiler-plugin
│  ├── compile
│  │  └── default-compile
│  │  ├── createdFiles.lst
│  │  └── inputFiles.lst
│  └── testCompile
│  └── default-testCompile
│  ├── createdFiles.lst
│  └── inputFiles.lst
├── surefire-reports
│  ├── helloworld.AppTest.txt
│  └── TEST-helloworld.AppTest.xml
└── test-classes
└── helloworld
└── AppTest.class

可以看到,在 package 过程中,maven 完成了编译、测试代码,生成测试报告,生成 jar 包等一系列工作。

最后,我们也可以手动运行 jar 包查看结果。

$ java –cp target/helloworld-1.0-SNAPSHOT.jar helloworld.App
Hello World!

Maven 常用命令

Maven 的命令非常多,学习命令首先要了解 Maven 的生命周期。

Maven 首先会验证并处理引用资源,之后进行项目编译,如果没有声明跳过测试,也会编译测试代码并进行测试、以成测试报告。最后,Maven 会将编译好的内容进行打包,用于发布。

Maven 命令与 Maven 的生命周期有着对应的关系,一个命令也经常会包含多个生命周期,比如 mvn package 会完成以上所有步骤。

这里列举几个常用的命令

mvn compile 编译项目
mvn test 编译运行单元测试
mvn package 打包(jar or war)
mvn install 将项目安装到本地仓库
mvn clean 清空项目
mvn eclipse:eclipse 生成 eclipse 工程

吐槽

在用 Maven 编译一些 Apache 项目的时候,实在是想吐槽 GFW!!如果不翻墙经常是编译到一半就有个文件 Download 不下来了。。

Maven 权威指南_中文完整版清晰 PDF  http://www.linuxidc.com/Linux/2014-06/103690.htm

Maven 3.1.0 发布,项目构建工具 http://www.linuxidc.com/Linux/2013-07/87403.htm

Linux 安装 Maven http://www.linuxidc.com/Linux/2013-05/84489.htm

Maven3.0 配置和简单使用 http://www.linuxidc.com/Linux/2013-04/82939.htm

Ubuntu 下搭建 sun-jdk 和 Maven2 http://www.linuxidc.com/Linux/2012-12/76531.htm

Maven 使用入门 http://www.linuxidc.com/Linux/2012-11/74354.htm

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-20发表,共计4131字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中