要说Java世界有什么东西是我最为留恋的;在写其他语言程序的时候,我最为想要的东西,那非maven莫属。

什么是Maven?

Maven能做什么?

Maven是一个针对Java的自动构建工具。所谓自动构建,就是在命令行里面敲一条命令,而替代程序员手动去编译每一个java文件,在打成jar包的过程。这听起来没什么,尤其是对于本来使用IDE的程序员们来说。但是Maven还可以做到:

  • 依赖的引入。 不用程序员去手动的下载第三方的jar,只需要修改配置文件,便可以引入jar包。
  • 良好的测试集成。 maven对于”如果想要在打包前进行测试,如果测试不通过不打包”这种需求很容易做到。
  • 良好子项目管理。 maven对于项目来说,可以有一个大项目包括N个子项目构成。而不是像eclipse,只可以有一个根项目。
  • 良好的持续集成。 使用maven,对于daily build的支持,对于每次提交的代码的检查,简直是易如反掌。

总之,如果你原来只是使用过eclipse进行java开发,maven绝对值得你去接触。而且事实上,如此好的工具,也在java世界里用的非常广。

类似的工具

类似于Maven的工具也不少,相较于maven有这样和那样的不同,仅就我知道的java世界的自动构建工具,列举一下:

  • SBT

    • 优点: 绝佳的Scala支持,绝佳的开发体验
    • 缺点: 集成测试上设置起来远比Maven麻烦,学习曲线也不小(尤其是对于不懂Scala的Java团队)
  • Ant+Ivy
    • 优点: 可配置性强
    • 缺点: 配置的东西太多,不够简单
  • Gradle
    • 应该是非常不错的工具,只是没有尝试过。

Maven的缺点

说了这么多好的东西,难道Maven就没有自身的问题么?当然是有的。下面说一下主要的缺点:

  • Maven的编译时间更慢。因为他在编译的时候,检查的东西更多。(比如依赖有没有下载等)
  • Maven使用XML配置,这既是优点也是缺点。缺点在于,XML文件大部分时候是冗长的。但是,目前的IDE对于XML的支持还是不错的,写起来效率也不算慢。

Maven的Hello World

说了这么多,基本上就是想说,如果你需要一个java第三方库的依赖管理,更好地测试运行,更通用的项目文件,使用Maven绝对不错。但是说了这么多,如何使用呢?还是从Hello World将起。

Maven的安装

在maven安装之前,需要你的电脑上安装一个JDK,并将JAVA_HOME环境变量设置成JDK的安装路径。

例如把JAVA_HOME设置成C:\Program Files\Java\jdk1.7.0_01之类的。

Windows下的安装

首先呢,要下载maven的二进制文件。下载页面二进制文件在这里。

在下载之后,将压缩包解压到相应的目录,例如为C:\apache-maven-3.1.0\,并确定C:\apache-maven-3.1.0\bin目录是存在的。

然后设置环境变量:

  • M2_HOME设置为Maven的home路径,例如C:\apache-maven-3.1.0\
  • PATH目录,添加M2_HOME的bin目录,例如C:\apache-maven-3.1.0\bin

如果,不想修改全局环境变量的话,可以将下面的文件保存成一个bat,然后运行一下,就会将环境变量设置好了。

  1. @ECHO OFF
  2. ::YouShouldChange M2_HOME fit for your install
  3. set M2_HOME=C:\apache-maven-3.1.0
  4. set PATH=%M2_HOME%\bin;%PATH%
  5. cmd

安装好之后,在命令行里,输入mvn –help,就可以看的maven的帮助了。

Linux下的安装

和windows一样,也是需要设置环境变量。只是linux设置环境变量的方法不一样。可以在解压缩后,修改~/.bashrc。在~/.bashrc后,添加几行

  1. # You Should Change M2_HOME fit for your install
  2. export M2_HOME=/home/reyoung/maven/
  3. export PATH=$M2_HOME/bin:$PATH

如果安装完毕后,输入mvn –help,也会看的maven的帮助。

同时,不同发行版,本身也许自带maven的软件包,可以搜索安装一下。(利用yum或者apt-get或者emerge等)

使用Maven新建项目

在设置好环境变量后,在适合新建项目的目录里,输入:

  1. mvn archetype:generate -DarchetypeGroupId=org.apache.maven.archetypes

然后根据命令行的提示,依次输入选择的archetypeId, version, groupId, artifactId,就可以建立一个hello world项目了。

其中, * 在第一个选择的时候,也就是archetypeId的时候,可以直接敲入回车。直接敲入回车,会使用quickstart的archetype。 * groupId就是软件的组织名。一般是网址的逆序,例如 me.reyoung。 * artifactId就是项目名,例如 helloworld * version就是你这个项目的版本号。

这里如果项目建立完毕后,当前目录里就会多出一个项目目录,例如helloworld。进入那个目录,输入mvn compile就会编译该项目,输入mvn test就会测试该项目,输入mvn package就会将项目打包成jar文件。

这样简单地Hello world就搞定了。maven其他的功能、约定和设置,在下一篇文章中会说。做个预告吧。

Maven的IDE集成

Java世界的IDE对Maven还是非常支持的。这里分IDE介绍一下吧。

IntelliJ Idea

IntelliJ Idea是目前(我认为)最好的Java IDE。而且社区版开源免费。下载地址。在IntelliJ Idea中,Maven项目文件可以直接被打开,同时可以和IntelliJ Idea本身的项目文件互相转化。所以,对Maven的支持还是非常不错的。

同时,在IntelliJ Idea中,也可以新建Maven项目,之前命令行输入的命令,都可以在IntelliJ Idea中解决。推荐使用Maven的java程序员尝试一下IntelliJ Idea。

Netbeans

如果IntelliJ Idea对Maven的支持非常好的话,那Netbeans完全就是原生支持。因为Netbeans支持使用Maven的项目文件直接做为自身的项目文件。也就是Netbeans对于Maven项目支持的和他自身的项目文件一样好。

Eclipse

Eclipse使用插件解决maven支持问题,叫做M2Eclipse,但是eclipse天生的没有层次的项目结构,所以,eclipse本身对于maven支持并不很好。

------------------------------------------------

我的野生博客地址

maven使用.01.Hello World的更多相关文章

  1. maven实战(01)_搭建开发环境

    一 下载maven 在maven官网上可下载maven:http://maven.apache.org/download.cgi 下载好后,解压.我的解压到了:D:\maven\apache-mave ...

  2. MAVEN教程--01安装|创建|解释

    Maven是一个采用纯Java编写的开 源项目管理工具.Maven采用了一种被称之为project object model (POM)概念来管理项目,所有的项目配置信息都被定义在一个叫做POM.xm ...

  3. maven(01)--安装及其介绍

    1:下载maven windows下载 2:将下载文件夹解压,然后放在一个安装目录(可任意选择),例如就放在D盘的根目录 然后在设置环境变量,新建一个环境变量,名称为M2_HOME,其设置值为mave ...

  4. Maven笔记 #01# 入门

    索引 Maven是干什么的? 用Maven的好处 Maven与命令行 Maven与IntelliJ IDEA 一.Maven是干什么的? 我相信只要你写过足够多的代码,就... 肯定有思考过写一个脚本 ...

  5. maven 入门

    Apache Maven 入门篇 ( 上 ) 作者:George Ma 写这个 maven 的入门篇是因为之前在一个开发者会的动手实验中发现挺多人对于 maven 不是那么了解,所以就有了这个想法.这 ...

  6. 初识maven及其安装步骤!!

    maven(01)--安装及其介绍   1:下载maven windows下载 2:将下载文件夹解压,然后放在一个安装目录(可任意选择),例如就放在D盘的根目录 然后在设置环境变量,新建一个环境变量, ...

  7. 使用embeded tomcat进行嵌入式javaee开发-启动tomcat

    昨天在网上研究了下关于将tomcat嵌入到主程序中进行运行,而不是像以前将一个web项目copy到tomcat中进行运行.之所以这样做的原因,即是因为项目部署到客户方,在进行更新的时候,需要手动地进行 ...

  8. MyBatis 文档 完整版

    框架技术 1.框架技术 01.是一个应用程序的半成品 02.提供可重用的公共结构 03.按一定规则组织的一组组件 2.分析优势 01.不用再考虑公共问题 02.专心的业务实现上 03.结构统一,易于学 ...

  9. 01 整合IDEA+Maven+SSM框架的高并发的商品秒杀项目之业务分析与DAO层

    作者:nnngu 项目源代码:https://github.com/nnngu/nguSeckill 这是一个整合IDEA+Maven+SSM框架的高并发的商品秒杀项目.我们将分为以下几篇文章来进行详 ...

随机推荐

  1. 原创: 做一款属于自己风格的音乐播放器 (HTML5的Audio新特性)

    灵感的由来是前些天看到了博: http://www.cnblogs.com/li-cheng 的首页有一个很漂亮的播放器,感觉很不错,是用Flex做的Flash播放器. 于是我也便想到了,自己也来来弄 ...

  2. symbolicatecrash位置

    symbolicatecrash是一个隐藏工具,它在我的Mac中的具体路径如下(Xcode6.1.app请换成你的Xcode名称) /Applications/Xcode6.1.app/Content ...

  3. ECshop 二次开发模板教程2

    不知道大家是学会用循环了呢,还是我的言语实在有问题,大家实在无法完成阅读哦,居然大家都没有问题,暂时心里安慰,把他当做好事情,大家都会调用了,呵呵,那我们继续循环调用商品了!好,继续在我们昨天的基础上 ...

  4. 关于KOBE 退役

    今天在网上看到一行话,写在KOBE 退役之际 关于职业,最值得问的是自己我有没有像科比那样始终表现出对团队的忠诚和对职业的热爱?从不被别人的误解和攻击打倒?在团队最困难的时候站出来做能做的一切?用职业 ...

  5. DevExpress GridView属性设置 z

    本文主要总结控件的属性设置,附上图片,给大家一个参考.后续会给大家分享功能实现和使用的小技巧. GirdControl是数据的容器,它包含多种显示方式,GridView则是一种二维表格视图. 绑定数据 ...

  6. Tableau学习笔记之二

    2张图片解析下Tableau 9.0界面的功能 1.数据加载界面: 2.数据分析界面:

  7. bzoj 2594 [Wc2006]水管局长数据加强版(LCT+最小生成树)

    [深坑勿入] [给个链接] http://blog.csdn.net/popoqqq/article/details/41348549 #include<cstdio> #include& ...

  8. vijos P1213 80人环游世界(有源汇的上下界费用流)

    [题目链接] https://vijos.org/p/1213 [题意] m个人将n个点访问完,每个点能且只能访问v次,点点之间存在有权边,问最小费用. [思路] 有源汇的上下界最小费用最大流. 每个 ...

  9. storm,hbase和storm-kafka-0.8-plus兼容性问题

    1  org.slf4j.impl.StaticLoggerBinder.SINGLETON错误 方案: 确保slf4j-api-1.5.6.jar 和slf4j-log4j12-1.5.6.jar ...

  10. UML 学习

    推荐书籍:<面向对象分析与设计(第3版)>.<UML精粹:标准对象建模语言简明指南(第3版)> 推荐一: http://amateras.sourceforge.jp/cgi- ...