使用Eclipse-Maven-git作Java开发(6)--介绍一下maven

        本文几乎没有什么价值,你们能够跳过,我会将有价值的部分整理发布在下一篇博客。
html

        maven是什么?回答能够有不少,百度一下获得的结果在有限的时间内应该是看不完的,我也不打算在这里把那些别人说的粘贴过来,我打算尽可能用本身的话把我本身认识到的maven说一下。java

        因为是“我本身认识到的maven”,因此有什么不对的地方恳请你们指正,先谢谢啦。linux

0、能够参考的资料

        maven是Apache基金会的项目,能够理解为一个软件,更能够理解为一种开发管理方式,下面就是关于他的颇有用的资料:git

                官方网站:http://maven.apache.org/web

                中央仓库:http://search.maven.org/
spring

                eclipse的m2e项目:https://projects.eclipse.org/projects/technology.m2e
apache

                osc的maven仓库:http://maven.oschina.net/home.html
spring-mvc

        其余的还有不少,最主要的仍是官方网站和中央仓库。tomcat

一、maven

        maven是一个使用java语言开发的软件,负责java项目的依赖管理、项目构建、项目模块管理、部署发布和运行等等功能,咱们在不少的java开源项目中均可以看到一个叫作"pom.xml"的文件,并且并且不少时候java源代码都放在叫作“src/main/java”的路径下,这就是使用了maven的项目。网络

        maven以前,人们要作一样的事都是使用ant——Apache的另一个项目,可是如今愈来愈多的人都在使用maven了,这就好像git出现以后有愈来愈多的人使用git同样,哪个更好用就用哪个。

        更多的关于maven的“正式”的介绍我就不说了,由于我也说很差,你们仍是看官方网站的说明吧,或者百度一下也有不少不错的说明,下面我着重说一下我本身使用maven的体会。

二、初识maven

        我是在大二开始学习java的,当时就是用eclipse开发,新建工程、编写代码、运行代码,顶多来一个tomcat部署(热部署),后来还在网上看了打包war和jar,以为好牛逼,这个和班上另外学asp.net的比起来好多了,由于他们一直都只能在vs里面运行根本不会打包发布,我还能够打包发布到另外的机器上去。

        后来大四除去公司里面实习,当时因为各类缘由,就我一我的负责java方面的开发,所有东西都是我本身来,后来因为一些缘由须要让工程可以在不须要IDE环境的状况下打包,并且还有多是不懂java的人来操做(当时具体的状况忘了)。我就网上找资料,反正我内心以为是能够作到的,后来就找到了maven。

        当时是2014年的年初,大概在1月份左右吧,以前寝室里有一个哥们儿使用过maven,我也没有太在乎,以为没有什么实际用途(是否是很目光短浅?),以后就是摸石头过河,一周以后我就以为根本离不开maven了。

        一直到如今,个人全部项目都是使用maven的。

三、maven为何让我离不开

        这个问题很难回答,我先说点题外话。

        大一的时候学过linux,但当时根本没有当回事,也就是混过去了。到了大三,又学习一些课程,有许多都涉及到了linux,这时就有意识的去了解、熟悉了linux,以后我就彻底的喜欢上了它,并且热衷于RedHat系的(现在公司里面的工做机就是Fedora)。

        回过头来,对于maven,我刚开始只是把它看成工具,仅仅是为了完成能让“外行人”能打包出部署包。后来等我用了以后,就发觉绝对不能没有他啊。

        (使用maven)之前咱们开发的时候第一步就是新建工程(参看前一篇博客),里面有不少与环境相关的参数须要指定,虽然有默认值,可是每次仍是须要很仔细的查看一下,并且若是是多人一块儿开发的话,每一个人之间环境上的一点小小的差别就有可能引起很大的问题。

        第二步就是引入依赖的各类库,这也是很头疼的一项工做,先要找到对应的jar文件,而后须要根据项目类型将文件以合理的方式引入进来,还须要放入版本控制里面,之后更换的话还须要从新来过。并且这仍是顺利的状况,不顺利的话……哎,说多了都是泪啊,作过的人都懂的。

        接下来就是编写代码、测试,这没什么。

        有时候须要打包到不是本身机器的环境中去进行运行,(测试、正式发布等等),eclipse本身有相关的向导能够进行这个操做,熟悉了以后也没有什么问题,只不过就是繁琐一点,并且有可能会出错。若是须要反复打包不少次的话,估计有点够呛。

        而在使用了maven以后,pom.xml就是一个项目的全部配置(从某一些方面来讲,一个pom.xml不够,可是确实一个工程一个pom.xml足够),引入依赖只须要说清楚你要的是什么就好了,打包也就是一条命令的事。多我的之间环境不一致的问题几乎不会出现(少数状况下也会出现)。

        这彷佛就是我为何会爱上它的缘由。

四、怎么样使用maven

        maven是用java写的,因此要使用maven,须要的条件有:合适版本以及架构的maven软件、java运行环境、网络。

        前面两个很好理解,后面的网络是怎么回事?很简单,①maven是基于插件的,直接下载的maven软件不足以完成其基本功能,须要从网络下载;②项目配置的依赖库不可能凭空出现吧,须要从网络上下载。固然,这些对网络的须要不是每时每刻都须要的,maven会将下载来的文件存在本地,只有在须要的文件本地没有的状况下才会从网络下载,系在的地方在没有配置的状况下就是中央仓库,有时候网络很差的话就有点困难了,好在咱们还有OSC的maven镜像(http://maven.oschina.net/home.html),同时我还建议有田间的话,能够搭建maven的私有仓库,搭建方法在这里:http://my.oschina.net/songxinqiang/blog/343477这个是我本身搭建私有仓库的记录。

        这些外在的说了,对于要使用maven的项目来讲,还须要一些内在的条件,硬性需求就只有一个:pom.xml文件。非必须的条件就是文件按照必定的组织方式进行放置,之因此这个不是必须的,是由于能够再pom.xml文件中对没有按照要求放置的文件进行配置说明。

        maven的配置使用的是xml,并且在maven内部有一个基础的配置,咱们的配置其实是“继承”下来的,通常称为“约定”,所谓的“约定优于配置”(我认为更应该说成“配置优于约定”,由于你配置了那么约定就不起做用了)。至于pom.xml到底该怎么配置,这个还得根据项目状况来讲,能够参考官方说明来作,不过通用的、都有的配置包括:项目坐标、依赖、构建方式、打包配置。(具体配置内容不在本文讨论范围)

五、maven项目的默认文件结构

        前面说了,maven对项目的文件结构有一个“约定”的,若是按照这个来放文件,就不用单独配置了,并且一想都知道,咱们应该尽可能按照这个“约定”来放,下面就说一下默认的文件结构是什么样子的(只说常见到的文件)。

                a.java源文件:src/main/java

                b.配置文件:src/main/resources

                c.测试的java源文件:src/test/java

                d.测试的配置文件:src/test/resources

                e.web项目的web根目录:src/main/webapp

                f.编译输出目录(maven编译的时候用,咱们不用管):target

        这些在eclipse的pom.xml查看里面能够经过“Effective POM”查看到的,在<build>里面

<sourceDirectory>E:\Workspaces\GITWDir\Billing\src\main\java</sourceDirectory>
    <scriptSourceDirectory>E:\Workspaces\GITWDir\Billing\src\main\scripts</scriptSourceDirectory>
    <testSourceDirectory>E:\Workspaces\GITWDir\Billing\src\test\java</testSourceDirectory>
    <outputDirectory>E:\Workspaces\GITWDir\Billing\target\classes</outputDirectory>
    <testOutputDirectory>E:\Workspaces\GITWDir\Billing\target\test-classes</testOutputDirectory>
    <resources>
      <resource>
        <directory>E:\Workspaces\GITWDir\Billing\src\main\resources</directory>
      </resource>
    </resources>
    <testResources>
      <testResource>
        <directory>E:\Workspaces\GITWDir\Billing\src\test\resources</directory>
      </testResource>
    </testResources>
    <directory>E:\Workspaces\GITWDir\Billing\target</directory>

        能够看到,这里的路径都已经转成了文件系统里面的绝对路径的了。

        树形图大概是这个样子的(将没有必要的部份内容删去):

│  pom.xml
│  
├─src
│  ├─main
│  │  ├─java
│  │  │                          
│  │  ├─resources
│  │  │      log4j.properties
│  │  │      spring-config.xml
│  │  │      spring-mvc.xml
│  │  │      
│  │  └─webapp
│  │      │      
│  │      └─WEB-INF
│  │             web.xml
│  │                      
│  └─test
│      └─java
│                              
└─target
    ├─classes
    │                          
    ├─m2e-wtp
    │  └─web-resources
    │      └─META-INF
    │          │  MANIFEST.MF
    │          │  
    │          └─maven
    │                          
    └─test-classes

        详细的细节在后面的博客中会进行说明。

六、须要了解的是什么

        要知道maven是一个什么样的软件,使用maven的项目是什么样子的,怎么使用maven(这个问题后面会进行详细说明)。



        有什么不对的地方还望你们指出来。

        下一篇博客是对本文的整理。

        enjoy!

相关文章
相关标签/搜索