Linux下Maven的安装与使用
pache 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/maven - 3 / 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!!如果不FQ经常是编译到一半就有个文件Download不下来了。。
- 本文来自:Linux学习教程网
Linux下Maven的安装与使用的更多相关文章
- linux下maven的安装
		上传安装包到相应路径 进行解压 tar -zxvf apache-maven-3.0.5-bin.tar.gz -C /export/servers/ 修改环境变量 vim /etc/profile ... 
- Linux下Maven私服Nexus3.x环境构建操作记录
		原文地址:https://blog.csdn.net/liupeifeng3514/article/details/79553747 私服介绍 私服是指私有服务器,是架设在局域网的一种特殊的远程仓库, ... 
- Linux下命令行安装weblogic10.3.6
		Linux下命令行安装weblogic10.3.6 一.安装前准备工作: 1.创建用户useradd weblogic;创建用户成功linux系统会自动创建一个和用户名相同的分组,并将该用户分到改组中 ... 
- Linux下MongoDB服务安装
		Linux下MongoDB服务安装 MongoDB是一个基于分布式文件存储的数据库.由C++语言编写.旨在为WEB应用提供可扩展的高性能数据存储解决方案.MongoDB是一个介于关系数据库和非关系数据 ... 
- Windows下的Memcache安装  linux下的Memcache安装
		linux下的Memcache安装: 1. 下载 memcache的linux版本,注意 memcached 用 libevent 来作事件驱动,所以要先安装有 libevent. 官方网址:http ... 
- linux下subversion server安装手册
		linux下subversion server安装手册 安装基于的Linux版本为:Red Hat Enterprise Linux Server release 6.3. 一 准备需要的安装包. ( ... 
- Linux下Perl的安装(转)
		原文地址:Linux下Perl的安装 今天在虚拟机测试shell脚本的时候,有些命令使用不了. 比如说 mysqlhotcopy ,它提示Perl的版本太低. 我用的 RedHat9 的Perl才5. ... 
- 细说Linux下软件包的安装与管理
		一 源码安装方式 由于linux操作系统开放源代码,因而在其上安装的软件大部分也都是开源软件,例如apache.tomcat.php等软件.开源软件基本都提供源码下载,源码安装的方式:源码安 ... 
- Linux下Qt的安装与配置
		参考资料:http://www.cnblogs.com/emouse/archive/2013/01/28/2880142.html Linux 下编译.安装.配置 QT 下载qt 这里用的是4.7. ... 
随机推荐
- RK3288 修改浏览器默认主页和书签
			path:packages/apps/Browser/res/values/strings.xml 修改浏览器默认主页: <!-- The default homepage. --> &l ... 
- rails里面添加妹子ui
			妹子ui看起来很不错,以为在rails里面添加自定义的css和js和平时一样,结果可想而知,不过弄完以后发现还是比较简单的,这里记录一下 妹子ui需要加载的css和js如下 http://cdn.am ... 
- HDOJ4763(KMP原理理解)
			Theme Section Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Tot ... 
- 解决近期linux下yum更新出现HTTP Error 404 NOT FOUND错误的办法
			本文转载自:http://tech.lezi.com/archives/47 最近两天使用yum的163源,出现404错误 [root@localhost yum.repos.d]# yum make ... 
- AndroidUI 控件命名格式
			TextView ->txt EditText->edit Button ->btn 
- C++类够做函数初始化列表
			构造函数初始化列表以一个冒号开始,接着是以逗号分隔的数据成员列表,每个数据成员后面跟一个放在括号中的初始化式.例如: class CExample{ public: int a; float b; C ... 
- 翻译内核uvcvideo.txt
			翻译源:linux-3.4.20\Documentation\video4linux\uvcvideo.txt 译文: Linux USB视频类(UVC)驱动程序 ================== ... 
- [置顶]
        ubuntu版本很老,apt-get update更新失败时(W: Failed to fetch ...)------如何创建新的sources.list
			在说这个解决方案之前,我先说下,目前遇到的问题: 我使用 sudo apt-get update 之后,更新失败.具体原因如下: W: Failed to fetch http://cn.archiv ... 
- 利用JAVA操作Redis---demo
			package com.js.ai.modules.pointwall.interfac; import java.util.HashMap; import java.util.Iterator; i ... 
- microtip Tooltip工具提示样式
			最近开发项目,想增加滑动提示文字,类似img alt和i的title,但是效果都不是很理想,当然jq也有,但是用起来比较繁琐,使用不是特别方便 于是在github上看到了一个不错的库: https:/ ... 
