08灵活的构建

灵活的构建

如何在不同的环境下展现不同的构建特性?

Maven属性

Maven中的属性有:

  1. 内置属性:两个常用内置属性 ${basedir} 表示项目跟目录,即包含pom.xml文件的目录;${version} 表示项目版本
  2. POM属性:用户可以使用该类属性引用POM文件中对应元素的值。如${project.artifactId}就对应了 元素的值,常用的POM属性包括:
    • ${project.build.sourceDirectory}:项目的主源码目录,默认为src/main/java/
    • ${project.build.testSourceDirectory}:项目的测试源码目录,默认为src/test/java/
    • ${project.build.directory} : 项目构建输出目录,默认为target/
    • ${project.outputDirectory} : 项目主代码编译输出目录,默认为target/classes/
    • ${project.testOutputDirectory}:项目测试主代码输出目录,默认为target/testclasses/
    • ${project.groupId}:项目的groupId
    • ${project.artifactId}:项目的artifactId
    • ${project.version}:项目的version,与${version} 等价
    • ${project.build.finalName}:项目打包输出文件的名称,默认为${project.artifactId}-${project.version}
  3. 自定义属性:通过可以自定义一个或多个Maven属性,然后在POM的其他地方使用${properties}的方式引用该属性
  4. Settings属性:与POM属性同理,用户使用以settings. 开头的属性引用settings.xml文件中的XML元素的值。
  5. Java系统属性:所有java系统属性都可以用Maven属性引用,如${user.home}指向了用户目录。
  6. 环境变量属性:所有环境变量属性都可以使用以env. 开头的Maven属性引用,如${env.JAVA_HOME}指代了JAVA_HOME环境变量的的值。

构建不同环境的配置

  1. 开启资源过滤,让其他资源文件也可以解析Maven属性

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    <build>
    <!-- 替换配置文件中的数据项 start -->
    <resources>
    <resource>
    <directory>src/main/resources</directory>
    <filtering>true</filtering>
    </resource>
    </resources>
    <testResources>
    <testResource>
    <directory>src/test/resources</directory>
    <filtering>true</filtering>
    </testResource>
    </testResources>
    <!-- 替换配置文件中的数据项 end -->
    </build>
  2. 使用构建不同环境下的配置

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    <project>
    <profiles>
    <profile>
    <id>local</id>
    <activation>
    <activeByDefault>true</activeByDefault>
    </activation>
    <properties>
    <zoo.url>172.17.103.107:2181</zoo.url>
    <log.level>DEBUG</log.level>
    </properties>
    </profile>
    <profile>
    <id>dev</id>
    <activation>
    <activeByDefault>false</activeByDefault>
    </activation>
    <properties>
    <zoo.url>172.17.103.108:2181</zoo.url>
    <log.level>INFO</log.level>
    </properties>
    </profile>
    </profiles>
    </project>
  3. 在资源文件中使用配置信息:

    1
    2
    zoo.url=${zoo.url}
    log.level=${log.level}
  4. 指定环境进行构建:

    • 命令行:mvn clean install -Pdev
    • settings.xml文件:修改active-Profiles元素
  5. 指定条件激活环境

    • 指定系统属性存在

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      <profiles>
      <profile>
      ...
      <activation>
      <property>
      <name>profileProperty</name>
      </property>
      </activation>
      </profile>
      </profiles>
    • 指定系统属性等于某值

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      <profiles>
      <profile>
      ...
      <activation>
      <property>
      <name>profileProperty</name>
      <value>dev</value>
      </property>
      </activation>
      </profile>
      </profiles>
    • 指定操作系统

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      <profiles>
      <profile>
      <activation>
      <os>
      <name>Window XP</name>
      <family>Windows</family>
      <arch>x86</arch>
      <version>5.1.2600</version>
      </os>
      </activation>
      </profile>
      </profiles>
    • 指定文件存在

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      <profiles>
      <profile>
      <activation>
      <file>
      <missing>t1.properties</missing>
      <exists>t2.properties</exists>
      </file>
      </activation>
      </profile>
      </profiles>
    • 设置默认

      1
      2
      3
      4
      5
      6
      7
      <profiles>
      <profile>
      <activation>
      <activeByDefault>true</activeByDefault>
      </activation>
      </profile>
      </profiles>

profile的分类:

  1. pom.xml:pom.xml 中声明的 profile 只对当前项目有效。
  2. 用户 settings.xml:在用户目录下的“.m2/settings.xml”中的 profile,对本机上的该用户的所有 Maven 项目有效。
  3. 全局 settings.xml:在 Maven 安装目录下 conf/settings.xml 中配置的 profile,对本机上所有项目都有效。

本文标题:08灵活的构建

文章作者:Sun

发布时间:2020年01月16日 - 13:01

最后更新:2020年01月16日 - 16:01

原始链接:https://sunyi720.github.io/2020/01/16/Maven/08灵活的构建/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。