Maven插件实现的autoconfig机制(转)

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

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

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

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

时间: 2024-10-07 02:41:31

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

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

这里给大家详细说一下Maven的运行机制,让大家不仅知其然,更知其所以然. 1.插件保存在哪里? 与我们所依赖的构件一样,插件也是基于坐标保存在我们的Maven仓库当中的.在用到插件的时候会先从本地仓库查找插件,如果本地仓库没有则从远程仓库查找插件并下载到本地仓库. 与普通的依赖构件不同的是,Maven会区别对待普通依赖的远程仓库与插件的远程仓库.前面提到的配置远程仓库只会对普通的依赖有效果.当Maven需要的插件在本地仓库不存在时是不会去我们以前配置的远程仓库查找插件的,而是需要有专门的插件远

【maven详解-插件】maven 插件机制

Maven插件运行方式 Maven在运行命令时都会对应每个生命周期,每个生命周期在执行时都会看pom.xml文件中配置了哪些插件,然后运行它. Maven 的生命周期与插件相互绑定,用以完成实际的构建任务.更具体而言,是生命周期的阶段与插件的目标相互绑定,以完成某个具体的构建任务. 具体的功能由插件(Plugin)实现.一个插件可以实现多个目标(Goal) 为了解耦插件的功能和工程阶段,实现高度的可配置性,maven规定插件只是实现目标的功能, 通过配置来决定在哪个阶段执行(Execution)

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

插件配置 定义解释:插件目标 当我们了解了maven插件之后.我们发现假设为每个功能编写一个独立的插件显然是不可取的,由于这些任务背后有非常多能够复用的代码.因此,把这些功能聚集在一个插件里,每个功能我们就称之为一个插件目标. 举个样例: maven-dependency-plugin有十多个目标,每一个目标相应了一个功能 分析项目依赖:dependency:analyze 列出项目依赖树:dependency: tree 列出项目全部已解析的依赖:dependency:list POM中插件全

常用Maven插件介绍

我们都知道Maven本质上是一个插件框架,它的核心并不执行任何具体的构建任务,所有 这些任务都交给插件来完成,例如编译源代码是由maven- compiler-plugin完成的.进一步说,每个任务对应了一个插件目标(goal),每个插件会有一个或者多个目标,例如maven- compiler-plugin的compile目标用来编译位于src/main/java/目录下的主源码,testCompile目标用来编译位于src/test/java/目录下的测试源码. 用户可以通过两种方式调用Mav

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

我们都知道Maven本质上是一个插件框架,它的核心并不执行任何具体的构建任务,所有这些任务都交给插件来完成,例如编译源代码是由maven-compiler-plugin完成的.进一步说,每个任务对应了一个插件目标(goal),每个插件会有一个或者多个目标,例如maven-compiler-plugin的compile目标用来编译位于src/main/java/目录下的主源码,testCompile目标用来编译位于src/test/java/目录下的测试源码. 用户可以通过两种方式调用Maven插

Maven实战(七,八)——经常使用Maven插件介绍

我们都知道Maven本质上是一个插件框架,它的核心并不运行不论什么详细的构建任务,全部这些任务都交给插件来完毕,比如编译源代码是由maven-compiler-plugin完毕的.进一步说,每一个任务相应了一个插件目标(goal),每一个插件会有一个或者多个目标,比如maven-compiler-plugin的compile目标用来编译位于src/main/java/文件夹下的主源代码.testCompile目标用来编译位于src/test/java/文件夹下的測试源代码. 用户能够通过两种方式

maven插件编写

Maven maven作为一个功能丰富的java应用程序管理工具,其提供的插件管理机制为其扩展带来了极大的便利: 本文以统计指定目录下有多少个.java为后缀的文件为例,说明如何自定义maven插件. Maven插件的命名规范 按照官方建议,maven插件的命名建议为xxxx-maven-plugin,这样命名有两个好处 1.maven-xxxx-plugin为maven官方插件命名,使用这种命名方式可能侵权 2.自定义插件maven执行命令为mvn groupId:artifactId:goa

dbdeploy的maven插件使用

Introduction 简介 The maven plugin is designed for people who use Apache Maven as a build tool. maven插件的设计是被人们当初maven构建工具使用. As well as this maven plugin, dbdeploy supports an ant task and a command line interface. 以及这个Maven插件,dbdeploy支持ant任务 和 命令行接口 U

eclipse安装maven插件-解决requires ‘bundle org.slf4j.api 1.6.2′

eclipse安装maven插件-解决requires 'bundle org.slf4j.api 1.6.2′ [转载]http://robin.sh/html/1526_eclipse-maven.html 给eclipse安装maven插件,网上教程已经很多,不在累述.关键是安装过程中报错:requires 'bundle org.slf4j.api 1.6.2' but it could not be found. 这个错误很难搞,网上提供的解决方案绝大部分都不起作用.可能跟eclips