深入讲解Java Maven配置

 更新时间:2021年10月12日 11:31:24   作者:fg714593653  
这篇文章主要介绍了Maven的安装配置详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

由于maven 使用上手很容易所以很多时候可以囫囵吞枣能够使用就可以了,由于作者最近在做的持续集成的代码扫描的时候,发现私有云里面大型工程maven依赖,如果没有弄清楚里面的配置复杂的项目很难在私有环境里面正常的编译过。下面作者根据自己的经验谈谈常用的配置的作用到底是什么。

首先说明maven配置都是那些配置

1. pom.xml 配置

pom.xml 配置主要分为两类,一类是用于配置自己的实际依赖, 二类仅仅用于声明一些版本和仓库便于版本管理和发布。

在我们java工程里面有一个pom.xml 这里面主要配置工程的依赖库,pom配置是可以被继承的,如果是父级依赖一般是做版本控制以及指定私有仓库的。如下图: 下图主要是展示父pom 主要作用是版本控制以及私有仓库指定。

重点来了:

上图repository的id的作用是啥(作者当时很是迷惑,可以乱写那要id干啥),这个id实际会和maven settings.xml 的配置文件里面的mirrors 配置有关。

2. maven 的settings.xml

下面重点讲一下settings的配置

如图settings 主要有mirrors servers 和profiles 三部分组成。

a. mirrors

mirrors 主要作用是一个镜像代理,便于内外网厂库切换,或者单独配置内网使用。

如果pom中的repository的id能和mirrorOf的值关联上,那么url以mirror的为准,否则以repository中自己的url为准。

<mirror>
      <id>test-nexus</id>
      <mirrorOf>*</mirrorOf>
      <name>sugon local repository</name>
      <url>http://172.22.5.34:9996/repository/sugoncloud-public/</url>
    </mirror>

mirrorof 有三种值:

* 代表 所有仓库请求都走这个配置的镜像代理。

central 默认是maven 的仓库,如果其它镜像访问不到(这里是服务访问不到而不是没有依赖包)。

其它: 比如test 、native-repo 这些关联的是pom里面配置的私有仓库id。

b. servers

servers 里面的配置 如下:

<server>
      <id>nexus-releases</id>  
      <username>deployment</username>  
      <password>deployment123</password>  
    </server>

这个配置的作用是它关联pom里面配置私有仓库的id, 在推送依赖包的使用根据id作认证的。

c. profiles

profiles 主要是配置全局私用仓库。就不详解了,和pom类似配置如下:

 <profile>
      <id>nexus-aliyun</id>
      <repositories>
        <repository>
          <id>public</id>
          <name>Public Repositories</name>
          <url>http://maven.aliyun.com/nexus/content/groups/public</url>
          <snapshots>
            <enabled>true</enabled>
          </snapshots>
          <releases>
            <enabled>true</enabled>
          </releases>
        </repository>
		</repositories>
      <pluginRepositories>
        <pluginRepository>
          <id>public</id>
          <name>Public Repositories</name>
          <url>http://maven.aliyun.com/nexus/content/groups/public</url>
          <snapshots>
            <enabled>true</enabled>
          </snapshots>
          <releases>
            <enabled>true</enabled>
          </releases>          
        </pluginRepository>
      </pluginRepositories>
    </profile>

补充一个最重要的: 由于上文说到的父pom(版本控制) 子工程依赖就是依赖的父pom文件而不是jar包 如果只配置mirrors 是不能拉取父pom文件的,如果需要拉取父pom文件那么需要配置repository。

最后敬上参考地址:

Maven settings.xml中私有仓库配置浅析 - 简书

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注脚本之家的更多内容!

相关文章

  • java中JSONObject转换为HashMap(方法+main方法调用实例)

    java中JSONObject转换为HashMap(方法+main方法调用实例)

    这篇文章主要介绍了java中JSONObject转换为HashMap(方法+main方法调用实例),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11
  • maven项目打包上传到私有仓库

    maven项目打包上传到私有仓库

    在项目开发中通常会引用其他的jar,怎样把自己的项目做为一个jar包的形式发布到私服仓库中,本文就详细的介绍一下,感兴趣的可以了解一下
    2021-06-06
  • IDEA报错:java 找不到符号图文解决过程

    IDEA报错:java 找不到符号图文解决过程

    这篇文章主要给大家介绍了关于IDEA报错:java 找不到符号解决的相关资料,运行项目时Idea报错,提示找不到符号,但是这个类在项目里是存在的,网上找了很多文章都没解决,浪费了一个下午终于弄好了,记录一下,需要的朋友可以参考下
    2023-08-08
  • SpringBoot源码之Bean的生命周期

    SpringBoot源码之Bean的生命周期

    spring的bean的生命周期主要是创建bean的过程,一个bean的生命周期主要是4个步骤,实例化,属性注入,初始化,销毁,本文详细介绍了bean的生命周期,感兴趣的小伙伴可以参考阅读
    2023-04-04
  • IDEA搭建Maven模块化项目的实现

    IDEA搭建Maven模块化项目的实现

    本文主要介绍了IDEA搭建Maven模块化项目的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-05-05
  • java中char类型转换成int类型的2种方法

    java中char类型转换成int类型的2种方法

    这篇文章主要给大家介绍了关于java中char类型转换成int类型的2种方法,因为java是一门强类型语言,所以在数据运算中会存在类型转换,需要的朋友可以参考下
    2023-07-07
  • 流式图表拒绝增删改查之kafka核心消费逻辑下篇

    流式图表拒绝增删改查之kafka核心消费逻辑下篇

    这篇文章主要为大家介绍了流式图表拒绝增删改查之kafka核心消费逻辑讲解的下篇,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-04-04
  • spring boot中使用RabbitMQ routing路由详解

    spring boot中使用RabbitMQ routing路由详解

    本篇文章主要介绍了spring boot中使用RabbitMQ routing路由详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-03-03
  • scala+redis实现分布式锁的示例代码

    scala+redis实现分布式锁的示例代码

    这篇文章主要介绍了scala+redis实现分布式锁的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-06-06
  • 由浅到深带你详谈Java实现数组扩容的三种方式

    由浅到深带你详谈Java实现数组扩容的三种方式

    这篇文章主要详细介绍了Java实现数组扩容的三种方式,新建一个数组,把原来数组的内容搬到新数组中,使用system.arraycopy(),使用java.util.Arrays.copyOf()这三种方式,具有一定的参考价值,需要的朋友可以借鉴一下
    2023-06-06

最新评论