我有以下用例:
我有一个
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,因为它更优雅地处理依赖.