maven项目中setting.xml文件的格式内容

问题现象:

在写对外接口的时候,出现一个异常现象。bean加载抛出空指针。开始的时候,
不知道异常从哪里抛出。现有的代码是没有的。后来发现出现在第三方类中,决定使用debug调试。发现把依赖包的源码下载下来以后,可以很方便的进入到依赖的jar包中进行debug,发现对源码的debug是一个阅读源码很方便的方式。

【回答】是有关系的,如果setting.xml中不做任何的配置,默认会去指定的maven中央仓库获取jar包和源代码。但是如果在setting.xml中配置了私服地址,会根据地址登录私服获取,由于公司的私服是内网,切换到外围链接不上,肯定是下载不了源码的。

这里写图片描述

setting.xml 文件中内容:


  <localRepository>/path/to/local/repo</localRepository>
  <interactiveMode>true</interactiveMode>
  <pluginGroups>
  </pluginGroups>



  <proxies>
    <proxy>
      <id>optional</id>
      <active>true</active>
      <protocol>http</protocol>
      <username>proxyuser</username>
      <password>proxypass</password>
      <host>proxy.host.net</host>
      <port>80</port>
      <nonProxyHosts>local.net|some.host.com</nonProxyHosts>
    </proxy>
  </proxies>

  <servers>
    <server>
        <id>nexus-releases</id>
        <username>paic_deploy</username>
        <password>paic_deploy_123</password>
    </server>
    <server>
        <id>nexus-snapshots</id>
        <username>paic_deploy</username>
        <password>paic_deploy_123</password>
    </server>
  </servers>


  <mirrors>
    <mirror>
      <id>nexus</id>
      <mirrorOf>central</mirrorOf>
      <name>Pingan Nexus Repository</name>
      <url>http://maven.paic.com.cn/repository/maven-public</url>
    </mirror>
  </mirrors>

  <profiles>
  </profiles>

<servers></servers>


servers 指登录远程服务器的基本信息,配置了 username 和 password。注意: nexus-releases 是发布版本,nexus-snapshots是快照版本。(镜像仓库中怎么出现了发布版本和快照版本,区别在哪里? 使用场景是什么?)

  <mirrors>
    <mirror>
      <id>nexus</id>
      <mirrorOf>central</mirrorOf>
      <name>Pingan Nexus Repository</name>
      <url>http://maven.paic.com.cn/repository/maven-public</url>
    </mirror>
  </mirrors>

镜像仓库用于定义一系列的远程仓库的镜像。我们可以在pom中定义一个下载工件的时候所使用的远程仓库。但是有时候这个远程仓库会比较忙,所以这个时候人们就想着给它创建镜像以缓解远程仓库的压力,也就是说会把对远程仓库的请求转换到对其镜像地址的请求。每个远程仓库都会有一个id,这样我们就可以创建自己的mirror来关联到该仓库,那么以后需要从远程仓库下载工件的时候Maven就可以从我们定义好的mirror站点来下载,这可以很好的缓解我们远程仓库的压力。在我们定义的mirror中每个远程仓库都只能有一个mirror与它关联,也就是说你不能同时配置多个mirror的mirrorOf指向同一个repositoryId。

maven 的 基本知识

本地仓库 :

在每个开发者本地的一个仓库,在setting.xml文件中配置的路径。第一次运行maven的时候,会在本地创建一个仓库,并且直接把远程的jar包下载到本地。下次配置的时候,如果本地存在jar包,就直接从本地获取。

远程仓库 :

maven工程中,只有本地仓库和远程仓库之说。一个普通只能有一个本地仓库,但是可以配置多个远程仓库。

中央仓库 :

中央仓库属于远程仓库中的一种,是maven核心自带的远程仓库。它包含了大部分的开源构件,在默认配置下,当本地仓库没有maven需要的构建时候,它就会尝试从远程的中央仓库下载。

私服 :

私服是特殊的一种远程仓库,为了节省时间和带宽。在局域网内假设的一个私有的仓库服务器,用来代理所有外部的远程仓库。内部的项目或者jar包,还能部署到私服上供其他的项目下载。 也可以降低中央仓库的负荷。

其它公共库

除了中央库和私服,还有很多其他的远程仓库,常见的有java.net.maven 库 和 JBoss Maven 库等。

这里写图片描述

maven中插件功能的实现

Maven引入本地包,这个包不存在远程仓库中
<dependency>
        <groupId>com.pingan.UnionSM2</groupId>
        <artifactId>UnionSM2</artifactId>
        <version>1.0.0</version>
        <scope>system</scope>
        <systemPath>${project.baseddir}/lib/UnionSM2.jar</systemPath>                                            
</dependency>

其中 scope 是用来限制依赖的作用范围,如果配置scope为system表示以外部jar包的形式来引入这个jar,maven不会到内部仓库中去查找它的存在。
systemPath 这个标签表示外部jar包的路径。${project.baseddir}表示所在工程的根目录。一般在工程下创建一个lib包,然后把依赖jar放入在lib包中。
这样就可以maven引入本地包了。

Maven 的 `settings.xml` 文件是用来配置 Maven 的全局设置和本地仓库等信息的,它位于 Maven 安装目录下的 `conf` 目录中。 下面是一个简单的 `settings.xml` 文件示例: ```xml <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd"> <localRepository>/path/to/local/repo</localRepository> <mirrors> <mirror> <id>aliyun</id> <mirrorOf>*</mirrorOf> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> </mirror> </mirrors> <profiles> <profile> <id>dev</id> <activation> <activeByDefault>true</activeByDefault> </activation> <properties> <env>dev</env> </properties> <repositories> <repository> <id>central</id> <url>https://repo.maven.apache.org/maven2</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>false</enabled> </snapshots> </repository> </repositories> </profile> <profile> <id>prod</id> <properties> <env>prod</env> </properties> <repositories> <repository> <id>central</id> <url>https://repo.maven.apache.org/maven2</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>false</enabled> </snapshots> </repository> </repositories> </profile> </profiles> <activeProfiles> <activeProfile>dev</activeProfile> </activeProfiles> </settings> ``` 上述示例中,`<localRepository>` 指定了本地 Maven 仓库的路径,`<mirrors>` 配置了阿里云的镜像,`<profiles>` 配置了两个环境的配置信息,`<activeProfiles>` 指定了当前使用的环境。 需要注意的是,`settings.xml` 文件中的配置是全局生效的,如果有多个项目使用同一份配置文件,那么它们都会受到该文件中的配置影响。如果需要针对某个项目单独配置,可以在项目的 `pom.xml` 文件中添加相应的配置。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值