一、maven简介____________________________________________________________
构建build(编译,运行单元测试,生成文档,打包,部署)
每天第一件事,update代码,单元测试,编写自己的测试代码和产品代码,用IDE生成测试报告,
QA发来bug,先在本地重现,按后生成WAR,部署到WEB容器下。除了编写源代码,编译,运行单元测试,
生成文档,打包,部署,这些琐碎的工作就是构建,琐碎重复而且耗时,maven就是解决这个问题。
被误解的maven
只有两类计算机语言,一类天天被人骂,还有一类没人用。--c++之父本贾尼。总会有bug。
MAVEN_HOME/M2_HOME是安装目录
~/.m2是本地仓库目录,可以在MAVEN_HOME/conf/setting.xml里修改,(windows下~当前目录c:/Users/river/)
mvn help:system
输出java系统属性和环境变量(仅在第一次执行命令时下载需要的maven-help-plugin)
二、maven使用入门____________________________________________________________
官方库,内部库(也叫私服),本地库
maven有自己的一个官方库,一般公司会在配置一个自己的内部远程库(也叫私服),
本地库:安装目录中setting.xml的<localRepository>节点
跨项目的同包-rt.jar里也有很多的。能分离解耦开当然利大于弊。
约定优于配置
配置文件
maven只有一个配置文件:conf\setting.xml
编写pom.xml(项目配置文件)
坐标:groupId,artifactId,version,packaging
编写主代码src/main/java/com/river/HelloWorld.java(maven约定,约定优于配置)
编译mvn clean compile
输出显示对应3个任务[clean:clean],[resources:resources],[compiler:compile](这是compiler插件的compile目标)
编写测试代码
<dependency>
<groupId>junit</groupId>
,artifactId,version,
<scope>test</scope> //指明只能在测试代码中import junit,主代码中import会报编译错误。
</dependency>
mvn clean test
输出显示对应3个任务[clean:clean],[resources:resources],[compiler:compile],,[resources:testResources],[compiler:testCompile]
配置maven-compiler-plugin支持java5,使得支持junit,maven默认是java1.3,执行junit会报错
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.5</source>
<target>1.5</target>
</configuration>
</plugin>
打包和运行
<packaging>jar</packaging>默认为jar,也可以为war,bundle
mvn clean package //执行[jar:jar]
mvn clean install //执行[jar:jar],[install:install]把生成的jar安装到本地仓库中。
构件或者生成的jar只有下载到本地仓库后,才能被其他maven项目使用
默认打包生成的jar不能直接运行,因为带有main方法的类信息不会添加到manifest中(jar文件中的META-INF/MANIFEST.MF文件
,无法看到Main-Class一行), 需要借助maven-shade-plugin。
生成项目骨架(基本目录结构和pom.xml)
mvn archetype:generate