zoukankan      html  css  js  c++  java
  • maven 灵活构建

    灵活构建
      项目的构建根据不同的情况可能需要有一定的差异,比如编译级别、依赖、打包的属性文件等在不同的运行环境中可能需要有不同的值。为了实现灵活构建,Maven内置了三个特性:

    属性:在POM中通过${属性名称}引用构建时的属性值,从而达到灵活构建的目的,主要有六种属性,包括内置属性、POM属性、自定义属性、setting属性、Java系统属性、 环境变量属性。

    属性替换可以在pom.xml和资源文件中使用,在资源文件中使用时需要开启资源文件过滤pom.xml是默认开启的。可以使用的属性如下:

    1.   内置属性:如¥{basedir}表示项目根目录,¥{version}表示项目版本

    2.   POM属性:用户可以引用pom文件中对应的值。如:

    ${project.build.directory} 构建目录,缺省为target

    ${project.build.outputDirectory} 构建过程输出目录,缺省为target/classes

    ${project.build.finalName} 产出物名称,¥{project.artifactId}-{project.version}

    ${project.packaging} 打包类型,缺省为jar

    ${project.xxx} 当前pom文件的任意节点的内容

    3.   自定义属性:用户可以在pom的元素下自定义maven属性。

    4.   setting属性:用户可以使用以settings开头的属性引用settings.xmlxml元素的值,如

    ${settings.localRepository}指向用户本地仓库的地址。

    5.   java系统属性maven可以使用当前java系统的属性,如${user.home}指向了用户目录。

    6.   环境变量属性:所有环境变量都可以使用以env.开头的属性。如:${env.JAVA_HOE}

    profile:profile能够定义多个POM的子集,在构建的时候动态激活某个profile,从而修改POM。
    资源过滤:资源过滤是指Maven对项目资源文件内容进行变量替换。在资源过滤被激活的时候,Maven会扫描资源,寻找由${}包围的Maven属性的引用。一旦找到这些引用,就会使用合适的值去替换它们.

    案例1、灵活构建测试环境和开发环境,(前提需要开启资源文件过滤)

      <!-- 灵活构建 -->
      <profiles>
        <profile>
          <id>dev</id>
          <properties>
            <jdbc.driverClassName>oracle.jdbc.driver.OracleDriver</jdbc.driverClassName>
            <jdbc.ur>jdbc:oracle:thin:@localhost:1521:XE</jdbc.ur>
            <jdbc.username>hr</jdbc.username>
            <jdbc.password>hr</jdbc.password>
            <project.build.sourceEncoding>gbk</project.build.sourceEncoding>
          </properties>
          <!-- 默认激活 -->
          <activation>
            <activeByDefault>true</activeByDefault>
          </activation>
        </profile>
        <profile>
          <id>test</id>
          <properties>
            <jdbc.driverClassName>oracle.jdbc.driver.OracleDriver</jdbc.driverClassName>
            <jdbc.ur>jdbc:oracle:thin:@localhost:1521:XE</jdbc.ur>
            <jdbc.username>test</jdbc.username>
            <jdbc.password>test</jdbc.password>
            <project.build.sourceEncoding>utf-8</project.build.sourceEncoding>
          </properties>
        </profile>
      </profiles>
    
      <build>
      <!-- 插件配置 -->
        <resources>
          <resource>
            <directory>src/main/resources</directory>
            <filtering>true</filtering>
          </resource>
        </resources>
      </build>

    案例2、如果属性过多,导致POM文件过大,(${profile.id}.properties 注意)

    <!-- 灵活构建 -->
      <profiles>
        <profile>
          <id>dev</id>
          <properties>
            <profile.id>dev</profile.id>
          </properties>
          <!-- 默认激活 -->
          <activation>
            <activeByDefault>true</activeByDefault>
          </activation>
        </profile>
        <profile>
          <id>test</id>
          <properties>
            <profile.id>test</profile.id>
          </properties>
        </profile>
      </profiles>
    
    <build>
      <!-- 插件配置 -->
        <filters>
          <filter>src/main/filters/${profile.id}.properties</filter>
        </filters>
        <resources>
          <resource>
            <directory>src/main/resources</directory>
            <filtering>true</filtering>
          </resource>
        </resources>
      </build>


  • 相关阅读:
    Eclipse/MyEclip中使用复制粘贴功能很卡
    ActiveMQ使用教程
    ActiveMQ常见消息类型
    推荐12个最好的 JavaScript 图形绘制库
    eclipse 打包springboot成jar
    CentOS 7下ELK(6.2.4)++LogStash+Filebeat+Log4j日志集成环境搭建
    elasticsearch启动常见错误
    使用haproxy实现负载均衡集群
    linux配置mysql5.6 主主复制同步
    力扣No.102 二叉树的层次遍历
  • 原文地址:https://www.cnblogs.com/wuhaidong/p/10600982.html
Copyright © 2011-2022 走看看