Maven的一项技术及这项技术的现实意义

先声明一下,我觉得下面的技术在实践过程中并没有太大的意义,只是碰巧看到了,所以就整理一下。

如下,我们可以如下配置pom.xml文件:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83

<profiles>
    <!--部署环境-->
    <profile>
        <id>local</id>
        <!--local环境-->
        <build>
            <resources>
                <resource>
                    <directory>src/main/profiles/local</directory>
                    <!--引入properties文件地址-->
                </resource>
            </resources>
        </build>
        <properties>
            <profile.env>local</profile.env>
            <!--变量,标识环境-->
            <log.root.level>INFO</log.root.level>
            <log.logger.level>DEBUG</log.logger.level>
            <log.console.level>INFO</log.console.level>
        </properties>
    </profile>
    <profile>
        <id>development</id>
        <!--local环境-->
        <build>
            <resources>
                <resource>
                    <directory>src/main/profiles/development</directory>
                    <!--引入properties文件地址-->
                </resource>
            </resources>
        </build>
        <properties>
            <profile.env>development</profile.env>
            <!--变量,标识环境-->
            <log.root.level>INFO</log.root.level>
            <log.logger.level>DEBUG</log.logger.level>
            <log.console.level>INFO</log.console.level>
        </properties>
    </profile>
    <profile>
        <id>preview</id>
        <!--local环境-->
        <build>
            <resources>
                <resource>
                    <directory>src/main/profiles/preview</directory>
                    <!--引入properties文件地址-->
                </resource>
            </resources>
        </build>
        <properties>
            <profile.env>preview</profile.env>
            <!--变量,标识环境-->
            <log.root.level>INFO</log.root.level>
            <log.logger.level>DEBUG</log.logger.level>
            <log.console.level>INFO</log.console.level>
        </properties>
    </profile>
    <profile>
        <id>product</id>
        <!--生产部署环境-->
        <build>
            <resources>
                <resource>
                    <directory>src/main/profiles/production</directory>
                    <!--引入properties文件地址-->
                </resource>
            </resources>
        </build>
        <properties>
            <profile.env>product</profile.env>
            <!--product-->
            <log.root.level>INFO</log.root.level>
            <log.logger.level>DEBUG</log.logger.level>
            <log.console.level>INFO</log.console.level>
            <!--相关占位符变量配置,例如:xml中配置为${node.path},则pom进行如下配置-->
            <node.path>main.js</node.path>
        </properties>
    </profile>
</profiles>

这段配置出乎意料的是,我们可以在配置profile时,同时配置build和properties,从而来覆盖默认的配置。我为什么会觉得这项技术没有多大的意义呢,因为DevOPS中希望,一个软件制品可以通过不同的配置文件启动,从而达到不同的效果。使用上面的方式进行构建,我们的每个软件制品其实都是不一样的,所以就不可能实现通过不同的配置文件来启动同一个软件制品。

参考资料

  1. java引用pom中定义的变量解决方案