我有一个使用 java 1.7 功能的 Java 项目,我想生成一个包含该项目的两个版本的 JDiff 文档,我的 ant build.xml是这样的:
<?xml version="1.0" encoding="UTF-8"?>
<project name="jdiff" default="jdiff_report" basedir=".">
<target name="jdiff_report" depends="">
<property name="JDIFF_HOME" value="/Users/Desktop/diffSource/jdiff-1.1.1" />
<taskdef name="jdiff" classname="jdiff.JDiffAntTask" classpath="${JDIFF_HOME}/antjdiff.jar" />
<jdiff destdir="./" verbose="off" stats="off" docchanges="on">
<old name="Project.previous">
<dirset dir="/Users/Desktop/diffSource/docs/old"
includes="com/**"/>
</old>
<new name="Project.current">
<dirset dir="/Users/Desktop/diffSource/docs/new"
includes="com/**"/>
</new>
</jdiff>
</target>
</project>
这一切都在构建中.xml。但是当我运行ant
时,我收到了以下日志消息:
warning: [options] bootstrap class path not set in conjunction with -source 1.5
[Javadoc for Project.previous] /Users/Desktop/diffSource/docs/old/com/java/A/B.java:194: error: diamond operator is not supported in -source 1.5
由于存在错误,我无法获得相应的 java 类的 xml 供 JDiff 进行比较。我已经看到jdiff
不接受target
属性,那么我如何告诉 ant 使用 java 1.7 来完成此任务呢?
JDiff Ant 任务似乎支持一个 source
属性,该属性为特定版本的 Java 配置任务。例如:
<jdiff destdir="./" verbose="off" stats="off" docchanges="on" source="1.7">
...
</jdiff>
在上面的例子中,source="1.7"
配置了JDiff,以便它可以处理Java 1.7代码。
如果你正在使用maven存储库,你可以使用spf4j-jdiff-maven-plugin
您可以通过执行以下命令轻松地从 Ant 使用它:
<exec executable="java">
<arg value="-jar"/>
<arg value="spf4j-jdiff-maven-plugin-8.5.6-uber.jar"/>
<arg value="-gId"/>
<arg value="artfGroupId"/>
<arg value="-aId"/>
<arg value="artifactId"/>
<arg value="-fromVersion"/>
<arg value="1.0"/>
<arg value="-toVersion"/>
<arg value="3.0"/>
<arg value="-o"/>
<arg value="target/destination"/>
</exec>
它将在你从 maven 存储库指定的版本之间生成 API 差异报告。