Apache Maven 是一个项目管理工具。也是一个平台。
pom(Project Object Model)
Maven 运行的时候,它是根据项目的pom.xml 里设置的组合来运行的。Maven是声明式的。我们需要做的只是创建一个 pom.xml 文件然后将源代码放到默认的目录。Maven 会帮你处理其它的事情。Maven符合约定大于配置,源代码,测试代码,生成的jar都有自己的目录。
它有一下几个核心概念。坐标,依赖,仓库,生命周期,插件。
坐标:<groupId>junit</groupId> 它们唯一标识了一个项目
<artifactId>junit</artifactId>
<packaging>jar</packaging>
<version>4.6</version>
依赖:有范围,有传递性
仓库:默认本地所有Maven项目都复用一个本地仓库,本地仓库从远程仓库(可配置)下载必要的构件。中 央仓库是唯一内置的远程 仓库。构建项目是会先从本地仓库寻找依赖,没有在去远程仓库寻找。
插件:Maven 大部分的智能是由插件实现的,而插件从 Maven 仓库获得。插件和目标绑定,一个插件可有 多个目标。以下为举例。
resources:resources
Resources 插件的resources 目标绑定到了resources 阶段。这个目标复制src/main/resources 下的所有资源和其它任何配置的资源目录,到输出目录。
compiler:compile
Compiler 插件的compile 目标绑定到了compile 阶段。这个目标编译src/main/java 下的所有源代码和其他任何配置的资源目录,到输出目录。
resources:testResources
Resources 插件的testResources 目标绑定到了test-resources 阶段。这个目标复制src/test/resources 下的所有资源和其它任何的配置的测试资源目录,到测试输出目录。
compiler:testCompile
Compiler 插件的testCompile 目标绑定到了test-compile 阶段。这个目标编译src/test/java 下的测试用例和其它任何的配置的测试资源目录,到测试输出目录。
surefire:test
Surefire 插件的test 目标绑定到了test 阶段。这个目标运行所有的测试并且创建那些捕捉详细测试结果的输出文件。默认情况下,如果有测试失败,这个目标会终止。
jar:jar
Jar 插件的jar 目标绑定到了package 阶段。这个目标把输出目录打包成JAR 文件。
生命周期:一个生命周期是一些阶段的序列,一个目标绑定到一个阶段,当运行任何maven命令的时候。这条命令告诉 Maven 执行
一系列的有序的步骤,直到达你指定的生命周期。
当我们运行mvn package,Maven 运行到打包为止的所有阶段,在Maven 沿着生命周期一步步向前的过程中,它运行绑定在每个阶段上的所有目标。以下为步骤。
mvn resources:resources \
compiler:compile \
resources:testResources \
compiler:testCompile \
surefire:test \
jar:jar
1 . Maven常用命令指南
在命令行使用mvn --help可得到简单命令帮助;
mvn install 编译,打包并安装到本地仓库;
mvn clean 删除target目录;
mvn test 运行所有单元测试;
mvn jetty:run 运行webapp应用,适用于webapp模块;
mvn eclipse:eclipse 生成eclipse工程。
2. mvn命令的选项解释
-o 不联网检测所有依赖包的更新,例如mvn clean install -o 不联网检测更新进行build(适用于本地仓库中已包含了所有最新jar包);
-P${profileId}为pom.xml中配置的Profile,例如mvn -Pmysql(指定使用mysql数据库);
-D 增加maven运行时的属性值,注意,会覆盖pom.xml中的properties定义,例如mvn -DskipTests=true(不运行测试),mvn -Djdbc.password=123456,重新设置数据库连接密码为123456,mvn –Djetty.port=9090,当你本地需要开启多个服务时,修改端口用
3. Maven Repository配置
找到.m2的仓库目录,默认在你的系统当前用户目录下,例如C:/Users/${yourname}/.m2,编辑settings.xml文件(如果该文件不存在,找到你的maven安装目录,拷贝conf/settings.xml到.m2目录),内容为
<pre>
<settings>
<servers>
<server>
<id>nexus</id>
<username>yourUsernameOnNexus</username>
<password>yourPasswordOnNexus</password>
</server>
</servers>
</settings>
</pre>
配置完成,在源代码目录使用mvn install检查是否可从我们的Maven服务器获取更新。yourUsernameOnNexus和yourPasswordOnNexus现在统一用一个帐号从技术部maven服务器下载依赖。