简介
XMLTask是Ant外部任务,它提供了强大的XML编辑工具,主要用于在构建/部署过程中创建和修改XML文件。
与Ant的<replace>任务不同,XMLTask使用XPath提供识别XML文档各个部分的能力,并且还能在这些位置插入、删除和复制XML。用户可以使用XPath简单地识别XML元素或者用谓词(predicate)执行更复杂的逻辑(如“查找有‘Y’属性的名为‘X’的元素……”)。
官方网站:http://www.oopsconsultancy.com/software/xmltask/

可以从官网下载xmltask.jar, 官网上也有使用说明。
maven项目使用XMLTask例子
- 把xmltask.jar放进工程里面

- 通过maven-antrun-plugin插件来运行xmltask
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>mybatis-generator</artifactId>
<name>mybatis-generator</name>
<description>Mybatis Code gen project for Spring Boot</description>
<properties>
<java.version>11</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.4.0</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.1</version>
<executions>
<execution>
<phase>clean</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<tasks>
<ant antfile="build.xml" target="main">
</ant>
</tasks>
</configuration>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>oopsconsultancy</groupId>
<artifactId>xmltask</artifactId>
<version>1.16</version>
<scope>system</scope>
<systemPath>${basedir}/lib/xmltask.jar</systemPath>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
</project>
- Build.xml 都是xmltask的语法可以参考官网。
<project name="HelloWorld" default="run" basedir=".">
<taskdef name="xmltask" classname="com.oopsconsultancy.xmltask.ant.XmlTask"/>
<target name="run">
</target>
<target name="main">
<xmltask todir="${basedir}/source2">
<fileset dir="${basedir}/source1/">
</fileset>
<insert path="/mapper">
<![CDATA[
<resultMap id="CommonResultMap"/>
]]>
</insert>
<copy path="/mapper/resultMap[@id='BaseResultMap']/@type" attrValue="true" buffer="entityName"/>
<attr path="/mapper/resultMap[@id='CommonResultMap']" attr="type" buffer="entityName"/>
<insert path="/mapper/resultMap[@id='CommonResultMap']" position="under" buffer="stepBuffer2" />
<copy path="/mapper/resultMap/result" buffer="stepBuffer1" append="true"/>
<insert path="/mapper/resultMap[@id='CommonResultMap']" position="under" buffer="stepBuffer1" />
<copy path="/mapper/resultMap/id" buffer="stepBuffer2" append="true"/>
</xmltask>
</target>
</project>
- mvn run

总结
XMLTask是比标准<replace>或文件创建任务强大得多的工具,使用它可以维护、创建和修改XML文件,同时还不必担心会使用XSLT。有许多XMLTask的功能这里没有介绍,关于它的更多信息和示例可以访问其主页(http://www.oopsconsultancy.com/software/xmltask)