转载

Maven 构建项目时根据环境参数调整构建的过程 Profile

在开发过程中,我们的项目会存在不同的运行环境,比如开发环境、测试环境、生产环境,而我们的项目在不同的环境中,有的配置可能会不一样,比如数据源配置、日志文件配置、以及一些软件运行过程中的基本配置,那每次我们将软件部署到不同的环境时,都需要修改相应的配置文件,这样来回修改,很容易出错,而且浪费劳动力。

profile可以让我们定义一系列的配置信息,然后指定其激活条件。这样我们就可以定义多个profile,然后每个profile对应不同的激活条件和配置信息,从而达到不同环境使用不同配置信息的效果。

相同的工程设置,springboot也为我们提供了一种解决方案,而maven也提供了一种更加灵活的解决方案,就是profile功能。

SpringBoot 使用spring.profiles.active 来区分配置

一、示例

<profiles>
    <profile>
        <!-- 本地开发环境 -->
        <id>dev</id>
        <properties>
            <profiles.active>dev</profiles.active>
        </properties>
        <activation>
            <!-- 设置默认激活这个配置 -->
            <activeByDefault>true</activeByDefault>
        </activation>
    </profile>
    <profile>
        <!-- 发布环境 -->
        <id>release</id>
        <properties>
            <profiles.active>release</profiles.active>
        </properties>
    </profile>
</profiles>

这里定义了两个环境,分别是dev(开发环境)、release(发布环境),其中开发环境是默认激活的(activeByDefault为true),这样如果在不指定profile时默认是开发环境。

二、激活Profile的方式

2.1、使用-P参数显示激活一个profile

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

mvn package –Pdev

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

2.2、通过Activation 设置自动触发Profile的条件逻辑

1、默认的激活

设置默认激活这个配置:

<activeByDefault>true</activeByDefault>

2、通过jdk版本

<!--当jdk环境版本为1.5时,此profile被激活-->
<jdk>1.5</jdk>
<!--当jdk环境版本1.5或以上时,此profile被激活-->
<jdk>[1.5,)</jdk>

3、根据当前操作系统

<os>
    <name>Windows XP</name>
    <family>Windows</family>
    <arch>x86</arch>
    <version>5.1.2600</version>
</os>

4、通过系统环境变量,name-value自定义

<property>
    <name>env</name>
    <value>test</value>
</property>

5、通过文件的存在或缺失

<file>
    <missing>target/generated-sources/axistools/wsdl2java/
        com/companyname/group</missing>
    <exists/>
</file>

三、调整构建过程

3.1、修改properties

如示例所示,可以通过调整构建过程中的Properties,调整构建过程。

3.2、build

可以修改build 的配置,来调整打包的过程。如通过子元素resources 等修改配置文件。

原文  https://cn-blogs.cn/archives/8369.html
正文到此结束
Loading...