使用 Maven 或 Ant 想要从 xml 文件中获取值并使用目标/配置文件将其替换为变量。
properties.xml 看起来像这样:
<?xml version="1.0" encoding="UTF-8"?>
<variables>
<variable id="Title">
<book.01>abc</book.01>
<book.02>def</book.01>
<ebook.03>ghi</book.01>
<ebook.04>klmn</book.01>
</variable>
<variable id="Author">
<book.01>john</book.01>
<book.02>jack</book.01>
<ebook.03>simi</book.01>
<ebook.04>laura</book.01>
</variable>
</variables>
如果我选择“book.01”作为目标或配置文件,则使用 Maven 或 Ant,我想将 Template.xml 中的值替换为 properties.xml 中的“book.01”值
当前 Template.xml 如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<projects>
<mbean code="org.jboss.naming.JNDIBindingServiceMgr"
name="abc.jndi:name=JNDIProp">
<attribute name="myprop" serialDataType="jbxb">
<jndi:bindings
xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
xmlns:jndi="urn:jboss:jndi-binding-service:1.0"
xs:schemaLocation="urn:jboss:jndi-binding-service:1.0 resource:jndi-binding-service_1_0.xsd">
<jndi:binding
name="Title">
<jndi:value type="java.lang.String">
@book.01@
</jndi:value>
</jndi:binding>
<jndi:binding name="Author">
<jndi:value type="java.lang.String">
@book.01@
</jndi:value>
</jndi:binding>
</jndi:bindings>
</attribute>
</mbean>
<projects>
预期输出为:book.01.xml
<?xml version="1.0" encoding="UTF-8"?>
<projects>
<mbean code="org.jboss.naming.JNDIBindingServiceMgr"
name="abc.jndi:name=JNDIProp">
<attribute name="myprop" serialDataType="jbxb">
<jndi:bindings
xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
xmlns:jndi="urn:jboss:jndi-binding-service:1.0"
xs:schemaLocation="urn:jboss:jndi-binding-service:1.0 resource:jndi-binding-service_1_0.xsd">
<jndi:binding
name="Title">
<jndi:value type="java.lang.String">
abc
</jndi:value>
</jndi:binding>
<jndi:binding name="Author">
<jndi:value type="java.lang.String">
john
</jndi:value>
</jndi:binding>
</jndi:bindings>
</attribute>
</mbean>
<projects>
但是想知道当我想运行“book.02”或“ebook.03”配置文件/目标的值时应该如何使用相同的模板。
注意:maven 配置文件名称/ant 目标名称将与 template.xml@varaible@
名称的变量匹配。示例:mvn -P book.01
或ant ebook.01
更新:
在@Ken xsl 样式表文件的帮助下,我使用了 xml-maven 插件来转换 template.xml。使用 maven-replacer-plugin 我能够更改@book.01@
template.xml 中的变量并将其替换为配置文件名称。
例子:
<profile>
<id>book.02</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<build>
<plugins>
<plugin>
<groupId>com.google.code.maven-replacer-plugin</groupId>
<artifactId>replacer</artifactId>
<executions>
<execution>
<phase>prepare-package</phase>
<goals>
<goal>replace</goal>
</goals>
</execution>
</executions>
<configuration>
<ignoreMissingFile>true</ignoreMissingFile>
<file>template.xml</file>
<outputFile>
target/template.xml
</outputFile>
<regex>false</regex>
<token>@book.01@</token>
<value>@book.02@</value>
</configuration>
</plugin>
</plugins>