maven profile介绍

maven学习笔记(五)maven全局配置文件settings.xml详解 目录 setting文件简介 settings.xml的作用 settings.xml文件位置 配置的优先级 settings.xml元素详解 顶级元素概览 LocalRepository InteractiveMode UsePluginRegistry Offline PluginGroups Servers Mirrors Proxies Profiles Activation properties Repositories pluginRepositories 阅读详情

4       profile介绍

4.1     profile简介

profile可以让我们定义一系列的配置信息,然后指定其激活条件。这样我们就可以定义多个profile,然后每个profile对应不同的激活条件和配置信息,从而达到不同环境使用不同配置信息的效果。比如说,我们可以通过profile定义在jdk1.5以上使用一套配置信息,在jdk1.5以下使用另外一套配置信息;或者有时候我们可以通过操作系统的不同来使用不同的配置信息,比如windows下是一套信息,linux下又是另外一套信息,等等。具体的激活条件有哪些我在后文会讲到。

4.2     profile的定义位置

对于使用Maven3,我们可以有多个地方定义profile。定义的地方不同,它的作用范围也不同。

(1)    针对于特定项目的profile配置我们可以定义在该项目的pom.xml中。

(2)    针对于特定用户的profile配置,我们可以在用户的settings.xml文件中定义profile。该文件在用户家目录下的“.m2”目录下。

(3)    全局的profile配置。全局的profile是定义在Maven安装目录下的“conf/settings.xml”文件中的。

4.3     profile中能定义的信息

profile中能够定义的配置信息跟profile所处的位置是相关的。以下就分两种情况来讨论,一种是定义在settings.xml中,另一种是定义在pom.xml中。

4.3.1  profile定义在settings.xml中

当profile定义在settings.xml中时意味着该profile是全局的,它会对所有项目或者某一用户的所有项目都产生作用。因为它是全局的,所以在settings.xml中只能定义一些相对而言范围宽泛一点的配置信息,比如远程仓库等。而一些比较细致一点的需要根据项目的不同来定义的就需要定义在项目的pom.xml中。具体而言,能够定义在settings.xml中的信息有<repositories>、<pluginRepositories>和<properties>。定义在<properties>里面的键值对可以在pom.xml中使用。

4.3.2  profile定义在pom.xml中

定义在pom.xml中的profile可以定义更多的信息。主要有以下这些:

l  <repositories>

l  <pluginRepositories>

l  <dependencies>

l  <plugins>

l  <properties>

l  <dependencyManagement>

l  <distributionManagement>

l  还有build元素下面的子元素,主要包括:

<defaultGoal>

<resources>

<testResources>

<finalName>

4.4     profile的激活方式

Maven给我们提供了多种不同的profile激活方式。比如我们可以使用-P参数显示的激活一个profile,也可以根据环境条件的设置让它自动激活等。下面将对它们一一进行介绍:

4.4.1  使用activeByDefault设置激活

先看下面一个配置

Xml代码  收藏代码
  1. <profiles>  
  2.         <profile>  
  3.              <id>profileTest1</id>  
  4.              <properties>  
  5.                     <hello>world</hello>  
  6.              </properties>  
  7.              <activation>  
  8.                     <activeByDefault>true</activeByDefault>  
  9.              </activation>  
  10.         </profile>  
  11.           
  12.         <profile>  
  13.              <id>profileTest2</id>  
  14.              <properties>  
  15.                     <hello>andy</hello>  
  16.              </properties>  
  17.         </profile>  
  18.  </profiles>  

 

        我们可以在profile中的activation元素中指定激活条件,当没有指定条件,然后指定activeByDefault为true的时候就表示当没有指定其他profile为激活状态时,该profile就默认会被激活。所以当我们调用mvn package的时候上面的profileTest1将会被激活,但是当我们使用mvn package –P profileTest2的时候将激活profileTest2,而这个时候profileTest1将不会被激活。

4.4.2  在settings.xml中使用activeProfiles指定处于激活状态的profile

我们可以在settings.xml中使用activeProfiles来指定需要激活的profile,这种方式激活的profile将所有情况下都处于激活状态。比如现在我们定义了如下两个profile

Xml代码  收藏代码
  1. <profiles>  
  2.        <profile>  
  3.             <id>profileTest1</id>  
  4.             <properties>  
  5.                    <hello>world</hello>  
  6.             </properties>  
  7.        </profile>  
  8.          
  9.        <profile>  
  10.             <id>profileTest2</id>  
  11.             <properties>  
  12.                    <hello>andy</hello>  
  13.             </properties>  
  14.        </profile>  
  15. </profiles>  

 

       这里的profile可以是定义在settings.xml中的,也可以是定义在pom.xml中的。这个时候如果我们需要指定profileTest1为激活状态,那么我们就可以在settings.xml中定义activeProfiles,具体定义如下:

Xml代码  收藏代码
  1. <activeProfiles>  
  2.      <activeProfile>profileTest1</activeProfile>  
  3. </activeProfiles>  

 

       考虑这样一种情况,我们在activeProfiles下同时定义了多个需要激活的profile。这里还拿上面的profile定义来举例,我们定义了同时激活profileTest1和profileTest2。

Xml代码  收藏代码
  1. <activeProfiles>  
  2.      <activeProfile>profileTest1</activeProfile>  
  3.      <activeProfile>profileTest2</activeProfile>  
  4. </activeProfiles>  

 

       从profileTest1和profileTest2我们可以看出它们共同定义了属性hello。那么这个时候我在pom.xml中使用属性hello的时候,它到底取的哪个值呢?是根据activeProfile定义的顺序,后面的覆盖前面的吗?根据我的测试,答案是非也,它是根据profile定义的先后顺序来进行覆盖取值的,然后后面定义的会覆盖前面定义的。

4.4.3  使用-P参数显示的激活一个profile

假设我们现在有如下定义的profiles

Xml代码  收藏代码
  1. <profiles>  
  2.        <profile>  
  3.               <id>profileTest1</id>  
  4.               <properties>  
  5.                      <hello>world</hello>  
  6.               </properties>  
  7.        </profile>  
  8.        <profile>  
  9.               <id>profileTest2</id>  
  10.               <properties>  
  11.                      <hello>andy</hello>  
  12.               </properties>  
  13.        </profile>  
  14. <profiles>  

 

       那么当我们在进行Maven操作时就可以使用-P参数显示的指定当前激活的是哪一个profile了。比如我们需要在对项目进行打包的时候使用id为profileTest1的profile,我们就可以这样做:

Cmd代码  收藏代码
  1. mvn package –P profileTest1  

 

       当我们使用activeByDefault或settings.xml中定义了处于激活的profile,但是当我们在进行某些操作的时候又不想它处于激活状态,这个时候我们可以这样做:

Cmd代码  收藏代码
  1. Mvn package –P !profileTest1  

 

       这里假设profileTest1是在settings.xml中使用activeProfile标记的处于激活状态的profile,那么当我们使用“-P !profile”的时候就表示在当前操作中该profile将不处于激活状态。

4.4.4根据环境来激活profile

profile一个非常重要的特性就是它可以根据不同的环境来激活,比如说根据操作系统的不同激活不同的profile,也可以根据jdk版本的不同激活不同的profile,等等。

4.4.4.1根据jdk来激活profile
Xml代码  收藏代码
  1. <profiles>  
  2.        <profile>  
  3.               <id>profileTest1</id>  
  4.               <jdk>1.5</jdk>  
  5.        </profile>  
  6. <profiles>  

 

       上面情况表示在jdk为1.5版本系列的时候激活profileTest1。

Xml代码  收藏代码
  1. <profiles>  
  2.        <profile>  
  3.               <id>profileTest1</id>  
  4.               <jdk>[1.4,1.7)</jdk>  
  5.        </profile>  
  6. <profiles>  

 

       上面的情况表示在jdk为1.4、1.5和1.6的时候激活profileTest1。

4.4.4.2根据操作系统来激活profile
Xml代码  收藏代码
  1. <profiles>  
  2.        <profile>  
  3.             <id>profileTest1</id>  
  4.             <activation>  
  5.               <os>  
  6.                    <name>Windows XP</name>  
  7.                    <family>Windows</family>  
  8.                    <arch>x86</arch>  
  9.                    <version>5.1.2600</version>  
  10.               </os>  
  11.             </activation>  
  12.        </profile>  
  13. </profiles>  

 

       上面的情况就是根据操作系统的类型来激活profileTest1。

4.4.4.3根据系统属性来激活profile
Xml代码  收藏代码
  1. <profiles>  
  2.        <profile>  
  3.             <id>profileTest1</id>  
  4.             <activation>  
  5.               <property>  
  6.                    <name>hello</name>  
  7.                    <value>world</value>  
  8.               </property>  
  9.             </activation>  
  10.        </profile>  
  11. </profiles>  

 

上面的profileTest1将在提供了系统属性hello,并且其值为world的时候激活。下面的做法可以激活profileTest1。

Cmd代码  收藏代码
  1. mvn package –Dhello=world  

 

       当是下面的这种定义形式时,profileTest1将在指定了系统属性hello,且其值为任意值的时候被激活。

Xml代码  收藏代码
  1. <profiles>  
  2.        <profile>  
  3.             <id>profileTest1</id>  
  4.             <activation>  
  5.               <property>  
  6.                    <name>hello</name>  
  7.               </property>  
  8.             </activation>  
  9.        </profile>  
  10. </profiles>  

 

4.4.4.4根据文件是否存在激活profile
Xml代码  收藏代码
  1. <profiles>  
  2.        <profile>  
  3.             <id>profileTest1</id>  
  4.             <activation>  
  5.               <file>  
  6.                    <exists>target</exists>  
  7.               </file>  
  8.             </activation>  
  9.        </profile>  
  10. </profiles>  

 

上面的定义表示当存在target文件时激活profileTest1。

Xml代码  收藏代码
  1. <profiles>  
  2.        <profile>  
  3.             <id>profileTest1</id>  
  4.             <activation>  
  5.               <file>  
  6.                    <missing>target</missing>  
  7.               </file>  
  8.             </activation>  
  9.        </profile>  
  10. </profiles>  

 

       上面的定义表示当不存在target文件时激活profileTest1。

4.5     查看当前处于激活状态的profile

我们可以同时定义多个profile,那么在建立项目的过程中,到底激活的是哪一个profile呢?Maven为我们提供了一个指令可以查看当前处于激活状态的profile都有哪些,这个指定就是mvn help:active-profiles。

现在假设我们的settings.xml文件中有如下profile的定义:

Xml代码  收藏代码
  1. <profiles>  
  2.        <profile>  
  3.             <id>profileTest1</id>  
  4.             <activation>  
  5.               <file>  
  6.                    <missing>target</missing>  
  7.               </file>  
  8.             </activation>  
  9.        </profile>  
  10. </profiles>  
  11.   
  12. <activeProfiles>  
  13.      <activeProfile>profileTest1</activeProfile>  
  14. </activeProfiles>  

 

       这个时候我们可以看到,我们已经定义了profileTest1始终为激活状态,这个时候我们使用mvn help:active-profiles查看处于激活状态的profile时,就会打印出如下内容:




Windows Terminal 初探(一):Settings 里面的 profiles.json 该怎么配置 一、引言 我一直都在寻找,优秀的 ssh 工具在哪里。在我的心中,一款优秀的 ssh 工具应该既好看又强大,还要界面清爽简洁,最后还一定要免费。我从 XShell 找到 MobaXterm,因为他们的收费(使用破解版都是有心理负担的)而放弃;从 Putty 找到最后的真爱 FinalShell,这是一款真正的国人写的能够满足基本工作需要的 ssh 工具。不过 FinalShell 的缺点就是内存泄... 阅读详情

相关推荐

Maven 详细配置:Maven settings 配置文件的详细说明

Maven settings 配置文件是 Maven 环境的重要组成部分,它用于定义用户特定的配置信息和全局设置,例如本地仓库路径、远程仓库镜像、代理服务器以及认证信息等。settings 文件分为全局配置文件(settings.xml)和用户配置文件(用户目录下的 .m2/settings.xml),它们分别影响 Maven 的全局行为和当前用户的个性化配置。通过合理配置 settings 文件,开发者可以优化构建性能、提升依赖解析效率,并满足企业开发环境中的特殊需求。本篇内容将深入解析 settings

栗筝i的博客 9239

Maven简介(三)——profile介绍

Maven简介(三)——profile介绍 博客分类:  maven mavenprofile激活active  4       profile介绍 4.1     profile简介 profile可以让我们定义一系列的配置信息,然后指定其激活条件。这样我们就可以定义多个profile,然后每个profile对应不同的激活条件和配置信息,从而达到不同环境使用不同配置信

Stroller 6671

【HCIP-AI 进阶之路(一)】零成本白嫖算力,7天速通华为人工智能资深开发者认证

《HCIP-AIEIDeveloper认证备考指南》摘要:本文深度解析华为HCIP-AI(H13-331)认证考试要点,涵盖考试大纲、评分标准及备考策略。重点剖析昇腾AI全栈架构,包括达芬奇架构核心计算单元(Cube/Vector/Scalar Unit)和四大层级关系(芯片-CANN-框架-应用)。针对无硬件资源的开发者,提供MindSpore CPU版、ModelArts免费算力和沙箱实验室三种零成本实践方案。文章强调该认证对国企/华为生态企业求职者的价值,并指出多选题是主要失分点。下篇将聚焦计算机视觉

2301_82049134的博客 1187

Maven的profiles多环境配置

一个项目通常都会有多个不同的运行环境,例如开发环境,测试环境、生产环境等。而不同环境的构建过程很可能是不同的,例如数据源配置、插件、以及依赖的版本等。每次将项目部署到不同的环境时,都需要修改相应的配置,这样重复的工作,不仅浪费劳动力,还容易出错。为了解决这一问题,Maven 引入了 Profile 的概念,通过它可以为不同的环境定制不同的构建过程。

t194978的博客 7981

Coze知识库搭建:智能化管理与高效检索实践

知识管理系统是现代企业信息资产管理的核心基础设施,其核心原理是通过结构化存储和智能检索技术实现知识的快速流转。在技术实现上,基于NLP的语义理解引擎和知识图谱构建是关键,能够显著提升检索准确率和知识关联性。以Coze平台为例,其针对中文场景优化的分词算法和多模态处理能力,可有效解决技术文档管理中的术语识别和格式兼容问题。这类系统在开发团队知识沉淀、新员工培训等场景中价值显著,特别是当集成RBAC权限模型和自动化备份策略后,既能保障信息安全,又能实现持续的知识迭代。通过合理配置同义词扩展和权重调整,可使搜索命

weixin_29041195的博客 262

S32DS IDE调试技巧:如何用Attach功能高效定位汽车电子MCU的Bootloader问题

本文详细介绍了在汽车电子MCU开发中,如何利用S32DS IDE的Attach调试模式高效定位Bootloader与应用程序的协同问题。通过对比常规调试与Attach模式的本质差异,并深入讲解工程配置、镜像合并及实战调试流程,帮助开发者在不复位、不重新下载程序的前提下,实时分析系统状态,快速解决内存映射冲突、中断向量表重定向等疑难杂症。

weixin_29168393的博客 269

Maven-profile介绍

Maven-profile介绍1.1 profile简介1.2 profile的定义位置1.3 profile中能定义的信息1.3.1 profile定义在settings.xml中1.3.2 profile定义在pom.xml中 1.1 profile简介 profile可以让我们定义一系列的配置信息,然后指定其激活条件。这样我们就可以定义多个profile,然后每个profile对应不同的激活条件和配置信息,从而达到不同环境使用不同配置信息的效果。比如说,我们可以通过

m0_38015138的博客 344

毫米波雷达之CFAR 目标检测

恒虚警率(CFAR)算法是一种广泛应用于雷达目标检测的算法,其主要目 标是减少由于杂波与回波之间强度不对称而引起的误报,以确保相对恒定的虚警 率。如图 3.4(a)所示,表示由距离单元组成的一维数据。在待测单元 D 周围选 择若干个背景杂波功率的蓝色单元构成参考滑窗,称为参考单元;而待测单元 D 相邻的若干个不用于背景估计的单元则称为保护单元。当参考单元和保护单元的 维度从一维扩展到二维时,相应的 CFAR 检测由一维 CFAR 演变为二维 CFAR 以处理参考窗口,如图 3.4 (b)所示。

m0_56120826的博客 4922

Maven profile介绍

同一个项目,在不同的环境中部署可能需要不同的配置信息,典型的比如数据库的配置,在开发环境需要连接本地的数据库,测试环境需要连接测试环境的数据库,线上环境需要连接线上的数据库。要使一个项目不经过任何修改就在不同的环境写运行是基本不可能的。为了能让一个项目在不同的环境下方便地移植,Maven引入了profile的概念,profile能够在构建项目的时候修改pom文件的一个子集,或者添加一些额外的配置元素

物联网爱好者,持续分享电子DIY、物联网相关技术 1723

RISC-V详细介绍

文章目录写在前面什么是RISC-VRISC-V诞生的背景ISA霸权摩尔定律的穷途末路穷困潦倒的学者不断增长的指令数量RISC-V架构设计思想如何设计一个好的ISARISC-V之RV32I四个典型特点RISC-V之乘除法指令指令格式用乘法代替常数除法RISC-V之RV64RISC-V的特权架构机器模式监管者模式 写在前面 本文主要基于RISC-V中文手册,其中包括但不限于一些网络的资料。本文版权属于skywf,转载或借用请联系作者。 什么是RISC-V RISC-V(发音为“risk-five”)是一个基于

skywf的博客 3万+

ROS 2 + Astra Pro深度相机实战:5分钟搞定远程可视化与距离检测(附避坑指南)

本文提供了一份详尽的ROS 2与Astra Pro深度相机集成实战指南。通过5分钟快速部署,实现远程可视化与实时目标距离检测。文章涵盖驱动安装、SSH+X11远程调试、核心测距节点编写,并附有详细的避坑指南,帮助开发者高效构建机器人视觉感知系统。

weixin_29232507的博客 278

Maven Profile介绍

原文地址:juvenshun.iteye.com/blog/208714 http://blog.youkuaiyun.com/turkeyzhou/article/details/4894657

前端琅琊阁 1240

LayaBox CommandBuffer描边使用详细

项目需要使用LayaBox做一个给3D物体动态描边的一个功能,前前后后踩了一些坑算是把这个东西给做出来了把我改好的代码贴上,分享给大家。 (1)想要使用描边你的引擎版本必须 >=2.9.0 (2)你必须下载 Laya官方的BlurShader库才能使用这个功能,下载地址:https://github.com/layabox/layaair-demo/tree/master/h5/3d/ts/LayaAir3D_PostProcess/BlurShader 下载完之后把BlurShader放到自己项目的

小智队长 1735

maven2中profile的介绍与使用

<project> <modelVersion>4.0.0</modelVersion> <groupId>cc.mzone</groupId> <artifactId>myjar</ar...

chuteng3602的博客 388

解决开着代理情况下pip或魔搭下载失败

最近由于经常配环境导致,老是要来回切clash关掉代理,非常的不方便如下面的,魔搭模型下载失败如下面的,pip换源后下载失败。

风吹落叶的博客 2950

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

maven profile介绍

maven profile介绍

johnhuster的专栏 666

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

maven中profile的介绍与使用

 使用maven管理项目有一个好处是就是可以针对不同的环境使用不同的编译打包设置,方便了多环境下的打包部署,一般我们开发项目都会有至少开发环境和正式环境两个,针对这两个环境的配置信息也会有所不同,比如数据库的配置等。我们可以使用maven的profile定义来进行区分,比如我们在项目的pom文件中定义如下片段: &lt;project&gt; &lt;modelVe...

Mr.sun 497

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Maven(三)——profile介绍

4       profile介绍 4.1     profile简介 profile可以让我们定义一系列的配置信息,然后指定其激活条件。这样我们就可以定义多个profile,然后每个profile对应不同的激活条件和配置信息,从而达到不同环境使用不同配置信息的效果。比如说,我们可以通过profile定义在jdk1.5以上使用一套配置信息,在jdk1.5以下使用另外一套配置信息;或者有时候我们

总有刁民想害朕的博客 420

Maven简介——profile介绍

4       profile介绍 4.1     profile简介 profile可以让我们定义一系列的配置信息,然后指定其激活条件。这样我们就可以定义多个profile,然后每个profile对应不同的激活条件和配置信息,从而达到不同环境使用不同配置信息的效果。比如说,我们可以通过profile定义在jdk1.5以上使用一套配置信息,在jdk1.5以下使用另外一套配置信息;或者有时候我们

liran_04的专栏 299

Maven ——profile介绍

profile可以让我们定义一系列的配置信息,然后指定其激活条件。这样我们就可以定义多个profile,然后每个profile对应不同的激活条件和配置信息,从而达到不同环境使用不同配置信息的效果。比如说,我们可以通过profile定义在jdk1.5以上使用一套配置信息,在jdk1.5以下使用另外一套配置信息;或者有时候我们可以通过操作系统的不同来使用不同的配置信息,比如windows下是一套信息,

xwnxwn的专栏 288
上一篇: maven pom.xml 说明2
下一篇: java的锁机制
JIESA
博客等级 码龄16年 212粉丝 64原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值