一什么是maven?
maven是基于项目对象模型(POM),可以通过一小段描述信息来管理项目的构建、报告和文档的软件项目管理工具。
maven除了以程序构建能力为特色之外,还提供高级项目管理工具。由于maven的缺省构建规则有较高的可重用性,所以常常用两三行maven构建脚本就可以构建简单的项目。由于maven面向项目的方法,许多apache Jakarta项目发文时使用maven,而且公司项目采用maven的比例在持续增长。
二:maven对项目的结果要求
maven使用惯例优于配置的原则,所有的项目都有如下结构:
目录 | 目的 |
src/main/java | java源码目录 |
src/main/resources | 资源文件目录 |
src/test/java | 测试java源码目录 |
src/test/resources | 测试资源文件目录 |
target | 打包输出目录 |
target/classes | 编译输出目录 |
target/test-classes | 测试编译输出目录 |
target/site | 项目site输出目录 |
src/main/webapp | web应用文件目录(当打包为war时),如WEB-INF/web.xml |
jar | 默认打包格式 |
*Test.java | Maven只会自动运行符合该命名规则的测试类 |
%user_home%/.m2 | Maven默认的本地仓库目录位置 |
中央仓库 | Maven默认使用远程中央仓库:http://repo1.maven.org/maven2 |
1.5 | Maven Compiler插件默认以1.5编译,因此需要额外配置支持1.6 |
注意:1:修改默认中央仓库位置为我们所管理,修改默认jar1.5环境为jar1.6我们所需要的编译环境。如在maven的setting.xml中这样设置
<!--设置默认编译环境为1.7-->
<profile>
<id>jdk-1.7</id>
<activation>
<activeByDefault>true</activeByDefault>
<jdk>1.7</jdk>
</activation>
<properties>
<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>
<maven.compiler.compilerVersion>1.7</maven.compiler.compilerVersion>
</properties>
</profile>
2:其上所有的约定都可以在Maven的超级POM(super pom)中找到。由于所有的POM都隐式继承了这个超级POM,因此它的默认配置就被继承了 。Maven3中这个超级POM位于E:\maven\apache-maven-3.2.1\lib\maven-model-builder-3.0.4.jar\org\apache\maven\model下
三:maven生命周期
一个完整的项目构建过程包括:清理,编译,测试,打包,集成测试,验证,部署等操作。maven的生命周期离不开插件,需要插件实现。
maven生命周期:
clean: 清理项目 包括 pre-clean 执行清理前的工作 clean 清理上一次构建生成的所有文件 post-clean 执行清理后的文件
compile: 编译项目(核心) 包括test package install
site: 生成项目站点 包括pre-site 在生成项目站点前要完成的工作 site 生成项目的站点文档 post-site 在生成项目站点后要完成的工作 site-deploy 发布生成的站点到服务器上
四:maven内置隐士变量
${basedir} 项目根目录
${project.build.directory} 构建目录,缺省为target
${project.build.outputDirectory} 构建过程输出目录,缺省为target/classes
${project.build.finalName} 产出物名称,缺省为${project.artifactId}-${project.version}
${project.packaging} 打包类型,缺省为jar
${project.xxx} 当前pom文件的任意节点的内容