一、背景
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
分享到:
相关推荐
Maven 使用 tomcat8-maven-plugin 插件 Maven 是一个流行的构建自动化工具,它可以帮助开发者自动完成项目的编译、测试、打包、部署等任务。 Tomcat 是一个流行的 Web 服务器,Maven 提供了一个插件 tomcat8-maven-...
exec-maven-plugin是Maven生态系统中的一个插件,它允许用户在Maven构建过程中执行外部命令或脚本。这使得Maven项目可以集成更多的自定义操作,比如运行特定的脚本、调用系统命令等。本文将详细介绍exec-maven-...
例如,`maven-compiler-plugin` 是一个非常重要的插件,用于编译项目的源代码。它负责将 Java 源代码编译为字节码,这是软件开发过程中的关键步骤。 ** maven-compiler-plugin-3.8.0-source-release 插件** `maven...
maven3-plugin-3.0.1-sources.jar
maven-deploy-plugin-2.8.2.jar
解决tomcat8-maven-plugin-3.0-r1655215.jar阿里云同有的问题。放到路径org\apache\tomcat\maven\tomcat8-maven-plugin\3.0-r1655215\就可以了
maven-jar-plugin-3.1.1.jar
maven-antrun-plugin-1.3.jar maven-archiver-2.2.jar maven-artifact-3.2.1-sources.jar maven-assembly-plugin-2.2-beta-5.jar maven-bundle-plugin-1.0.0.jar maven-clean-plugin-2.4.1.jar maven-clean-plugin-...
maven3-plugin-3.0.0-1-sources.jar
maven-antrun-plugin-3.0.0.jar
《深入解析Maven编译插件:maven-compiler-plugin-2.0.2.jar》 在Java开发领域,Maven作为一个强大的项目管理和构建工具,极大地简化了项目的构建过程。而Maven的核心就在于其插件系统,其中maven-compiler-plugin...
maven-surefire-plugin-2.22.1.jar
maven-clean-plugin-3.1.0.jar
maven是个项目管理工具,如果我们不告诉它我们的代码要使用什么样的jdk版本编译的话...maven的默认编译使用的jdk版本貌似很低,使用maven-compiler-plugin插件可以指定项目源码的jdk版本,编译后的jdk版本,以及编码。
maven-install-plugin-2.4.jar
maven-deploy-plugin-2.7.jar
Maven-assembly-plugin是maven中针对打包任务而提供的标准插件,可以实现自定义打包。主要提供如下功能: ● 提供一个把工程依赖元素、模块、网站文档等其他文件存放到单个归档文件里。 ● 打包成指定格式分发包,...
maven-resources-plugin-2.4.1.jar
maven-assembly-plugin-2.2-beta-5.jar
maven-site-plugin-3.3.jar