- 1 开发工具 IDE
- 1.1 开发工具概述
- 1.2 IDE Eclipse
- 1.3 IDE IntelliJ IDEA
- 1.4 IDE Pycharm
- 1.5 IDE Visual Studio Code
- 本章参考
- 2 项目构建工具
- 2.1 概述
- 2.2 make/makefile
- 2.3 make 家族
- 2.4 Ant
- 2.5 Maven
- 2.6 Gradle
- 2.7 sbt
- 本章参考
- 3 包/模块管理
- 3.1 软件包管理 .package (按 OS 划分)
- 3.2 模块管理.module (按语言划分)
- 3.3 自定义安装程序
- 本章参考
- 4 软件制品仓库 Artifactory
- 4.1 仓库
- 4.2 仓库管理软件
- 本章参考
- 5 软件设计工具
- 模型和代码转化工程
- 6 其它工具技巧
- 远程终端 SSH
- 开发
- 源码、文档编辑
- 小技巧
- 本章参考
- 参考资料
2.5 Maven
2.5.1 maven 简述
- Getting Started Tutorial ,官方入门文档;
- Build Cookbook ,官方的 cookbook;
- POM Reference ,POM 文件的设置参考
- Settings Reference ,settings 文件的设置参考
Maven 是一个强大的 Java 项目管理工具,它 包含了一个项目对象模型 POM (Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System),和用来运行定义在生命周期阶段(phase) 中插件(plugin) 目标(goal) 的逻辑。当你使用 Maven 的时候,你用一个明确定 义的项目对象模型来描述你的项目,然后 Maven 可以应用横切的逻辑,这些逻辑来自一组共享的(或者自定义的)插件。
Maven 除了以程序构建能力为特色之外,还提供高级项目管理工具。由于 Maven 的缺省构建规则有较高的可重用性,所以常常用两三行 Maven 构建脚本就可以构建简单的项目。
maven 有以下功能:
- 构建:比如生成 class、jar、war 或者 ear 文件
- 生成文档:比如生成 javadoc、网站文档
- 生成报告:比如 junit 测试报告
- 生成依赖类库:生成文档,说明项目多其他软件的依赖
- 有关 SCM:SCM(Software Configuration Management),软件配置管理,比如版本控制,比如 bug 管理等等
- 发布:生成供发布的分发包,比如生成 Struts2 的分发包,供提交给用户使用
- 部署:比如,web 应用程序,自动部署到指定的服务器上
2.5.2 pom.xml 配置
Maven 的中心思想是 POM 文件(项目对象模型)。
- POM 文件是以 XML 文件的形式表述项目的资源,如源码、测试代码、依赖(用到的外部 Jar 包)等。
- POM 文件应该位于项目的根目录下。
- 所有的 Maven pom 文件都继承自一个父 pom。如果没有指定父 pom,则该 pom 文件继承自根 pom。
下图说明了 Maven 是如何使用 POM 文件的,以及 POM 文件的主要组成部分:
图表 2 maven 过程
如下为一个最小化的 POM 文件示例:
<?xml version="1.0" encoding="utf-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.jenkov</groupId>
<artifactId>Java-web-crawler</artifactId>
<version>1.0.0</version>
<dependencies>
<dependency>
<groupId>org.hamcrest</groupId>
<artifactId>hamcrest-all</artifactId>
<scope>test</scope>
</dependency> <dependency/>
</dependencies>
<build>
<pluginManagement>
<plugins>
<plugin/>
</plugins>
</pluginManagement>
</build>
</project>
说明:
- modelVersion 属性表示使用的 POM 模型的版本。
- groupId 属性是一个组织或者项目(比如开源项目)的唯一 ID。大多数情况下,你会使用项目的 java 包的根名称作为 group ID。
- artifactId 属性包含你正在构建的项目的名称。
- versionId 包含项目的版本号。
- 其它标签:build pluginManagement plugins plugin dependencies dependency 等等
上文中的 groupId,artifactId 和 version 属性,在项目构建后会生成一个 jar 文件,位于 Maven 仓库的如下路径中(目录和文件名):
MAVEN_REPO/groupId/groupId/groupId/artifactId/version/version/version/artifactId-$version.jar
即:
MAVEN_REPO/com/jenkov/Java-web-crawler/1.0.0/Java-web-crawler-1.0.0.jar
如果你的项目使用[ Maven 目录结构 ],而且项目没有外部依赖,上面的最简化 POM 文件就是你构建项目所需的所有配置了。
2.5.3 maven 项目结构和命令
表格 23 maven 项目标准目录布局
目录文件 | 简介 |
---|---|
src/main/Java | Application/Library sources |
src/main/resources | Application/Library resources |
src/main/resources-filtered | Application/Library resources which are filtered. (Starting with Maven 3.4.0, not yet released.) |
src/main/filters | Resource filter files |
src/main/webapp | Web application sources |
src/test/Java | Test sources |
src/test/resources | Test resources |
src/test/resources-filtered | Test resources which are filtered by default. (Starting with Maven 3.4.0, not yet released.) |
src/test/filters | Test resource filter files |
src/it | Integration Tests (primarily for plugins) |
src/assembly | Assembly descriptors |
src/site | Site |
pom.xml | maven 项目的配置文件 |
LICENSE.txt | Project's license |
NOTICE.txt | Notices and attributions required by libraries that the project depends on |
README.txt | Project's readme |
Maven 配置文件
配置文件名为 settings.xml,两个配置文件分别为:
- Maven 安装目录中:$M2_HOME/conf/settings.xml
- 用户主目录中(Default):${user.home}/.m2/settings.xml
两个配置文件都是可选的。如果两个文件都存在,则用户目录下的配置会覆盖 Maven 安装目录中的配置。
Maven 命令
# 创建 maven 项目
mvn archetype:generate
# 编译项目,编译测试程序:
mvn compile
mvn test-compile
# 打包发布,打包时跳过测试
mvn package
mvn package -Dmaven.test.skip=ture
# 安装当前工程的输出文件到本地仓
$ mvn install
# 清理(删除 target 目录下编译内容)
mvn clean
mvn clean install
# 生成、清除 Eclipse 项目结构
mvn eclipse:eclipse
mvn eclipse:clean
# 仅打包 Web 页面文件
mvn war:exploded
运行测试:mvn test
生成站点目录: mvn site
生成站点目录并发布:mvn site-deploy
查看实际 pom 信息: mvn help:effective-pom
分析项目的依赖信息:mvn dependency:analyze 或 mvn dependency:tree
查看帮助信息:mvn help:help 或 mvn help:help -Ddetail=true
查看插件的帮助信息:mvn :help,比如:mvn dependency:help 或 mvn ant:help 等等。
denny@denny-ubuntu:~$ echo $MAVEN_HOME denny@denny-ubuntu:~$ mvn -version Apache Maven 3.0.5 Maven home: /usr/share/maven Java version: 1.7.0_121, vendor: Oracle Corporation Java home: /usr/lib/jvm/Java-7-openjdk-i386/jre Default locale: en_US, platform encoding: UTF-8 OS name: "linux", version: "4.2.0-27-generic", arch: "i386", family: "unix"
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论