Maven学习(十四)profile标签

1.profile概述

①单词释义

profile有外形,侧面,方面等意思,这个我们可以去侧面这个含义对应一下。
在这里插入图片描述

②项目的不同运行环境

在这里插入图片描述
通常情况下,至少有三种运行环境:

  • 开发环境:供不同开发工程师开发的各个模块之间互相调用,访问;内部使用
  • 测试环境:供测试工程师对项目的各个模块之间进行功能测试,内部使用
  • 生产环境:供最终用户访问–所以这是最终的正式运行环境

而我们这里的环境只是一个笼统的叫法,实际工作中一套运行环境会包含很多服务器:

  • Mysql
  • Redis
  • ES

就拿Mysql来说,不同环境下的访问参数肯定完全不同
可是代码只有一套,如果在jdbc的配置文件中来回修改,肯定是不明智的,很容易出错。所以最好的办法就是把适用于不同环境的配置分别准备好,部署哪个环境就激活哪个配置。

在Mavven中,使用profile机制来管理不同环境的配置信息。Maven的profile理解一下即可。

②默认profile

即使我们在pom.xml中不配置profile标签,也已经用到了profile了。因为根标签project下所有标签都相当于设定默认的profile。project标签下除了 modelVersion和坐标系标签外,都可以配置到profile中

2.profile配置

①外部视角:配置文件

从外部视角来看,profile可以在两种配置文件中配置

  • settings.xml:全局生效。比如我们配置jdk1.8
  • pom.xml:当前pom生效

②内部实现:具体标签

从内部视角来看,配置profile有如下语法要求:

【1】profiles/profile标签

  • 由于profile天然代表众多可选配置中的一个,所以由复数形式的profiles标签统一管理
  • 由于profile标签覆盖了pom.xml中的默认配置,所以profiles标签通常是pom.xml中的最后一个标签。

【2】id标签

每个profile标签都必须有一个id标签,指定该profile的唯一标识。这个id标签的值会在命令行调用profile时被用到,这个命令格式是 : -D

【3】其他允许出现的标签

除了坐标啥的,基本都可以。

3.激活profile

①默认配置

前面提到的,在没有自己配置profile时,激活默认的profile

②基于环境信息激活

环境信息包含:JDK版本、操作系统参数,文件,属性等各个方面。一个profile一旦被激活,那么它定义的所有配置都会覆盖原来pom文件对应层次的元素。例如:

     <profile>
            <id>dev</id>
            <activation>
                <!--配置是否默认激活-->
                <activeByDefault>false</activeByDefault>
                <jdk>1.8</jdk>
                <os>
                    <name>Windows 10</name>
                    <family>Windows</family>
                    <arch>x64</arch>
                    <version>5.1.2600</version>
                </os>
                <property>
                    <name>mavenVersion</name>
                    <value>2.0.5</value>
                </property>
                <file>
                    <exists>file2.properties</exists>
                    <missing>file1.properties</missing>
                </file>
            </activation>
        </profile>

那么,多个激活条件之间是什么关系呢

  • Maven3.2.2之前:遇到第一个满足的条件即可激活,的关系
  • Maven3.2.2之后:各个条件均需满足,的关系

比如以上例子,第一个条件,在Jdk为1.8才会激活

③命令行激活

除了以上根据环境的自动激活,还可以根据命令行激活
列出所有激活的profile,以及他们在哪里定义

mvn help:active-profiles

指出某个具体的profile

mvn compile -P<profile id>

4.操作举例

假如我们创建 使用到lamda表达式的类:

public class LamadaTest {


    public static void main(String[] args) {


        new Thread(()->{

            System.out.println("hello");

        }).start();

    }
}

如果这时候我们创建一个profile使用jdk1.6,看是否能激活成功。

   <profiles>
        <profile>
            <id>myJDKProfile</id>
            <!--build标签:构建行为-->
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-compiler-plugin</artifactId>
                        <version>3.1</version>
                        <configuration>
                            <source>1.6</source>
                            <target>1.6</target>
                            <encoding>UTF-8</encoding>
                        </configuration>
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>

执行命令行 命令,激活该profile

mvn clean test -PmyJDKProfile

结果显示
在这里插入图片描述

5.资源属性过滤

①简介

Maven为了能够通过profile实现不同运行环境切换,提供了一种资源属性过滤的机制。通过属性替换实现不同环境下使用不同的参数

一般来讲,在项目中,我们也不会把特定的参数放到这里,所以演示略。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值