简介
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)