您的位置:首页 > 运维架构 > Tomcat

使用MAVEN动态生成配置文件

2016-06-22 14:05 676 查看
创建MAVEN BUILD命令,并在
main
标签页下添加参数。

使用maven的
build.resources.resource
标签,指定需要过滤替换的文件。如下:

<build>
<!-- <outputDirectory>f:\webapp</outputDirectory> -->
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
<include>*.properties</include>
<include>*.xml</include>
</includes>
</resource>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering><!--是否替换占位符-->
</resource>
<resource>
<directory>src/main/resources/conf/quiee</directory>
<filtering>true</filtering>
<includes><include>reportConfig.xml</include></includes>
<targetPath>${basedir}/src/main/webapp/WEB-INF/quiee</targetPath>
</resource>
</resources>
</build>


这时可以使用tomcate插件
tomcat-maven-plugin
动态的设置相关参数了,比较
src/main/resources
下的jdbc.properties文件。

<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>tomcat-maven-plugin</artifactId>
<configuration>
<path>/${appName}</path>
<port>${tomcatPort}</port>
<uriEncoding>UTF-8</uriEncoding>
<webResources>
<resource>
<directory>src/main/webapp/WEB-INF/quiee</directory>
<targetPath>WEB-INF/quiee</targetPath>
<filtering>true</filtering>
</resource>
</webResources>
</configuration>
</plugin>


jdbc.driverClassName=${mydriverclassname}
jdbc.url=${myurl}
jdbc.username=${myusername}
jdbc.password=${myjdbc.password}




reportConfig.xml是处在
src/main/webapp
下的文件,这些文件是不能动的,因为tomcat插件运行时使用就是这个地址,而resource功能默认是把配置的资源文件放到target/classes目录下的,而tomcat运行时使用的也是这个目录,所以
src/main/java
src/main/resources
下需要过滤的文件,可以把自身当模板根据配置的参数,产生一个新的文件到target/classes目录下供tomcat使用。而
src/main/webapp
下的文件是tomcat最终需要用到的,使用模板放在这是不行的,使用在其它地方备份一下模板,把模板配置在resource中,进行过滤,并最终产生到webapp下对应的目录中。 而打包的时候,所有文件都是需要预先进行编译过滤的,相当于src下的文件能当做模块,最终都会新产生一个文件到artifactId-version的文件夹中,所以这里可以使用webResources来进行配置过滤。当前还可以继续使用上面的方法。webResources方法只适用到打包时使用。

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.2</version>
<configuration>
<warName>ROOT</warName>
<webResources>
<resource>
<directory>src/main/resources</directory>
<targetPath>WEB-INF/classes</targetPath>
<includes>
<include>**</include>
</includes>
</resource>
<resource>
<directory>src/main/webapp/WEB-INF/quiee</directory>
<targetPath>WEB-INF/quiee</targetPath>
<filtering>true</filtering>
</resource>
</webResources>
</configuration>
</plugin>


<!-- assembly插件 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.2.1</version>
<configuration>
<webResources>
<resource>
<directory>src/main/resources</directory>
<targetPath>WEB-INF/classes</targetPath>
<includes>
<include>**</include>
</includes>
</resource>
<resource>
<directory>src/main/webapp/WEB-INF/quiee</directory>
<targetPath>WEB-INF/quiee</targetPath>
<filtering>true</filtering>
</resource>
</webResources>
</configuration>
</plugin>


Maven内置变量说明:
${basedir} 项目根目录
${project.build.directory} 构建目录,缺省为target
${project.build.outputDirectory} 构建过程输出目录,缺省为target/classes
${project.build.finalName} 产出物名称,缺省为${project.artifactId}-${project.version}
${project.packaging} 打包类型,缺省为jar
${project.xxx} 当前pom文件的任意节点的内容
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息