我想根据属性文件的值更新context.xml和web.xml文件的内容。我想设置可由我的web应用使用的数据库连接。有没有可能以动态的方式添加这些内容?
我目前正在使用pom中的以下构建部分进行一些更新
<build>
<finalName>ROOT</finalName>
<filters>
<filter>src/main/resources/environmentProperties/env1.properties</filter>
<filter>src/main/resources/environmentProperties/env2.properties</filter>
<filter>src/main/resources/environmentProperties/env3.properties</filter>
<filter>src/main/resources/environmentProperties/env4.properties</filter>
</filters>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>${maven-war-plugin-version}</version>
<configuration>
<webResources>
<resource>
<directory>${basedir}\src\main\resources\META-INF</directory>
<filtering>true</filtering>
<targetPath>META-INF</targetPath>
<includes>
<include>**\context.xml</include>
</includes>
</resource>
</webResources>
<warSourceDirectory>src/main/webapp</warSourceDirectory>
<webXml>src/main/webapp/WEB-INF/web.xml</webXml>
</configuration>
</plugin>
</plugins>
</build>
在我的web.xml文件中,我有以下内容
<resource-ref>
<description>Env1 Database Connection</description>
<res-ref-name>jdbc/Env1</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
<resource-ref>
<description>Env2 Database Connection</description>
<res-ref-name>jdbc/Env2</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
<resource-ref>
<description>Env3 Database Connection</description>
<res-ref-name>jdbc/Env3</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
<resource-ref>
<description>Env4 Database Connection</description>
<res-ref-name>jdbc/Env4</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
我真的希望能够在environmentproperties文件夹中拥有所需数量的属性文件,然后更新web.xml(和context.xml)文件,为每个环境添加适当的条目。这可能吗。
我见过apachevelocity做循环构造,但不知道是否有maven插件允许我使用它。
谢谢,保罗
1条答案
按热度按时间9gm1akwq1#
我很幸运使用了
stringtemplate
http://www.stringtemplate.org/ 获取模板并渲染它。我使用它来创建基于当前maven版本的docker文件,这样就不必每次发布新jar版本时都更新它们。此插件配置获取此dockerfile:
它呈现
CMD
使用要执行的jar的正确名称。这并不是你想要的,但我用这个策略来做你想做的事。
您可以使用
properties-maven-plugin
在http://www.mojohaus.org/properties-maven-plugin/usage.html