在公司使用ANTX作为构建工具,一直以来感觉ANTX的auto-config功能很实用,它很好的将不同环境的打包方式通过properties文件分离了开来,且ANTX的这部分功能的实现应该是采用Velocity实现,故可以实现非简单的变量填充的功能,在配置中还可以写简单VM的语法。后来构建工具转型到MAVEN之后一直在寻找一种与ANTX 的autoconfig功能类似的插件,以解决不同环境打包的动态参数设置问题。经过google后发现了此插件,此处记录一下该插件----maven-war-plugin 。
基本配置
:(包括排除
不想打进war包的jar
的配置)
<build>
<filters>
<!-- 过滤文件,通常是一个属性文件(名值对的形式) -->
<filter>src/main/webapp/META-INF/auto-config.properties</filter>
<!--
<filter>${user.home}/antx.properties</filter>
-->
</filters>
<finalName>communitytag</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.1-alpha-1</version>
<configuration>
<!--
打包之前过滤掉不想要被打进 .war包的jar,注意:这个地方,本来路径应该是
WEB-INF/lib/anaalyzer-2.0.4.jar,但是经过多次试验,不能这样,至于咋回事儿,搞不清楚。。经多方查证均无结果
暂且这样吧,虽然显得很丑陋,但是总能解决问题吧
-->
<warSourceExcludes>*/lib/analyzer-2.0.4.jar</warSourceExcludes>
<webResources>
<resource>
<!-- 元配置文件的目录,相对于pom.xml文件的路径 -->
<directory>src/main/webapp/WEB-INF</directory>
<!-- 是否过滤文件,也就是是否启动auto-config的功能 -->
<filtering>true</filtering>
<!-- 目标路径 -->
<targetPath>WEB-INF</targetPath>
</resource>
</webResources>
</configuration>
</plugin>
</plugins>
</build>
如上配置及到web项目的pom文件中,且配置中路径相关的信息均以pom作为路径。
应用举例:
为了能更好的理解这个配置是怎么回事儿,我们来看看达到了什么样的效果,如下:
在应用的配置文件路径为 src/main/webapp/WEB-INF/biz/a.xml 有如下配置
<?xml version="1.0" encoding="GBK"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans default-autowire="byName">
<bean id="tagEntityManagementAO" class="com.taobao.communitytag.biz.ao.impl.DefaultTagEntityManagementAO">
<property name="namespace" value="${communitytag.biz.tair.namespace}"/>
</bean>
</beans>
上面的配置中有如下需要动态植入的变量
${communitytag.biz.tair.namespace}
故我们将此变量对应的值配置到属性文件src/main/webapp/META-INF/auto-config.properties(pom.xml文件中filter的配置),如下
communitytag.biz.tair.namespace=242
至此,执行命令mvn install,我们看看目标文件targe下的a.xml内容已经动态产生了,如下
<?xml version="1.0" encoding="GBK"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans default-autowire="byName">
<bean id="tagEntityManagementAO" class="com.taobao.communitytag.biz.ao.impl.DefaultTagEntityManagementAO">
<property name="namespace" value="242"/>
</bean>
</beans>
结果已经很形象了。。。虽然不能支持像antx那样对velocity语法的支持,但是此插件对于大多数环境打包来说,已经足够了。至于这个plugin的深度的功能研究,待以后有需求的时候继续研究,记录在此以便查阅。
记录在此以便查阅
分享到:
相关推荐
maven-jar-plugin-3.1.1.jar
java运行依赖jar包
java运行依赖jar包
maven-war-plugin-2.1.jar
maven-aether-provider-3.2.1-sources.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-war-plugin-2.3.jar
maven打包,指定入口类的jar包,具体的pom配置为:<plugin> <groupId>org.apache.maven.plugins <artifactId>maven-shade-plugin <version>3.1.0 <phase>package <goal>shade implementation=...
maven-war-plugin-20030413.023708.jar
maven-war-plugin-1.6.2.jar
maven-war-plugin-2.0.1.jar
maven-war-plugin-2.0.jar
maven-war-plugin-1.6.3.jar
maven-war-plugin-2.0.2.jar
Maven-assembly-plugin是maven中针对打包任务而提供的标准插件,可以实现自定义打包。主要提供如下功能: ● 提供一个把工程依赖元素、模块、网站文档等其他文件存放到单个归档文件里。 ● 打包成指定格式分发包,...
《深入解析Maven编译插件:maven-compiler-plugin-2.0.2.jar》 在Java开发领域,Maven作为一个强大的项目管理和构建工具,极大地简化了项目的构建过程。而Maven的核心就在于其插件系统,其中maven-compiler-plugin...
【标题】"maven-plugin-3.0.1.zip" 提供的是 Maven 插件的 3.0.1 版本,这是一个重要的构建工具,广泛应用于Java项目的自动化构建、依赖管理和项目信息管理。Maven插件是Maven生态系统的一部分,它们扩展了Maven的...
java运行依赖jar包
java运行依赖jar包
- **插件**: Maven的扩展性主要体现在插件上,如`maven-compiler-plugin`用于编译Java代码,`maven-surefire-plugin`用于执行单元测试。 - **版本控制**: Maven遵循严格的版本号规则,例如`1.0.0-SNAPSHOT`表示开发...
每个阶段都可以通过特定的插件来执行,例如,`maven-compiler-plugin`用于编译源代码,`maven-surefire-plugin`负责运行单元测试。Maven通过使用Project Object Model (POM)文件来描述项目信息,包括依赖、构建配置...
Maven还支持插件机制,允许扩展其功能,例如,你可以使用maven-javadoc-plugin生成API文档,maven-surefire-plugin执行单元测试,或者maven-site-plugin生成项目网站。在pom.xml中定义插件及其配置,即可实现这些...