您的位置 首页 java

Java项目工程构建管理工具,方方面面介绍使用

Java项目工程构建管理工具

1 什么是 Maven

Maven 项目对象模型 (POM) ,可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具。

Maven 除了以程序构建能力为特色之外,还提供高级项目管理工具。由于 Maven 的缺省构建规则有较高的可重用性,所以常常用两三行 Maven 构建脚本就可以构建简单的项目。由于 Maven 的面向项目的方法,许多 Apache Jakarta 项目发文时使用 Maven ,而且公司项目采用 Maven 的比例在持续增长。

Maven 这个单词来自于意第绪语(犹太语),意为知识的积累,最初在 Jakata Turbine 项目中用来简化构建过程。当时有一些项目(有各自 Ant build 文件),仅有细微的差别,而 JAR 文件都由 CVS 来维护。于是希望有一种标准化的方式构建项目,一个清晰的方式定义项目的组成,一个容易的方式发布项目的信息,以及一种简单的方式在多个项目中共享 JARs

2 Maven ANT 的区别

那么, Maven Ant 有什么不同呢?在回答这个问题以前,首先要强调一点: Maven Ant 针对构建问题的两个不同方面。 Ant Java 技术开发项目提供跨平台构建任务。 Maven 本身描述项目的高级方面,它从 Ant 借用了绝大多数构建任务。因此,由于 Maven Ant 代表两个差异很大的工具,所以接下来只说明这两个工具的等同组件之间的区别,如表所示。

Maven 是一个项目管理工具,它包含了一个项目对象模型 (Project Object Model) ,一组标准集合,一个项目生命周期 (Project Lifecycle) ,一个依赖管理系统 (Dependency Management System) ,和用来运行定义在生命周期阶段 (phase) 中插件 (plugin) 目标 (goal) 的逻辑。当你使用 Maven 的时候,你用一个明确定义的项目对象模型来描述你的项目,然后 Maven 可以应用横切的逻辑,这些逻辑来自一组共享的(或者自定义的)插件。

Maven 有一个生命周期,当你运行 mvn install 的时候被调用。这条命令告诉 Maven 执行一系列的有序的步骤,直到到达你指定的生命周期。遍历生命周期旅途中的一个影响就是,

Maven 运行了许多默认的插件目标,这些目标完成了像编译和创建一个 JAR 文件这样的工作。

此外, Maven 能够很方便的帮你管理项目报告,生成站点,管理 JAR 文件,等等。

3 Maven 仓库是什么

Maven 仓库是基于简单文件系统存储的,集中化管理 Java API 资源(构件)的一个服务。仓库中的任何一个构件都有其唯一的坐标,根据这个坐标可以定义其在仓库中的唯一存储路径。得益于 Maven 的坐标机制,任何 Maven 项目使用任何一个构件的方式都是完全相同的, Maven 可以在某个位置统一存储所有的 Maven 项目共享的构件,这个统一的位置就是仓库,项目构建完毕后生成的构件也可以安装或者部署到仓库中,供其它项目使用。

对于 Maven 来说,仓库分为两类:本地仓库和远程仓库。

3.1 远程仓库

远程仓库指通过各种协议如 file:// http:// 访问的其它类型的仓库。这些仓库可能是第三方搭建的真实的远程仓库,用来提供他们的构件下载(例如 repo.maven.apache.org uk.maven.org Maven 的中央仓库)。其它“远程”仓库可能是你的公司拥有的建立在文件或 HTTP 服务器上的内部仓库,用来在开发团队间共享私有构件和管理发布的。

3.2 本地仓库

本地仓库指本机的一份拷贝,用来缓存远程下载,包含你尚未发布的临时构件。

4 仓库配置

Maven 官方网站:

Maven 工程中的默认仓库为 Apache 提供的中央仓库( repo.maven.apache.org )。中央仓库的信息在超级 Pom 中配置,所有的 maven 项目都会继承超级 POM 。 超级 POM 的位置:

$M2_HOME/lib/maven-model-builder-3.0.jar , 然 后 访 问 路 径 org/apache/maven/model/pom-4.0.0.xml ,可以看到配置:

4.1 在 settings.xml 文件中配置本地仓库

本地仓库是开发者本地电脑中的一个目录,用于缓存从远程仓库下载的构件。默认的本

地仓库是 ${user.home}/.m2/repository 。用户可使用 settings.xml 文件修改本地仓库。具体内容如下:

4.2 在 settings.xml 文件中配置镜像仓库

如果仓库 A 可以提供仓库 B 存储的所有内容,那么就可以认为 A B 的一个镜像。例如:在国内直接连接中央仓库下载依赖,由于一些特殊原因下载速度非常慢。这时,我们可以使用阿里云提供的镜像 来替换中央仓库 。修改 maven setting.xml 文件,具体内容如下:

4.3 在 pom.xml 文件中指定远程仓库

如果默认的中央仓库无法满足项目需求,可能需要的构件在另外一个远程仓库,如 JBoss Maven 仓库,可以 POM 中配置该仓库。

4.4 远程仓库的认证

有时候处于安全考虑,需要提供认证信息才能访问一些远程仓库。为了能让 maven 访问仓库内容,就需要配置认证信息,认证信息的配置不会在 pom.xml 配置,而是在 settings.xml 中配置,因为 pom 会被提交到代码仓库中供所有成员访问,而 settings.xml 一般只放在本机。(此配置常用于私服应用,后续会有详细讲解)假设我在 pom.xml 中配置 id=my-proj 的远程仓库,需要认证信息,则在 settings.xml 中配置如下:

这里的 id=my-proj 一定要和 pom.xml 中仓库的 id 一致,这是它们之间唯一的联系。

settings.xml servers 中就是用来配服务器授权信息的,当然不仅可以配置仓库服务器

认证信息,还可以配置其它的比如 tomcat 服务器授权信息也可以在这里配置。

5 仓库优先级问题

本地仓库,镜像仓库,中央仓库, pom 文件中指定的远程仓库。镜像仓库 = 中央仓库。 镜像仓库是用于替代中央仓库的。仓库访问优先级: 5.1 本地仓库

第一访问本地仓库。 5.2 指定仓库

如果本地仓库不存在对应信息,访问 pom 文件中指定的远程仓库。这个远程仓库是第二优先级。

5.3 远程仓库

5.3.1 镜像仓库

镜像仓库是 Maven 开发过程中的首选远程仓库,在本地仓库和指定仓库无法获取资源

的时候,直接访问镜像仓库。 5.3.2 中央仓库

如果镜像仓库不是中央仓库,则会在访问镜像仓库无法获取资源后,访问中央仓库。

更多java架构资料,可以转发文章关注私信我“1”领取最新的java高级架构资料

文章来源:智云一二三科技

文章标题:Java项目工程构建管理工具,方方面面介绍使用

文章地址:https://www.zhihuclub.com/182455.shtml

关于作者: 智云科技

热门文章

网站地图