前言:java
因为最近工做学习,老是能碰到Maven的源码。虽然平时工做并不使用Maven,可是为了学习一些源码,仍是必需要了解下。这篇文章不是一个全面的Maven解析,而是一个简单的介绍,包括Eclipse中如何使用Maven,如何利用Maven工程学习。web
按部就班,你将会学到下面的知识:apache
maven的相关书籍!app
什么是maven?eclipse
如何在eclipse中使用maven?maven
maven的工程是什么样子?工具
Eclipse中maven的经常使用命令!单元测试
首先推荐两本书,都是网上找的pdf。因为我本身没有工做需求,所以也只是简单的了解一下而已,并无深刻的研究。有兴趣的朋友,能够多看看这两本书。学习
《Maven权威指南》测试
《Maven实战》
Maven是一个用于项目构建的工具,经过它便捷的管理项目的生命周期。即项目的jar包依赖,开发,测试,发布打包。
下面我本身总结一下它的几个特色,看了这些特色,也许对maven有更多的了解。
1 jar包依赖
这个也许会maven最突出的特色了使用maven不须要上网单独下载jar包,只须要在配置文件pom.xml中配置jar包的依赖关系,就能够自动的下载jar包到咱们的项目中。这样,别人开发或者使用这个工程时,不须要来回的拷贝jar包,只须要复制这个pom.xml就能够自动的下载这些jar包。
并且,咱们本身下载jar包,还有可能形成版本的不一致,这样在协同开发的过程当中就有可能形成代码运行的不一致。经过使用maven精确的匹配jar包,就不会出现这种问题了。
2 项目坐标
Maven经过特定的标识来定义项目名称,这样既能够惟一的匹配其余的jar包,也能够经过发布,使别人能使用本身的发布产品。这个标识就被叫作坐标,长的其实很普通,就是简单的xml而已:
1 <groupId>com.test</groupId> 2 <artifactId>maventest</artifactId> 3 <version>0.0.1-SNAPSHOT</version> 4 <packaging>jar</packaging> 5 6 <name>maventest</name> 7 <url>http://maven.apache.org</url>
groupId:所述的项目名称,因为有的项目并非一个jar包构成的,而是由不少的jar包组成的。所以这个groupId就是整个项目的名称。
artifactId:包的名称。
version:版本号。
packaging:包的类型,通常都是jar,也能够是war之类的。若是不填,默认就是jar。
name和url,一个是名称,一个是maven的地址。主要就是上面的几个参数。
当想要依赖什么jar的时候就能够经过下面的方式依赖:
1 <dependencies> 2 <dependency> 3 <groupId>junit</groupId> 4 <artifactId>junit</artifactId> 5 <version>3.8.1</version> 6 <scope>test</scope> 7 </dependency> 8 </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插件,所以直接建立就能够了。这里就不介绍如何安装maven了。下面介绍一下maven工程的建立:
1 如何建立maven工程:
直接点击新建,在里面能够找到Maven选项卡,点击Maven Project建立Maven工程
2 选择默认的工程位置
3 建立工程,红色是建立普通的maven工程的。粉色是建立web工程的。
6 填写相关的groupId artifactId version等信息
点击完成就建立好了一个简单的maven工程。
maven的工程通常都是以下的结构:
first_maven
|-- pom.xml
`-- src
|-- main
| |-- java
| | `-- com
| | `-- test
| | `-- App.java
| `-- resources
| `-- META-INF
| `-- application.properties
`-- test
`-- java
`-- com
`-- test
`-- AppTest.java
pom.xml:用于定义或者添加jar包的依赖
src-main:用于存放java源文件
src-test:用于存放测试用例。
也许工程下还会出现target文件夹,这个是用来生成对应的class文件或发布的jar包。
点击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是能够自动编译的)
只有使用了上面的两个命令后,才能针对某个类进行单元测试。