Ant:如果classpath jars已更改但源尚未更改,如何强制进行Java编译

我有以下用例:

我有一个
java项目(myProj),它使用来自不同项目的common.jar(常见).我希望javac ant任务能够正常工作,即使my.jar的源代码没有改变,如果common.jar已经改变了(因为myProj的源代码依赖于它,现在可能无效).

我有一个任务,它将common.jar从一个中心位置复制到myProj lib,如果它已经改变了,我可以使用它设置一个属性是否“强制”编译,以便结束.

我不知道怎么(或者如果)我可以告诉javac任务尝试编译呢?我不想更改myProj的源(或时间戳),以便任务开始.

摘自ant build.xml文件:

<path id="project.class.path">  
<pathelement location... />  
...  
<fileset dir="lib" includes="**/*.jar" />  
</path>  
<target name="copyLibs" >  
<copy file="${central.loc}/common.jar" todir="lib" />  
...  
</target>  
<target name="javac" >  
<javac srcdir="src" includes="**" excludes=... >  
<classpath refid="project.class.path"/>  
</javac>  
</target>  

提前致谢,
以太

最佳答案 在javac之前使用delete任务来清理旧的编译类:

通常,如果依赖类的API没有更改,则不应重新编译java类.

此外,我建议使用maven,因为它更优雅地处理依赖.

点赞