一、背景
a) 在整个软件工程生命周期中,一般会涉及到三个环境:开发环境,测试环境,线上环境,每个环境中涉及到的配置都会不一样,比如在开发过程中一般数据库会链接开发的数据库,一些功能性的验证都会线下搭建相应的环境进行开发调试,而测试过程中又会链接跟线上环境比较真实的另一套配置等等。
b) 在构建项目工程中,一般会将根据功能横向的划分为几个独立的子工程,或根据层次:数据层,业务层,展示层,将工程纵向的进行划分,实际中两者结合比较多。

Dao层:操作数据库这一层,获取数据,更新数据,插入数据,删除数据,但是这一层中基本不涉及到具体的业务逻辑,提供比较通用对数据库的操作。
BO层:业务逻辑层,对数据进行相应的业务逻辑操作,这一层中主要是封装了比较具体的业务逻辑操作。
Service层:对外提供了统一的接口,将具体的业务,数据进行统一封装,对外暴漏统一的服务。
应用层:一般主要的功能是展示,根据service获取的服务,数据进行处理,使得适合不同页面的展示。
一、作用
Autoconfig,插件的作用就是将上面两点结合起来,一方面可以根据功能,职责将应用进行合理的划分,另一方面,又可以根据不同的环境进行配置项的更换,使得同一套代码适合不同的应用场景。
二、原理
a) 主要依赖三种不同的文件,1、autoconfig.xml文件,起到总控文件的作用,里面配置了需要哪些配置项、默认值,将那个模板文件生成为那个文件;2、config.properties文件,保存了配置项的信息,当进行模板渲染的时候会先从里面获取值,如果没有则采用默认值或提示用户输入,然后将值保持到配置文件中;3、模板文件,需要渲染的文件,里面包含了需要根据不同环境进行设置不同值的变量
b) 插件工作过程:1、获取autoconfig.xml元数据信息,2、初始化配置项的值;3、渲染模板生成相应环境下的文件
c) 插件中有两个goals:1、autoconfig_compile,主要是对当前工程进行autoconfig;2、pre_intergation_test,主要是对整个war进行autoconfig,首先对classpath下的classes进行autoconfig,其实对lib下面的jar包进行相应的autoconfig
三、使用
a) 源码地址:https://autoconfig-maven-plugin.googlecode.com/svn/trunk
b) Maven配置
<groupId>com.wutianyi.maven</groupId>
<artifactId>maven-autoconfig-plugin</artifactId>
<version>1.0.0</version>
<executions>
<execution>
<id>autoconfig_compile</id>
<goals>
<goal>
autoconfig_compile
</goal>
</goals>
<configuration>
<!-- produce生产环境 -->
<mode>develop</mode>
</configuration>
</execution>
</executions>
</plugin>
c) autoconfig_compile参数说明:
i. mode:指定环境,也就是在配置项中默认增加了mode=value对应maven参数-Dautoconfig.mode
ii. configXmlPath:指定要加载的总控文件autoconfig.xml的相对路径(相对于当前工程),默认user.dir/META-INF/autoconfig.xml。(-Dautoconfig.config_xml_path)
iii. configPropertiesPath:配置项文件,默认user.home/config.properties,可以指定具体的配置文件,必须是绝对路径。(-Dautoconfig.config_properties_path)
iv. resourceLoadPath:模板文件存放的相对路径,默认user.dir/META-INF/(-Dautoconfig.resource_load_path)
d) pre_intergation_test参数,相对上面的goals,这个的要求比较严格,对于war中autoconfig的文件路径和jar中的文件路径指定不能够修改,必须符合规格才能够进行相应的autoconfig
i. war中的autoconfig.xml,模板文件必需在META-INf目录下,jar中的必需在META-INF下
ii. warpath:需要autoconfig的war文件的路径,一般为${project.build.directory}/${project.build.finalName}.war,(-Dautoconfig.warpath)
iii. configPropertiesPath:
补充,这种类似的插件已经有很多做得不错,我写这个插件不是原创,只是根据自己之前使用过的且根据自己的理解进行了重新的编写,纯属个人学习,如果有什么问题,欢迎与我交流,当然里面有很多不足的地方。

- 大小: 37.5 KB
分享到:
相关推荐
官方版本,亲测可用
官方版本,亲测可用
官方版本,亲测可用
官方版本,亲测可用
<artifactId>autoconfig-demo <version>0.0.1-SNAPSHOT <name>autoconfig-demo <description>Demo project for Spring Boot <java.version>1.8 <groupId>org.springframework.boot ...
为了使用这个插件,你需要满足一些前提条件,其中最重要的一条是利用Mybatis的`autoConfig`自动配置装载。这通常意味着你的项目需要基于Spring框架,特别是SpringBoot,因为SpringBoot集成了Mybatis的自动化配置功能...
通过使用`spring-boot-maven-plugin`或`spring-boot-gradle-plugin`,开发者可以构建包含所有依赖的自包含JAR,这使得部署和运行更加简单。源码中可以看到这些插件的配置及其生成自包含JAR的逻辑。 在Spring Boot ...
首先,要生成带有依赖树的aar,我们需要使用一个特殊的插件——`fat-aar-plugin`。这个插件由Vigi开发并维护,可以在Gradle构建脚本中添加如下配置: ```groovy buildscript { repositories { jcenter() maven {...