zoukankan      html  css  js  c++  java
  • 《Maven实战》笔记-10-灵活的构建

    一、灵活构建的意义
    一个优秀的构建系统必须足够灵活,它应该能够让项目在不同的环境下都能成功地构建。例如,典型的项目都会有开发环境、测试环境和产品环境,这些环境的数据库配置不尽相同,那么项目构建的时候就需要能够识别所在的环境并使用正确的配置。
    还有一种常见的情况是,项目开发了大量的集成测试,这此测试运行起来非常耗时,不适合在每次构建项目的时候都运行。因此需要一种手段能让我们在特定的时候才激活这些集成测试。
    Maven为了支持构建的灵活性,内置了三大特性,即属性、Profile和资源过滤。
     
    二、Maven属性
    Maven共有六类属性:
    1、内置属性
    常用的两个内置属性:
    ${basedir}:表示项目根目录
    ${version}:表示项目版本
     
    2、POM属性
    属性的默认值都是在超级POM中定义的。
     
    3、自定义属性
    POM的properties元素下定义的,如:
     
    4、Settings属性
    使用settings. 开头的属性引用settings.xml文件中的XML元素值,如
    ${settings.localRepository}指向本地仓库的地址。
     
    5、Java系统属性
    如${user.home}指向用户目录。
    可以使用mvn help:system查看Java系统属性。
     
    6、环境变量属性
    使用env. 开头的Maven属性引用环境变量,
    ${env.JAVA_HOME}代指JAVA_HOME环境变量的值。
     
    三、资源过滤
    1、替代可变部分——提取src/main/resources等配置文件中的可变部分
    为了应对环境的变化,首先需要使用Maven属性将这些将会发生变化的部分提取出来。如在src/main/resources中的数据库配置文件,连接数据库使用的驱动类、URL用户名和密码都可能发生变化,因此用Maven属性取代它们:

     
    2、配置可变部分——在POM中配置可变部分的值
    即使使用了Maven属性,就应该在某个地方定义它们。我们知道了自定义Maven属性,这里要做的是使用一个额外的profile将其包裹,如:
    这里与在POM的properties元素下定义并无二致,只是使用了一个id为dev的profile,将开发环境下的配置与其他环境区别开来。
     
    3、使用配置——开启资源过滤
    上述定义了Maven属性,但是Maven属性默认只有在POM中才会被解析。即${db.username}在POM中会变成test,但是在src/main/resources/目录下的文件中,构建的时候仍然是${db.username}。
    资源文件的处理其实是maven-resoures-plugin做的事情,它默认的行为只是将项目主资源文件复制到主代码编译输出目录中,将测试资源文件复制到测试代码编译输出目录中。
    不过只要通过一此简单的POM配置,该插件就能够解析资源文件中的Maven属性,即开启资源过滤。

     
    4、激活profile
    需要在命令行激活所需的profile的 id,则Maven就能够在构建项目的时候使用profile中属性值替换数据库配置文件中的属性引用。命令如下(id为dev):
    1. mvn clean install -Pdev
    -P 参数表示在命令行激活一个profile,构建完成后,输出目录中的数据库配置就是:
     
    四、Maven Profle
    上述已经用到dev的开发环境profile,现在详细解释一下profile。
    1、针对不同环境的profile
    开发人员激活dev的profile,测试人员激活test的profile。
     
    2、激活profile
    激活可以使用命令行,也可使用settings设置文件,如下(id为dev-x):
    另外,还有更多的激活方式,如
    系统属性激活:某系统属性存在且值确定是激活profile;
    操作系统环境激活:自动基于不同的操作系统进行激活;
    文件存在与否激活:根据项目中某个文件存在与否来觉得是否激活profile;
    默认激活:在定义profile的时候指定其默认激活,这种方式看似方便,但是优先级低。即,若POM中有任何一个profile通过以上任意一种方式被激活了,那么所有的默认激活配置都会失效!
    如了解当前激活的profile?
    1. mvn help:active-profiles
    2. mvn help:all-profiles
     
    3、profile的种类
    与POM中的配置类似,可在以下位置声明profile:
    pom.xml
    用户settings.xml
    全局settings.xml
     
    五、Web资源过滤
    有时,希望在构建项目的时候,为不同用户使用不一样的资源文件(如不同log、不同的css主题等)。
     
    那么,如何开启过滤?
    需要配置maven-war-plugin插件,对src/main/webapp这一Web资源目录开启过滤,并使用includes指定要过滤的文件。如下:
    然后就可以选择激活某个profile进行构建,如
    1. mvn clean install -Pclient-a
     
     
     





  • 相关阅读:
    巧用SQL Server Profiler
    Linq结果直接返回实体对象
    C#(MVC) Word 替换,填充表格,导出并下载PDF文档
    C#匿名类型(Anonymous Type)学习日记
    C#Lambda表达式学习日记
    C#事件(Event)学习日记
    C#委托(Delegate)学习日记
    C#隐私信息(银行账户,身份证号码,名字)中间部分特殊字符替换(*)
    CSS布局模型
    Visual Studio 内置快速生产代码简写集合
  • 原文地址:https://www.cnblogs.com/myitroad/p/6131230.html
Copyright © 2011-2022 走看看