您的位置:首页 > 编程语言 > Java开发

Maven学习总结

2016-06-24 11:08 316 查看
      from:http://www.cnblogs.com/xing901022/p/4170248.html

                 http://blog.csdn.net/lovesummerforever/article/details/23052915

   详细系列:点击打开链接

      Maven是一个用于项目构建的工具,通过它便捷的管理项目的生命周期。即项目的jar包依赖,开发,测试,发布打包。

  下面我自己总结一下它的几个特点,看了这些特点,也许对maven有更多的了解。

  1 jar包依赖

  这个也许会maven最突出的特点了使用maven不需要上网单独下载jar包,只需要在配置文件pom.xml中配置jar包的依赖关系,就可以自动的下载jar包到我们的项目中。这样,别人开发或者使用这个工程时,不需要来回的拷贝jar包,只需要复制这个pom.xml就可以自动的下载这些jar包。

  而且,我们自己下载jar包,还有可能造成版本的不一致,这样在协同开发的过程中就有可能造成代码运行的不一致。通过使用maven精确的匹配jar包,就不会出现这种问题了。

  2 项目坐标

  Maven通过特定的标识来定义项目名称,这样既可以唯一的匹配其他的jar包,也可以通过发布,使别人能使用自己的发布产品。这个标识就被叫做坐标,长的其实很普通,就是简单的xml而已:

<groupId>com.test</groupId>
<artifactId>maventest</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>

<name>maventest</name>
<url>http://maven.apache.org</url>

  groupId:所述的项目名称,由于有的项目并不是一个jar包构成的,而是由很多的jar包组成的。因此这个groupId就是整个项目的名称。

  artifactId:包的名称。

  version:版本号。

  packaging:包的类型,一般都是jar,也可以是war之类的。如果不填,默认就是jar。

  nameurl,一个是名称,一个是maven的地址。主要就是上面的几个参数。

  当想要依赖什么jar的时候就可以通过下面的方式依赖:

<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>

  各个属性的内容基本上都是一样的。

  这里要注意的是jar包的命名规则:

  artifactId-version[-classifier].packaging

  比如上面的pom.xml生成的jar包名字就是:maventest-0.0.1-SNAPSHOT.jar。

  这里的classifier是可选的,但是有的项目可能还需要导出附属的一些文件,如javadoc,source等等,那么这个地方就需要配置一个字符串。一般都是JDKXXX之类的。

  3 测试驱动

  Maven是测试驱动的开发思路,因此工程创建初期,就包含两个文件夹,main和test。一个用于放置开发的java文件,一个用于写test单元测试。这样每次开发的时候,提前设计单元测试,就能帮助减少BUG。


  如何在eclipse中使用maven

  我使用的eclipse有自带的maven插件,因此直接创建就可以了。这里就不介绍如何安装maven了。下面介绍一下maven工程的创建:

  1 如何创建maven工程:

  直接点击新建,在里面可以找到Maven选项卡,点击Maven Project创建Maven工程



  2 选择默认的工程位置



  3 创建工程,红色是创建普通的maven工程的。粉色是创建web工程的。



  6 填写相关的groupId artifactId version等信息



  点击完成就创建好了一个简单的maven工程。


  maven工程是什么样子的?

  maven的工程一般都是如下的结构:

 


   pom.xml:用于定义或者添加jar包的依赖

  src-main:用于存放java源文件

  src-test:用于存放测试用例。

  也许工程下还会出现target文件夹,这个是用来生成对应的class文件或发布的jar包。


  Eclipse中maven常用的命令

  点击Run As就可以发现几个Maven的命令:

  Maven Build:

  这个命令用于编译Maven工程,执行命令后会在target文件夹中的classes中生成对应的class文件。

  Maven Clean:

  删除target文件夹,即删除生成的package包以及class等文件。

  Maven Test:

  先自动进行编译,在运行所有的测试用例。

  Maven install:

  发布生成对应的package包。

  注意:

  留意上面的命令的作用,build和test都会生成相应的class文件。也就是说,当你新建一个maven工程,或者clean一个maven工程后,如果没有使用这两个命令,直接针对类进行测试,会跑出java.class.notfound的错误。因为此时还没有编译生成class文件,如果有朋友发现这个问题注意一下就好了。(该部分只针对旧版本,新版本如maven3.3是可以自动编译的)

  只有使用了上面的两个命令后,才能针对某个类进行单元测试。


Maven特点

        Maven约定,遵守Maven约定,Maven就自动的去找源代码。

        Maven声明式,最重要的Maven项目文件是pom.xml和一个settting.xml,通过他你去告诉Maven去做什么,怎么做。

        Maven生命周期,例如当运行Maven install命令时,Maven会自动的执行各种插件,并且他自己按照顺序执行,我们不需要知道更多的细节。

        Maven基于插件,几乎所有的操作都是在插件上完成的,第一次执行命令会自动从中央服务器上下载命令执行插件来完成操作。


Maven的一些知识如下图所示。




Maven初步

        1、Maven插件安装。

        对于eclipse,需要安装Maven插件,也就是从官网上下载Maven的jar包,解压后,把bin目录配置到环境变量上,这样我们就不需要每次都敲很长的路径来运行Maven了。

        对于Myeclipse,自带的Maven插件,不需要我们安装了。

        2、本地仓库的安装。

        那些下载下来的jar包,maven会放到一个仓库中,这样第一次下载之后,第二次再用就会从本地仓库中查找是否存在,如果存在就不会再去网站上下载。本地仓库在c盘用户文档 .m文件夹中,我们可以通过配置maven目录下的conf文件夹中的setting.xml来去修改默认的本地仓库的位置。

        3、新建Maven项目。

        无论是eclipse还是Myeclipse,选择新建,就会看到Maven project。同时项目的目录结构是我们必须要遵守的。

        4、创建java代码和测试代码

        约定了

                源代码应该放到src/main/java中

                源代码资源文件放到src/main/resources文件夹中

                测试代码放到src/test/java中

                编译后会自动生成文件夹,.java编译成.class文件位置,target/classes

                打包后的jar包war ear等:/target。

        5、Maven运行,常用命令如下所示

                mvn compile:编译源代码。

                mvn test-compile:编译测试源代码。

                mvn test:运行单元测试。

                mvn site:生成项目相关信息的网站。

               mvn clean:清楚项目目录中生成的结果。

               mvn package:打包,根据项目生成jar。

                mvn install:在本地Respository中安装jar。

                mvn clean install:运行清理和安装,会将打包好的包安装到本地仓库中,以便一起的项目调用。

                mvn clean develop:运行清理和安装,发布到私有服务器上。

        6、Maven生成方式

                如果我们在dos命令下使用Maven,通过命令mvn archetype generate,可以自动生成Maven项目的骨架。


Maven依赖

        这里所说的依赖性,不是像UML类关系之间,这里说的是独立的项目与项目之间,是pom.xml文件,更确切的说是各个项目依赖的jar包,这样就不需要重复引用了。

        依赖包查询

                一些网站上有可以查询依赖包,通过查询再配置到pom.xml中。

                http://mvnrepository.com/

        依赖传递性

        依赖的范围

        聚合问题和继承问题

        版本管理


Maven仓库

        本地仓库

        远程仓库

        私有仓库


Maven生命周期和插件

        三套生命周期

        1、clean

        2、compile

        3、site

导入eclipse项目时注意点

1.导入项目之前,请确认工作空间编码已设置为utf-8:window->Preferences->General->Wrokspace->Text file encoding->Other 选择UTF-8。

2.导入后,由于你的开发环境中JRE以及Tomcat Library名称可能和源代码中的不一致,可能会出现Build Path的错误,解决方法如下:右键project->Build Path->Configure Build Path->选择Libraries tab页->删除带小红叉的Library->点击Add Library->选择JRE System Library(删了Tomcat Library的话就选择Server Runtime)->选择一个JRE后->Finish。

3.进入项目包下的.settings目录,找到org.eclipse.wst.common.project.facet.core.xml文件,用记事本打开后才发现这句话有问题:《runtime name="Apache Tomcat v6.0"/》。我eclipse中设置的tomcat是7.0版本的,而它的运行环境是6.0版本的tomcat,肯定会出现问题。于是把这句话删掉,正常。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java web eclipse maven