maven之Nexus的配置【pom.xml配置<repositories>】(五)

本文详细介绍了Nexus中的四种工厂类型:group、hosted、proxy和virtual,以及它们的功能区别。着重解释了如何配置从Nexus下载依赖包的过程,并通过实际案例演示配置效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Nexus里面的工厂有4种类别:


(1)group类型:把多个工厂类别加到一个工厂类别中


(2)hosted类型:hoseted类型工厂是服务于局域网的。当我们对项目执行mvn:deploy命令时,会把项目进行打包上传到hosted类型工厂(仓库)中。

这里稍微说明一下mvn:install和mvn:deploy命令的区别:mvn:install是把项目打包上传到本地仓库中,而mvn:deploy命令则是把项目打包上传到nexus的hosted对应的工厂(仓库)中。hoseted包含三个工厂:Snapshots、Releases、3rd party

Snapshots:比如有个A项目,版本是0.0.1-SNAPSHOTS:

<groupId>com.carlo</groupId>
  <artifactId>xxx_service</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>jar</packaging>
当对A项目执行mvn:deploy命令后,会把A项目打包成jar包,并上传到hoseted类型中的Snapshots工厂(仓库)中。


Releases:比如有个B项目,版本是0.0.1-RELEASES:

<groupId>com.carlo</groupId>
  <artifactId>xxx_core</artifactId>
  <version>0.0.1-RELEASES</version>
  <packaging>jar</packaging>
当对B项目执行mvn:deploy命令后,会把B项目打包成jar包,并上传到hoseted类型中的Releases工厂(仓库)中。


3rd party:一般情况下,我们都是去maven的中央仓库下载依赖包,但是maven中央仓库中可能不存在某些jar包。这个时候我们就要去这些jar包的官方网站进行下载。对于这些jar包,怎么给maven进行管理呢?hosted类型里提供了3rd party这个工厂(仓库)。当我们把这些jar包都上传到3rd party这个工厂后,在项目的pom.xml声明了jar包信息,就会自动的到这里来下载对应的依赖包啦。

同时,在nexus管理界面里,我们发现,只有3rd party才有Artifact Upload(上传jar包)的选项。我们来操作一下:



点击“Upload Artifact(s) ”,上传jar包到3rd party工厂(仓库)中。接着我们点击“Browse Storage”进行查看上传的jar包:



(3)proxy类型:当我们在项目的pom.xml声明了某个jar包的时候,会从本地仓库查找,如果没有,就会去局域网共享仓库(nexus)中找,再找不到的话,局域网共享仓库(nexus)就会和maven中央仓库打交道,从maven中央仓库中下载对应的jar包,会存放到proxy类型的Central工厂(仓库)里,然后再提交到用户本地仓库中。

proxy类型的工厂还包括:Apache Snapshots 和 Codehaus Snapshots,其中Apache Snapshots工厂专门来存放从apache下载下来的Snapshots版本的开发包;相同的, Codehaus Snapshots工厂专门来存放从Codehaus 下载下来的Snapshots版本的开发包。

(4)virtual类型:这种是maven1的,以后基本不会用到或者很少会用到,所以不用过多理会。


接下来我们来配置一下,怎么配置从nexus里下载依赖包。

通常情况下,我们会在项目的pom.xml里使用<repositories>标签来配置:


如上,每一个仓库都要配置一次,太麻烦了。在前面的内容中,我们有提到group类型的工厂,该类型的工厂包含了3rd party、Central、Relases、Snapshots这几个工厂,所以这里我们的配置可以简化为:



配置好了,我们来测试一下。看看是否是从nexus下载依赖到本次仓库(流程是:先从本地仓库找,本地仓库找不到,则去nexus的group类型工厂【即3rd party、Central、Relases、Snapshots这几个工厂】里查找,找不到的话,会去maven的中央仓库中下载到nexus中,然后把依赖提交到本地仓库)。

添加struts2-core依赖包到pom.xml中:

<dependency>
		<groupId>org.apache.struts</groupId>
		<artifactId>struts2-core</artifactId>
		<version>2.3.24.1</version>
	</dependency>


通过上图的比较,说明配置没问题,jar包都是先从maven中央仓库下载到nexus仓库中,然后再提交到本地仓库。


以上就是nexus的一些工厂类型介绍以及简单配置;接下来的文章里,会再进一步详细讲解nexus的配置问题。

<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.sqx</groupId> <artifactId>jiazheng</artifactId> <version>8.0.0</version> <packaging>jar</packaging> <description>jiazheng</description> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.6.11</version> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> <mybatisplus.version>3.2.0</mybatisplus.version> <mysql.version>8.0.17</mysql.version> <mssql.version>4.0</mssql.version> <oracle.version>11.2.0.3</oracle.version> <druid.version>1.1.13</druid.version> <quartz.version>2.3.0</quartz.version> <commons.lang.version>2.6</commons.lang.version> <commons.fileupload.version>1.2.2</commons.fileupload.version> <commons.io.version>2.5</commons.io.version> <commons.codec.version>1.10</commons.codec.version> <commons.configuration.version>1.10</commons.configuration.version> <shiro.version>1.10.1</shiro.version> <jwt.version>0.7.0</jwt.version> <kaptcha.version>0.0.9</kaptcha.version> <qiniu.version>7.2.23</qiniu.version> <aliyun.oss.version>3.4.0</aliyun.oss.version> <qcloud.cos.version>4.4</qcloud.cos.version> <swagger.version>2.7.0</swagger.version> <joda.time.version>2.9.9</joda.time.version> <gson.version>2.8.5</gson.version> <fastjson.version>1.2.83</fastjson.version> <hutool.version>4.1.1</hutool.version> <lombok.version>1.18.4</lombok.version> <!--wagon plugin 配置--> <!--<service-path>/work/sz</service-path> <pack-name>${project.artifactId}-${project.version}.jar</pack-name> <remote-addr>192.168.1.10:22</remote-addr> <remote-username>root</remote-username> <remote-passwd>123456</remote-passwd>--> </properties> <build> <finalName>${project.artifactId}</finalName> <extensions> <extension> <groupId>org.apache.maven.wagon</groupId> <artifactId>wagon-ssh</artifactId> <version>2.8</version> </extension> </extensions> </build> <repositories> <repository> <id>public</id> <name>aliyun nexus</name> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> <releases> <enabled>true</enabled> </releases> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>public</id> <name>aliyun nexus</name> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>false</enabled> </snapshots> </pluginRepository> </pluginRepositories> </project>除去多余功能,只剩websocket
03-09
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>me.zhengjie</groupId> <artifactId>eladmin</artifactId> <packaging>pom</packaging> <version>1.1</version> <modules> <module>eladmin-common</module> <module>eladmin-logging</module> <module>eladmin-system</module> <module>eladmin-tools</module> <module>eladmin-generator</module> <module>nat-project</module> </modules> <name>ELADMIN 后台管理</name> <url>https://eladmin.vip</url> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.7.18</version> </parent> <properties> <logback.version>1.2.9</logback.version> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> <fastjson2.version>2.0.54</fastjson2.version> <druid.version>1.2.19</druid.version> <commons-pool2.version>2.11.1</commons-pool2.version> </properties> <dependencies> <!--Spring boot Web容器--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <exclusions> <!-- 去掉Jackson依赖,用fastjson --> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-json</artifactId> </exclusion> </exclusions> </dependency> <!--Spring boot 测试--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <!--Spring boot 安全框架--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency> <!-- spring boot 验证 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-validation</artifactId> </dependency> <!-- spring boot 缓存 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-cache</artifactId> </dependency> <!--Spring boot Redis--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> <!--Spring boot redisson--> <dependency> <groupId>org.redisson</groupId> <artifactId>redisson-spring-boot-starter</artifactId> <version>3.17.1</version> </dependency> <!-- Spring boot websocket --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-websocket</artifactId> </dependency> <!-- mybatis --> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.5.3.1</version> </dependency> <!--spring boot 集成redis所需common-pool2--> <!-- https://mvnrepository.com/artifact/org.apache.commons/commons-pool2 --> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-pool2</artifactId> <version>${commons-pool2.version}</version> </dependency> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> </dependency> <!--监控sql日志--> <dependency> <groupId>p6spy</groupId> <artifactId>p6spy</artifactId> <version>3.9.1</version> </dependency> <!-- Swagger UI 相关 --> <dependency> <groupId>com.github.xiaoymin</groupId> <artifactId>knife4j-spring-boot-starter</artifactId> <version>3.0.3</version> <exclusions> <!-- 去掉 swagger-annotations 依赖,避免冲突 --> <exclusion> <groupId>io.swagger</groupId> <artifactId>swagger-annotations</artifactId> </exclusion> </exclusions> </dependency> <!-- 添加swagger-annotations依赖 --> <dependency> <groupId>io.swagger</groupId> <artifactId>swagger-annotations</artifactId> <version>1.5.22</version> </dependency> <!--Mysql依赖包--> <dependency> <groupId>com.mysql</groupId> <artifactId>mysql-connector-j</artifactId> <version>9.2.0</version> <scope>runtime</scope> </dependency> <!-- druid数据源驱动 --> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>${druid.version}</version> </dependency> <!-- IP地址解析库 --> <dependency> <groupId>net.dreamlu</groupId> <artifactId>mica-ip2region</artifactId> <version>2.7.18.9</version> </dependency> <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjrt</artifactId> <version>1.9.7</version> </dependency> <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjweaver</artifactId> <version>1.9.7</version> </dependency> <!--lombok插件--> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <!-- excel工具 --> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>5.4.0</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>5.4.0</version> </dependency> <dependency> <groupId>xerces</groupId> <artifactId>xercesImpl</artifactId> <version>2.12.2</version> </dependency> <!-- fastjson2 --> <dependency> <groupId>com.alibaba.fastjson2</groupId> <artifactId>fastjson2</artifactId> <version>${fastjson2.version}</version> </dependency> <dependency> <groupId>com.alibaba.fastjson2</groupId> <artifactId>fastjson2-extension-spring5</artifactId> <version>${fastjson2.version}</version> </dependency> <!-- Java图形验证码 --> <dependency> <groupId>com.github.whvcse</groupId> <artifactId>easy-captcha</artifactId> <version>1.6.2</version> </dependency> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-text</artifactId> <version>1.13.0</version> </dependency> </dependencies> <build> <plugins> <!-- 打包时跳过测试 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <configuration> <skip>true</skip> </configuration> </plugin> </plugins> </build> <repositories> <repository> <id>public</id> <name>aliyun nexus</name> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> <releases> <enabled>true</enabled> </releases> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>public</id> <name>aliyun nexus</name> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>false</enabled> </snapshots> </pluginRepository> </pluginRepositories> </project> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>me.zhengjie</groupId> <artifactId>nat-project</artifactId> <version>1.1</version> </parent> <artifactId>nat-project</artifactId> <name>Archetype - nat-project</name> <url>http://maven.apache.org</url> </project> 这是父子pom看一下
最新发布
07-12
当前pom文件: <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.example</groupId> <artifactId>udBatchProject</artifactId> <version>1.1-SNAPSHOT</version> <properties> <hadoop.scope>provided</hadoop.scope> <hadoop.version>2.7.3</hadoop.version> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <java.version>1.8</java.version> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion> <buildtype>release</buildtype> <encoding>UTF-8</encoding> <project.build.sourceEncoding>${encoding}</project.build.sourceEncoding> </properties> <dependencies> <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-mapreduce-client-common</artifactId> <version>${hadoop.version}</version> <scope>${hadoop.scope}</scope> </dependency> <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-mapreduce-client-jobclient</artifactId> <version>${hadoop.version}</version> <scope>${hadoop.scope}</scope> </dependency> <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-common</artifactId> <version>${hadoop.version}</version> <scope>${hadoop.scope}</scope> <exclusions> <exclusion> <groupId>com.sina</groupId> <artifactId>DRFA</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-auth</artifactId> <version>${hadoop.version}</version> <scope>${hadoop.scope}</scope> </dependency> <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-hdfs</artifactId> <version>${hadoop.version}</version> <scope>${hadoop.scope}</scope> </dependency> <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-yarn-client</artifactId> <version>${hadoop.version}</version> <scope>${hadoop.scope}</scope> </dependency> <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-yarn-api</artifactId> <version>${hadoop.version}</version> <scope>${hadoop.scope}</scope> <exclusions> <exclusion> <artifactId>jdk.tools</artifactId> <groupId>jdk.tools</groupId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-yarn-common</artifactId> <version>${hadoop.version}</version> <scope>${hadoop.scope}</scope> </dependency> <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-mapreduce-client-core</artifactId> <version>${hadoop.version}</version> <scope>${hadoop.scope}</scope> </dependency> <!-- <dependency>--> <!-- <groupId>com.sina.Armyknife</groupId>--> <!-- <artifactId>sina</artifactId>--> <!-- <version>0.5</version>--> <!-- <exclusions>--> <!-- <exclusion>--> <!-- <groupId>com.sina</groupId>--> <!-- <artifactId>DRFA</artifactId>--> <!-- </exclusion>--> <!-- </exclusions>--> <!-- </dependency>--> <dependency> <groupId>org.apache.hive</groupId> <artifactId>hive-exec</artifactId> <version>0.13.0</version> </dependency> <dependency> <groupId>com.googlecode.aviator</groupId> <artifactId>aviator</artifactId> <version>3.0.0</version> <scope>provided</scope> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.76</version> </dependency> <dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.8.9</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.13.1</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.29</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>5.3.15</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> <version>5.3.15</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>5.3.15</version> </dependency> </dependencies> <repositories> <repository> <id>thirdparty</id> <name>3rd party</name> <url>http://10.39.0.110:8081/nexus/content/repositories/thirdparty</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>false</enabled> </snapshots> </repository> <repository> <id>central</id> <name>Central</name> <url>http://10.39.0.110:8081/nexus/content/repositories/central</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>false</enabled> </snapshots> </repository> </repositories> <pluginRepositories> <pluginRepository> <releases> <updatePolicy>never</updatePolicy> </releases> <snapshots> <enabled>false</enabled> </snapshots> <id>public</id> <name>Public Repositories</name> <url>http://10.39.0.110:8081/nexus/content/groups/public/</url> </pluginRepository> </pluginRepositories> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-assembly-plugin</artifactId> <version>3.1.0</version> <configuration> <descriptorRefs> <descriptorRef>jar-with-dependencies</descriptorRef> </descriptorRefs> </configuration> <executions> <execution> <phase>package</phase> <goals> <goal>single</goal> </goals> </execution> </executions> </plugin> </plugins> </build> </project> 在引入依赖 import com.sina.hadoop.MultipleInputs;的时候报错
07-11
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值