【maven】通过profiles实现:怎样激活某个仓库、同时加载多个profile、不同环境加载不同依赖jar

文章目录

  • 一. 基本用法
  • 二. 仓库激活方式
    • 1. 使用activeProfile激活
    • 2. 使用-P参数激活
    • 3. 使用-P参数不激活
  • 三. 查看激活的仓库
  • 四. 不同环境依赖不同版本的jar

Maven中的profile是一组可选的配置,可以用来设置或者覆盖配置默认值。有了profile,你就可以为不同的环境定制构建。

一. 基本用法

profile可以在pom.xml中和maven的setting.xml文件中配置,如下:

<settings><profiles><profile><id>nexus</id><repositories><repository><id>my-repo</id><url>https://example.com/maven-repo</url></repository></repositories></profile></profiles><activeProfiles><activeProfile>nexus</activeProfile></activeProfiles>
</settings>

在上述示例中,我们定义了一个名为"my-profile"的profile,并在其中设置了一个名为"my-repo"的Maven仓库。该仓库的URL为"https://example.com/maven-repo"。
 

仓库激活:

通过将activeProfile元素设置为"my-profile",我们激活了这个profile,这意味着Maven会在解析和下载依赖项时搜索并使用该仓库。

 

二. 仓库激活方式

1. 使用activeProfile激活

如上,通过activeProfile标签进行激活,比如在使用idea进行项目打包时,会使用对应id的仓库进行依赖下载

  <activeProfiles><activeProfile>nexus</activeProfile></activeProfiles>

如下图:idea中也能看到我们添加和激活的profile,

当然我们可以激活多个profile,对于idea来说同时选中你想要的profile就行
在这里插入图片描述

 

2. 使用-P参数激活

可以通过使用-P参数显示的指定当前激活的profile。

同时也可以指定多个profile,profile之间用逗号隔开

mvn clean install -Pnexus
mvn clean install -P nexus
mvn clean install -Pnexus,rat

 

3. 使用-P参数不激活

当项目使用settings.xml中激活的profile,但是在某些场景下又不想它处于激活状态。

mvn clean install -P !rat

 

三. 查看激活的仓库

在某一个项目下执行,比如我在linkis这个项目的父级目录下执行

mvn help:active-profiles

得到如下结果

每个模块都会展示激活的profile,这里看到的是linkis-dist模块下激活的profile

。。。
Active Profiles for Project 'org.apache.linkis:linkis-dist:pom:1.3.2':The following profiles are active:- nexus (source: external)

 

四. 不同环境依赖不同版本的jar

通过profile可以解决,在项目开发中例如:生产环境依赖的hadoop版本是2.7.2U1,poc环境依赖的hadoop版本是官方的2.7.2版本。

<project ... ><properties><hadoop.version>1.0.0.RELEASE</hadoop.version></properties><dependencies><groupId>org.apache.hadoop</groupId><artifactId>hadoop-mapreduce-client-core</artifactId><version>2.7.2U1</version></dependencies><profiles><profile><id>test</id><properties><hadoop.version>2.7.2</hadoop.version></properties><!-- 激活这个profile 会额外加载这个插件><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-source-plugin</artifactId><version>2.2.1</version><executions><execution><phase>package</phase><goals><goal>jar-no-fork</goal></goals></execution></executions></plugin></plugins></profile></profiles>
</project>

 
 

注意:

如果你使用了镜像设置,Maven会首先尝试从镜像仓库下载依赖项。如果镜像仓库中没有所需的依赖项,则会根据配置的repositories元素查找其他仓库。
 
通过配置profiles和repositories元素,你可以根据项目的要求加载特定的仓库,并控制Maven从哪里获取依赖项。

 

参考:
https://blog.csdn.net/Mr_rain/article/details/100138017
chat-gpt3.5

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/63107.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Do not access Object.prototype method ‘hasOwnProperty‘ from target object

调用 hasOwnProperty 报错&#xff1a;不要使用对象原型上的方法&#xff0c;因为原型的方法可能会被重写 if (this.formData.selectFields.hasOwnProperty(selectField)) {delete this.formData.selectFields[selectField];} else {this.formData.selectFields[selectField] …

一文走进时序数据库性能测试工具 TSBS

一、背景 在物联网、车联网等时序数据场景中&#xff0c;数据的高速写入能力至关重要&#xff0c;会对产品方案的可用性、可靠性和扩展性产生影响。 以物联网为例&#xff0c;当面临千万甚至上亿设备、平均每个设备采集几十个到几百个指标时&#xff0c;每秒生成的数据将达到…

简单认识ELK日志分析系统

一. ELK日志分析系统概述 1.ELK 简介 ELK平台是一套完整的日志集中处理解决方案&#xff0c;将 ElasticSearch、Logstash 和 Kiabana 三个开源工具配合使用&#xff0c; 完成更强大的用户对日志的查询、排序、统计需求。 好处&#xff1a; &#xff08;1&#xff09;提高安全…

【观察者设计模式详解】C/Java/JS/Go/Python/TS不同语言实现

简介 观察者模式&#xff08;Observer Pattern&#xff09;是一种行为型模式。它定义对象间的一种一对多的依赖关系&#xff0c;当一个对象的状态发生改变时&#xff0c;所有依赖于它的对象都得到通知并被自动更新。 观察者模式使用三个类Subject、Observer和Client。Subject…

Go把Map转成对象

最近使用了Redis的Hash&#xff0c;把一个对象给存储到了hash里面&#xff0c;具体如下&#xff1a; 现在需要从RedisHash缓存里面把结果给取出来&#xff0c;同时赋值到一个对象上面 result, err : global.GVA_REDIS.HGetAll(context.Background(), key).Result() 问题是resul…

java实现文件的下载

系统日志的获取不可能每次都登录服务器&#xff0c;所以在页面上能够下载系统运行的日志是必须的 如何来实现日志的下载&#xff0c;这样的一个功能 前端我们用到的是window.open(...)这样可以发送一个get请求到后台 后台接收到get请求之后&#xff0c;如何实现对文件的下载 R…

(docker)mysql镜像拉取-创建容器-容器的使用【个人笔记】

【容器的第一次创建】 容器的第一次创建&#xff0c;需要先下载镜像&#xff0c;从 镜像拉取 0、可以搜索镜像的版本 docker search mysql1、先拉取MySQL的镜像&#xff0c;默认拉取最新版&#xff0c;使用下面的命令拉取mysql镜像 docker pull mysql也可以指定mysql的版本…

RCNA——单臂路由

一&#xff0c;实验背景 之前的VLAN实现的很多都是相同部门互相访问&#xff0c;不同部门无法访问。不过这次整来了一个路由器&#xff0c;领导说大部分的部门虽说有保密信息需要互相隔离&#xff0c;但是这些部门和其它部门也应该互相连通以方便工作交流。因此要配置新的环境&…

424. 替换后的最长重复字符

424. 替换后的最长重复字符 原题链接&#xff1a;完成情况&#xff1a;解题思路&#xff1a;参考代码&#xff1a; 原题链接&#xff1a; 424. 替换后的最长重复字符 https://leetcode.cn/problems/longest-repeating-character-replacement/description/ 完成情况&#xff…

SQL | 过滤数据

4-过滤数据 4.1-使用WHERE子句 数据根据 WHERE 子句中指定的搜索条件进行过滤。WHERE 子句在表名&#xff08; FROM 子句&#xff09;之后给出。 select prod_name,prod_price from products where prod_price 3.49; 上述语句查询价格为3.49的行&#xff0c;然后输出名字和…

TDesign中后台管理系统-用户登录

目录 1 创建用户表2 开发后端接口3 测试接口4 修改登录页面调用后端接口最终效果总结 中后台系统第一个要实现的功能就是登录了&#xff0c;我们通常的逻辑是让用户在登录页面输入用户名和密码&#xff0c;调用后端接口去验证用户的合法性&#xff0c;然后根据接口返回的结果进…

PE启动盘和U启动盘(第三十六课)

PE启动盘和U启动盘(第三十六课) 一 WindowsPE工具盘 1. 制作WinPE镜像光盘 双击WePE64_V2.2-是-点击右下角光盘图标-选择ISO的输出位置-立即生成ISO 2. 通过光盘启动WinPE