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

时间:2010-12-26 09:41:12

标签: java ant jar classpath javac


我有以下用例:
我有一个java项目(myProj),它使用来自不同项目的common.jar(常见)。我希望javac ant任务能够工作,即使myProj的源代码没有改变如果 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>  

提前致谢,
以太

1 个答案:

答案 0 :(得分:2)

delete之前使用javac任务来清理旧的编译类:

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

另外我建议使用maven,因为它可以更优雅地处理依赖关系。