Maven-04

举报
kwan的解忧杂货铺 发表于 2024/10/07 21:05:46 2024/10/07
【摘要】 1.dependencyManagement在该元素下声明的依赖不会实际引入到模块中,只有在 dependencies 元素下同样声明了该依赖,才会引入到模块中。该元素能够约束 dependencies 下依赖的使用即 dependencies 声明的依赖若未指定版本,则使用 dependencyManagement 中指定的版本,否则将覆盖 dependencyManager 中的版本d...

1.dependencyManagement

  • 在该元素下声明的依赖不会实际引入到模块中,只有在 dependencies 元素下同样声明了该依赖,才会引入到模块中。该元素能够约束 dependencies 下依赖的使用
  • 即 dependencies 声明的依赖若未指定版本,则使用 dependencyManagement 中指定的版本,否则将覆盖 dependencyManager 中的版本
  • dependencyManager 可以传递给子模块,所以在子模块中可以引用父模块 dependencyManagement 定义好的依赖
<!--在dependencyManagement 声明的依赖不会实际引入到模块中 -->
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <version>2.7.5</version>
        </dependency>
    </dependencies>
</dependencyManagement>

如果需要使用该依赖,则应该在 dependencies 中重新声明该依赖

<!--如果需要使用,在dependencies中声明该依赖,无须指定版本-->
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
</dependencies>

如果是在子类中,需要先引入父模块,再引用依赖

<!--引入父模块, parent标签可以理解为java中的继承关系-->
<parent>
    <groupId>父类 groupId</groupId>
    <artifactId>父类 artifactId</artifactId>
    <version>父类 version</version>
</parent>

<!--如果需要使用,在dependencies中声明该依赖,无须指定版本-->
<dependencies>
    <dependency>
        <!--如果指定了版本号,则会覆盖父模块 dependencyManagement 定义的版本(不建议这
            做,dependencyManagement的作用本来就是用来统一版本,防止依赖冲突)-->
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
</dependencies>

使用 dependencyManagement 可以统一声明依赖版本,进行集中管理,避免依赖冲突

2.distributionManagement

distributionManagement 的作用是"分发构件至远程仓库":

mvn install 会将项目生成的构件安装到本地 Maven 仓库,mvn deploy 用来将项目生成的构件分发到远程 Maven 仓库。本地 Maven 仓库的构件只能供当前用户使用,在分发到远程 Maven 仓库之后,所有能访问该仓库的用户都能使用你的构件。

我们需要配置 POM 的 distributionManagement 来指定 Maven 分发构件的位置。给出 Maven 部署当前项目的构件到远程库时,关于远程库的配置。

<distributionManagement>
    <repository>
        <id>随便起</id>
        <url>你自己maven环境下setting文件里面的私有库</url>
    </repository>
    <snapshotRepository>
        <id>随便起t</id>
        <url>你自己maven环境下setting文件里面的快照库</url>
    </snapshotRepository>
</distributionManagement>

3.使用总结

  • modules 中的 module 标签顺序,随意放置就好,不用按照子模块依赖顺序来设置,maven 会自动按照依赖顺序为你打包
  • modules 中的 module 标签作用:modules 只能在模块的打包方式是 pom 的时候才能使用,比如 packaging 设置为 pom,modeule 标签中的名称是其他模块 artifactId 名称,无论该模块是否打包方式为 pom 模块的子模块,都是可以的;在对父模块进行 mvn clean install 的时候,所有在 module 标签中的模块都会自动按照模块之间的依赖顺序进行 mvn clean install
  • 当我们从 maven 私服中下载子模块 jar 包的时候,该子模块 jar 包会去寻找用到的父模块 jar 包,主要目的是确定用到依赖的版本,所以我们把子模块 jar 包发布到 maven 仓库的时候,也一定要同步把父模块 jar 包发布到 maven 仓库,这样在下载子模块的时候才不会报错
  • 发布打包方式为 pom 的父模块到 maven 仓库的时候,我们可以删除父模块的 module 标签吗,我认为是可以的,因为 module 标签的作用在上面 2 中已经说明了,所以它只和打包方式为 pom 的模块进行 mvn clean install 的时候有关,也就是说只和开发的时候 mvn clean install 有关,和其他的地方没啥关系

Git 是一个开源的分布式版本控制系统,由 Linus Torvalds 创建,用于有效、高速地处理从小到大的项目版本管理。Git 是目前世界上最流行的版本控制系统之一,广泛应用于软件开发中。

以下是 Git 的一些核心概念和功能:

  1. 分布式版本控制:与集中式版本控制系统(如 SVN)不同,Git 允许每个开发者拥有完整的代码库副本,包括完整的历史记录。

  2. 分支(Branching):Git 支持快速创建和合并分支。分支是指向代码库中特定提交的可移动指针。

  3. 合并(Merging):合并是将两个或多个开发历史合并在一起的过程。

  4. 标签(Tagging):用于标记特定的提交,通常用于版本发布。

  5. 暂存区(Staging Area):也称为索引,是准备下一次提交的文件列表。

  6. 提交(Commit):保存项目历史和文件快照的记录。

  7. 远程仓库(Remote Repositories):可以是服务器上的仓库,用于与他人共享代码。

  8. 克隆(Cloning):从远程仓库复制代码库到本地。

  9. 拉取(Pull):从远程仓库拉取最新的代码并合并到本地。

  10. 推送(Push):将本地的提交推送到远程仓库。

  11. 拉取请求(Pull Requests):在分布式开发环境中,用于请求将你的更改合并到主分支。

  12. 分支策略:Git 支持多种分支策略,如 Git Flow、GitHub Flow 等。

  13. 钩子(Hooks):Git 允许在特定事件发生时执行脚本,如提交前、推送前等。

  14. 子模块(Submodules):允许将一个 Git 仓库作为另一个 Git 仓库的子目录。

  15. 工作流:Git 支持多种工作流,如集中式工作流、功能分支工作流等。

Git 的命令行工具非常强大,但同时也有图形用户界面(GUI)客户端,如 GitHub Desktop、SourceTree、GitKraken 等,使得非技术用户也能轻松使用 Git。

Git 通常与 GitHub、GitLab 或 Bitbucket 等在线托管服务一起使用,这些服务提供了额外的功能,如代码审查、持续集成/持续部署(CI/CD)、项目管理工具等。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。