如何在 java 1.7 上 运行 JDiff

How to run JDiff on java 1.7

我有一个使用 java 1.7 功能的 java 项目,我想用这个项目的两个版本生成一个 JDiff 文档,我的蚂蚁 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>

这一切都在 build.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 差异报告。