本期介绍基于Java平台的项目管理和整合工具——Maven

2022-11-24 21:04 栏目: 技术学堂 查看()

曼图指南

本期介绍基于Java平台的项目管理与集成工具Maven。笔者将结合项目应用,带领大家对Maven有一个更全面的了解和使用,主要侧重于Maven项目的实战。下面我们就如何配置Maven、如何划分模块、如何解决冲突、如何配置私服、如何配置多环境等问题进行解答。我希望你能通过阅读本文得到一些帮助或启发。

前言

自Java诞生以来,打包、测试、部署Java项目一直是困扰Java程序员的枷锁。即便是Ant的出现,还是让程序员深感困扰,而Ant中Build Xml格式文件的方式又一次加重了程序员的负担,直到Maven的出现。

下面就带大家了解一下Maven是什么,它的用途和基本功能,然后看看我们在实际项目中经常遇到的一些问题及其解决方法。如果你没有使用过Maven,但有使用过Make、Ant等构建工具的经验,相信通过下面的介绍,你能更清楚地了解各种工具的优缺点,对Maven有一个全面的了解。

1.什么是Maven?1.1 Maven简介 Maven是一个项目管理和构建的工具。它基于项目对象模型(POM)的概念,通过一小段信息描述来管理项目的构建、报告和文档。

图1 Maven模型图

1.2 为什么选择Maven 在maven诞生之前,我们经常遇到以下问题:

对于以上问题,目前最流行的解决方案是maven,下面一起来看看吧。

2. Maven的主要功能 2.1 Maven常用命令 2.2 Maven生命周期 在同一个生命周期中,当执行以下命令时,会自动执行前面的所有命令

图2 Maven生命周期执行图

2.3 Maven坐标详解

Maven坐标的主要组成部分

    <dependency>        <groupId>org.springframeworkgroupId>        <artifactId>spring-webmvcartifactId>        <version>4.3.22.RELEASEversion>    dependency>

2.4 依赖管理 2.4.1 依赖

依赖是指当前项目运行需要的jar,一个项目可以设置多个依赖

    <dependency>        <groupId>org.springframeworkgroupId>        <artifactId>spring-webmvcartifactId>        <version>4.3.22.RELEASEversion>    dependency>    <dependency>        <groupId>junitgroupId>        <artifactId>junitartifactId>        <version>4.3.12version>        <scope>testscope>    dependency>

2.4.2 依赖范围

     <dependency>          <groupId>junitgroupId>          <artifactId>junitartifactId>          <scope>testscope>     dependency>

图3 range map

2.4.3 依赖传递性

maven项目仓库配置_maven如何只使用本地仓库_maven远程仓库搭建

图 4 依赖图

2.4.4 依赖原则

图5 依赖原理图

2.4.5 依赖排除的两种方式

            junit        junit                  <id>javaid>????????????????????<mirrorOf>repomirrorOf>??????????          <name>java-publicname>??????????<url>镜像urlurl>      mirror>  mirrors>

需要注意的是,id的id需要和配置的发布仓库Id一致,发布仓库和校验信息是通过id来匹配的。

* 表示拦截所有请求,使用该仓库external:*??表示本地仓库的中没有的依赖才会使用该镜像仓库central??表示拦截去中央仓库的请求,使用该镜像仓库*,!repo?除repo这个仓库外,其他依赖都是用该镜像仓库repo 表示只有repo的仓库才会使用该镜像仓库

repo是指从私服获取repo仓库的内容,然后其他请求会下载到远程中央仓库,但是当我们去远程中央仓库下载的时候,会发现速度很慢。毕竟中央仓库在国外,连接超时很正常。这里我们可以通过选择阿里云的镜像来解决这个问题。

  <mirrors>      <mirror>                    <id>javaid>??????????          <mirrorOf>repomirrorOf>??????????          <name>java-publicname>??????????<url>镜像urlurl>      mirror>      <mirror>         <id>alimavenid>         <name>aliyun mavenname>         <url>http://maven.aliyun.com/nexus/content/groups/public/url>         <mirrorOf>centralmirrorOf>       mirror>   mirrors>

3.4.5 项目上传私服设置

在项目的pom文件中添加配置maven如何只使用本地仓库,然后通过mvn部署

   <distributionManagement>                <repository>            <id>releasesid>            <name>Nexus Release Repositoryname>            <url>仓库java-releases的访问路径url>        repository>                <snapshotRepository>            <id>snapshotsid>            <name>Nexus Snapshot Repositoryname>            <url>仓库java-snapshots的访问路径/url>        snapshotRepository>    distributionManagement>

3.4.6 私服访问中心服务器设置

图12 Nexus配置中心仓库地址图

3.5 多环境配置与应用

我们每天都在自己的开发环境中开发。当开发完成后,我们将开发好的功能部署到测试环境中,供测试人员进行测试。测试人员测试通过后,我们会将项目部署到生产环境上线使用。这时候maven如何只使用本地仓库,就会出现问题。不同环境导入的包版本不一致。测试环境一般是版本,上线后需要去掉。那么我们在项目中应该如何配置呢?如何实现不同环境之间的配置切换?接下来,我们将通过定义多个环境来解决上述问题。

        <profiles>                <profile>                        <id>testid>                        <properties>                <test-version>1.0.0-SNAPSHOTtest-version>                <rely-jar-suffix>-SNAPSHOTrely-jar-suffix>                <deploy-repository-id>仓库的IDdeploy-repository-id>                <deploy-url>仓库的urldeploy-url>            properties>
<activation> <activeByDefault>trueactiveByDefault> activation> profile> <profile> <id>prodid> <properties> <test-version>1.0.0test-version> <rely-jar-suffix>rely-jar-suffix> <deploy-repository-id>仓库的IDdeploy-repository-id> <deploy-url>仓库的urldeploy-url> properties> profile> profiles>

4.总结

以上就是本文的内容,简单回顾一下。本文首先介绍什么是Maven及其主要功能。相信大家通过阅读本文可以更加清楚地理解我们选择Maven的原因。接下来我们通过Maven进阶,更详细的介绍了我们在项目实战中经常用到的子模块开发设计、私服配置、多环境配置与应用。这些真正用在项目中,相信大家一定会有所收获。

有了Maven,所有项目的构建命令简单一致,大大避免了不必要的学习成本,有利于促进项目团队的标准化。综上所述,Maven作为一个构建工具,不仅可以帮助我们实现构建自动化,还可以对构建过程进行抽象,提供构建任务实现;它可以提供跨平台一致的操作界面,所有这些都足以让它成为一个优秀的、流行的构建工具。

这篇文章的作者

蜘蛛侠,来自漫图互联网中心后台团队。

- - - - 结尾 - - - -

也许你想看

| | |

开云·体育全站APP

扫二维码与项目经理沟通

我们在微信上24小时期待你的声音

解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流

郑重申明:开云APP网络以外的任何单位或个人,不得使用该案例作为工作成功展示!