深入讲解Java Maven配置

作者:fg714593653 时间:2022-07-01 05:09:21 

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

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

1. pom.xml 配置

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

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

深入讲解Java Maven配置

深入讲解Java Maven配置

重点来了:

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

2. maven 的settings.xml

下面重点讲一下settings的配置

深入讲解Java Maven配置

如图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中私有仓库配置浅析 - 简书

来源:https://blog.csdn.net/u011240463/article/details/120649098

标签:Java,Maven,配置
0
投稿

猜你喜欢

  • java1.8安装及环境变量配置教程

    2023-04-29 10:36:49
  • Linux下执行java程序的方法

    2023-01-25 07:22:23
  • Spring Boot 整合JPA 数据模型关联使用操作(一对一、一对多、多对多)

    2022-11-18 23:14:29
  • springboot读取resources下文件的方式详解

    2022-05-21 16:14:48
  • Spring Boot自动注入的原理分析

    2023-03-29 04:19:44
  • 解决feign调用接口不稳定的问题

    2022-01-13 19:28:46
  • JAVA得到数组中最大值和最小值的简单实例

    2023-03-18 01:19:39
  • Dubbo retries 超时重试机制的问题原因分析及解决方案

    2023-11-29 08:22:38
  • List调用toString()方法后,去除两头的中括号实例

    2023-09-28 11:18:56
  • springboot中.yml文件参数的读取方式

    2021-06-20 00:57:51
  • Springmvc发送json数据转Java对象接收

    2023-07-07 16:26:16
  • 浅谈Java之Map 按值排序 (Map sort by value)

    2021-06-20 01:23:10
  • java实现简单石头剪刀布游戏

    2023-07-20 05:31:37
  • Java金额大小写的转换方法

    2023-08-23 00:26:11
  • Java 字符终端上获取输入三种的方式分享

    2021-12-31 04:52:45
  • java读写oracle的blob字段示例

    2023-12-22 16:19:00
  • JDBC实现学生管理系统

    2023-01-22 13:22:19
  • java开发线上事故理解RocketMQ异步精髓

    2023-07-25 07:41:20
  • Windows实现Flutter环境搭建及配置这一篇就够了

    2023-07-03 22:49:30
  • Java基础学习之ArrayList类概述与常用方法

    2023-03-13 02:15:24
  • asp之家 软件编程 m.aspxhome.com