autoconfig这种机制在软件开发和发布的过程中是非常方便也是非常必要的一种动态替换配置信息的一种手段,一种很贴切的比喻:这个就像在windows下面安装一个软件时,我们按照安装向导给我们弹出提示填写信息一样(这些信息就是一些定制化的信息)。

Maven的强大插件机制,可以和autoconfig机制结合起来,发挥巨大的威力。

实际项目中,基本都是在deploy下面实现配置文件的读取和替换的。这里,其实就是利用了一个maven-autoconf-plugin插件实现的这个功能。具体deploy下面pom.xml的配置片段如下:

  1. <profiles>
  2. <!-- Dev profile will configure all files and copy them to target/dev, for testing purpose -->
  3. <profile>
  4. <id>dev</id>
  5. <activation>
  6. <property>
  7. <name>env</name>
  8. <value>!release</value>
  9. </property>
  10. </activation>
  11. <build>
  12. <plugins>
  13. <!-- do auto config for integration test -->
  14. <plugin>
  15. <groupId>com.alibaba.maven.plugins</groupId>
  16. <artifactId>maven-autoconf-plugin</artifactId>
  17. <version>0.3-alpha-9</version>
  18. <executions>
  19. <execution>
  20. <phase>pre-integration-test</phase>
  21. <goals>
  22. <goal>config</goal>
  23. </goals>
  24. </execution>
  25. </executions>
  26. <configuration>
  27. <destFiles>
  28. <destFile>${project.basedir}</destFile>
  29. </destFiles>
  30. <includeDescriptorPatterns>
  31. <!-- intl-site flavor -->
  32. <includeDescriptorPattern>autoconf/auto-config.xml</includeDescriptorPattern>
  33. <!-- china-site flavor -->
  34. <includeDescriptorPattern>conf/META-INF/autoconf/auto-config.xml</includeDescriptorPattern>
  35. </includeDescriptorPatterns>
  36. <includePackagePatterns>
  37. <includePackagePattern>**/*.war</includePackagePattern>
  38. </includePackagePatterns>
  39. </configuration>
  40. </plugin>
  41. </plugins>
  42. </build>
  43. </profile>
  44. </profiles>

这里,又一次应用了COC的思想,插件会去扫描autoconf/auto-config.xml或者conf/META-INF/autoconf/auto-config.xml。

目前这个插件还比较鸡肋,不过基本功能都是有的,详细的介绍,可以直接参考他的官方介绍:http://repo.alibaba-inc.com/mvn/internal/snapshots/sites/maven-autoconf-plugin/config-mojo.html

常用的几个属性列举如下:

  • includeDescriptorPatterns:autoconfig所要扫描的描述文件的匹配路径。
  • userProp:指定用户实际使用配置信息的配置文件的路径,如:-DuserProp=/home/abc/properties.txt

本文来自于:http://hittyt.iteye.com/blog/889158

Maven插件实现的autoconfig机制(转)的更多相关文章

  1. maven 插件之 AutoConfig 工具使用笔记

    AutoConfig 是一款 maven 插件,主要用于 Maven 项目打包使用.在我们的工作中,会将自己写的代码打成 jar 包或者 war 包发布到各种环境上.一般地,不用的环境所使用的数据库. ...

  2. (十三)Maven插件解析运行机制

    这里给大家详细说一下Maven的运行机制,让大家不仅知其然,更知其所以然. 1.插件保存在哪里? 与我们所依赖的构件一样,插件也是基于坐标保存在我们的Maven仓库当中的.在用到插件的时候会先从本地仓 ...

  3. Maven 教程(13)— Maven插件解析运行机制

    原文地址:https://blog.csdn.net/liupeifeng3514/article/details/79551210 这里给大家详细说一下Maven的运行机制,让大家不仅知其然,更知其 ...

  4. 常用Maven插件介绍

    我们都知道Maven本质上是一个插件框架,它的核心并不执行任何具体的构建任务,所有这些任务都交给插件来完成,例如编译源代码是由maven- compiler-plugin完成的.进一步说,每个任务对应 ...

  5. 学习笔记——Maven实战(七)常用Maven插件介绍(上)

    我们都知道Maven本质上是一个插件框架,它的核心并不执行任何具体的构建任务,所有这些任务都交给插件来完成,例如编译源代码是由maven-compiler-plugin完成的.进一步说,每个任务对应了 ...

  6. 学习笔记——Maven实战(八)常用Maven插件介绍(下)

    我们都知道Maven本质上是一个插件框架,它的核心并不执行任何具体的构建任务,所有这些任务都交给插件来完成,例如编译源代码是由maven- compiler-plugin完成的.进一步说,每个任务对应 ...

  7. #maven系列(4)-maven插件的介绍

    1. 简介 在Maven设计中,实际的任务都是交由插件完成的,这种思想和设计模式中的模板方法非常类似,模板方法模式在父类中定义算法的整体结构,子类可以通过实现或者重写父类的方法来控制实际的行为,这样既 ...

  8. 【转载】常用Maven插件介绍

    http://www.cnblogs.com/crazy-fox/archive/2012/02/09/2343722.html 我们都知道Maven本质上是一个插件框架,它的核心并不执行任何具体的构 ...

  9. maven插件的生命周期的详细说明(两)

    插件配置 定义解释:插件目标 当我们了解了maven插件之后.我们发现假设为每个功能编写一个独立的插件显然是不可取的,由于这些任务背后有非常多能够复用的代码.因此,把这些功能聚集在一个插件里,每个功能 ...

随机推荐

  1. Microsoft Visual Studio与Firefly 加载的项目已建议,更新源代码地位问题

    一开始装笔记本vs2010,由于使用的近期发展vs2008与vs2005所以,今天再次2008.2005安装在,但是在打开的项目时,,首先提示加载项目文件.然后已建议状态,非常慢非常慢的,之前仅仅有v ...

  2. 《RESTful Web Services》第一章 使用统一接口

    序言 HTTP是一种应用层协议.SOAP和一些Ajax Web框架都将HTTP作为一种传输信息的协议,难以充分利用HTTP层的基础设施. 1.2 如何保持交互的可见性     可见性是HTTP的一个核 ...

  3. Linq的小知识(一),大家可以学习一下

    linq的简介 lLINQ是Language Integrated Query的简称,它是集成在.NET编程语言中的一种特性.已成为编程语言的一个组成部分,在编写程序时可以得到很好的编译时语法检查,丰 ...

  4. iOS 开发中你是否遇到这些经验问题(二)

    前言: 1.在Block中一起使用weakSelf与strongSelf的含义 我们都会声明一个弱引用在block中使用, 目的就是防止循环引用, 那么weakSelf与strongSelf一起使用目 ...

  5. Bleed Brake Master Cylinder with Intelligent Tester IT2

    When the brake fluid level drops too low in the master cylinder reservoir, air bubbles can get caugh ...

  6. Android(java)学习笔记131:Intent启动别的Activity

    1.案例 (1)首先是main.xml和other.xml文件如下: main.xml文件: <?xml version="1.0" encoding="utf-8 ...

  7. 学习jQuery后的部分总结

    1.remove和empty <div id="div1"> <ul id="ul1"> <li>嘿嘿</li> ...

  8. servlet案例

    1.重定向 方式1:在servlet中写:response.setStatus(302);      response.setHeader("Location","路径& ...

  9. ios 通过代码调节屏幕亮度

    方法: [[UIScreen mainScreen] setBrightness: value]; value:value就是屏幕的亮度值  这个值介于0和1之间 另外 这个方法  会即时刷新  无需 ...

  10. DROP--删除表

    DROP TABLE table_name; 说明: 1.必须有表的权限 2.表不能有外键约束