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 官方网站: http://maven.apache.org/

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 的一个镜像。例如:在国内直接连接中央仓库下载依赖,由于一些特殊原因下载速度非常慢。这时,我们可以使用阿里云提供的镜像 http://maven.aliyun.com/nexus/content/groups/public/来替换中央仓库 http://repol.maven.org/maven2/。修改 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高级java架构和大数据开发资料,可关注公众号:程序员理想,获取最新的行业资讯与技术视频

猜你喜欢

转载自blog.csdn.net/Assdqd/article/details/86609420