alitomcat maven以及Autoconfig
maven概述
Maven的核心是POM(Project Object Model),即项目对象模型。最直观的,maven对项目依赖进行统一的管理,让开发者从纷杂错乱的jar包世界摆脱出来,更加专注于项目构建以及开发。事实上,maven并不止是一个项目构建工具,它还是一个项目管理工具。它提供了一个项目对象模型,一组标准集合,一个项目生命周期,一个依赖管理系统和用来定义在生命周期阶段中插件目标的逻辑。
POM文件结构如下:
1 |
<?xml version="1.0" encoding="UTF-8"?> |
如上所示,定义了一个项目,其中主要元素包括:模型的版本,项目的版本,项目的名称,项目的打包类型,项目依赖,项目的插件配置。
maven指令
1 |
mvn archetype:create //根据指定的类型创建项目框架 |
常用的maven命令如上所示。更多命令,参考相关资源
maven多模块
项目的开展从人员安排上来说,是需要分工协作的,不同的人做不同的事情。从项目的设计角度来讲,项目需要合理的解耦和,维护一定的层次关系和结构。从开发效率角度来讲,当项目到了一定的量级,那就需要分模块开发,集中关注。模块化开发以及层次化设计是现在项目的主要方式,maven的多模块功能提供了项目的分割。一个项目包含若干模块,完成不同的事情,关注不同的层次,各自的实现互不影响。
maven多模块的使用example,建立一个maven工程,包括三个模块:maven-biz,maven-web.
各工程中pom文件如下:
1 |
<!--maven-parent的pom结构--> |
1 |
<!--maven-biz的pom文件--> |
1 |
<!--maven-web的pom文件--> |
maven插件
Autoconfig
在一个项目之中,总会有一些参数在开发环境和生产环境是不同的,或者会根据环境的变化而变化。我们如果通过硬编码的方式,势必要经常性的修改项目代码。经常修改代码的结果不用多说了。那我们可以用一种方式,在项目编译前将可变的参数改为可配置的。如此,灵活性就大大的增加,也减少了经常修改代码可能带来的不稳定风险。
Autoconfig就是这样的一个工具,它通过占位符将需要动态配置的内容替换。Maven Filtering也是这样的一个工具。那么二者的区别在哪里?看下表
| 问题 | Maven Filtering | AutoConfig |
|---|---|---|
| 如何修改配置文件的参数? | Maven Filtering必须获得源码并重新build | 而AutoConfig不需要提取源码,也不需要重新build,即可改变目标文件中所有配置文件中placeholders的值 |
| 如何确保placeholder替换的正确性? | Maven Filtering不能验证placeholder值的缺失和错误 | AutoConfig可以对placeholder及其值进行检查 |
解释下:autoconfig为什么不需要提取源码就可以改变目标文件中的待替换值。观察Ali-Tomcat的启动流程,我们可以发现,Ali-Tomcat在Tomcat基本组件启动完全之后,部署项目之前会再次去寻找项目中的auto-config.xml文件,然后完成对placeholder的再次替换,与autoconfig不同的是,maven编译后不可更改,因为它无法再build之后、正式运行前再次进行替换。然而autoconfig的这种优势是依赖于Ali-Tomcat的,从服务器的启动日志就可以看出。以下为Ali-Tomcat的启动日志。
1 |
INFO: Starting Servlet Engine: Apache Tomcat/7.0.59.429 |
关于这个好处,就不多说了。说一下个人的想法吧,Autoconfig实现的功能是参数的替换,可以动态的修改一些配置,例如:服务器的地址,服务的版本等。分两个方面:对于一些常用的静态的配置:服务器,端口,数据库等基本信息无疑是十分方便的。但是如果是想要用来替换和修改服务的版本,可能会有很大的风险,因为服务的接口可能有被重新设计,导致项目无法使用,也就需要重新修改工程,这里的版本替换的作用也就不是很大,相反还有一定的风险性。
相关资源
- [maven 官网] http://maven.apache.org/guides/getting-started/index.html
- [openwebx文档] http://www.openwebx.org/docs/autoconfig.html
alitomcat maven以及Autoconfig的更多相关文章
- AutoConfig工具使用指南
转载:http://blog.csdn.net/fighterandknight/article/details/70245905 13.1. 需求分析 13.1.1. 解决方案 13.2. Auto ...
- maven auto-config 多环境自动打包
摘自:http://doc.okbase.net/bjhecwq/archive/118121.html maven有许多优秀的插件,最近在研究打包中替换多重环境的配置,同事介绍使用阿里的auto-c ...
- Maven插件实现的autoconfig机制(转)
autoconfig这种机制在软件开发和发布的过程中是非常方便也是非常必要的一种动态替换配置信息的一种手段,一种很贴切的比喻:这个就像在windows下面安装一个软件时,我们按照安装向导给我们弹出提示 ...
- maven 插件之 AutoConfig 工具使用笔记
AutoConfig 是一款 maven 插件,主要用于 Maven 项目打包使用.在我们的工作中,会将自己写的代码打成 jar 包或者 war 包发布到各种环境上.一般地,不用的环境所使用的数据库. ...
- maven pom.xml加载不同properties配置[转]
可以参考http://www.openwebx.org/docs/autoconfig.html 1.pom.xml =========================== <!-- 不同的打包 ...
- intellij idea使用配置jetty maven 插件
pom.xml中更改或则添加: <build> <finalName>mall</finalName> <plugins> <plugin> ...
- 关于 Maven 的插件maven-war-plugin
在进行项目发布的时候,可能会碰到这样的情况, 希望在保持项目源代码不变的前提下,希望能够针对不同的运行环境获得相应的运行包.(比如war包) 基本配置 :(包括排除 不想打进war包的jar 的配置) ...
- 《Maven实战》阅读笔记
java -versionmvn -vmvn help:system m2eclipse maven->install MAVEN_OPTS: -Xms128m -Xmx512mmvn clea ...
- Maven开发环境的搭建,含jetty调试[简单明了]
之前的一片老文,搬过来. 1. Maven的开发环境需要哪些部件a) Maven.去http://maven.apache.org/ 下载.将其bin目录加入进系统PATH.测试方法:用命令mvn – ...
随机推荐
- 利用dll加载漏洞实现远程代码执行
微软的“不安全dll加载”漏洞涉及Windows XP至Windows 7等多个版本的操作系统.由于Windows存在加载未指明完整路径的dll文件的机制,可能导致用户在使用第三方软件.玩游戏.听音乐 ...
- debian禁止或者允许指定ip访问远程mysql、ssh、rsynccat /etc/xinetd.conf
如果没有安装xinetd,安装xinetd apt-get install xinetd 然后创建配置文件 vi /etc/xinetd.d/mysqld service login { socket ...
- 读书笔记_Effective_C++_条款二十九:为“异常安全”而努力是值得的
还是举书上的例子: void PrettyMenu::changeBackground(std::istream& imgSrc) { lock(&mutex); delete bgI ...
- UITextField设置密文延时处理---仿QQ登录密码输入
系统的UITextField输入的时候最后一个字符会有1-2s的效果展示, 效果如下: 为了解决这个问题, 可以用字符 "●" 替换, 替换后效果如下: 用到的是UITextFie ...
- js——引用类型和基本类型
js中的数据类型有以下几种: 基本类型:Number Boolean String undefined null Symbol 引用类型:Object(Array, Function, Date ...
- UVA 11205 The broken pedometer(子集枚举)
B - The broken pedometer Time Limit:3000MS Memory Limit:0KB 64bit IO Format:%lld & %llu ...
- Delphi XE 4,Rad Studio XE 4 官方下载,更新Update 1(附破解)
http://blog.csdn.net/maxwoods/article/details/8842889 XE4 Update1 下载: http://altd.embarcadero.com/do ...
- Visual Studio删除所有的注释和空行
visual studio用"查找替换"来删掉源代码中所有//方式的纯注释和空行 注意:包括/// <summary>这样的XML注释也都删掉了. 步骤1/2(删除注释 ...
- 采集音频和摄像头视频并实时H264编码及AAC编码[转]
0. 前言 我在前两篇文章中写了DirectShow捕获音视频然后生成avi,再进行264编码的方法.那种方法有一些局限性,不适合实时性质的应用,如:视频会议.视频聊天.视频监控等.本文所使用的技术, ...
- GOOGLE定位
GOOGLE定位 /// <author>cxg 2018-3-27</author> unit umap; interface uses System.SysUtils, S ...