Ant内置任务之depend

  • Post author:
  • Post category:其他


一、概述

depend是Ant内置任务,用于管理java类文件依赖。depend的工作原理是确定相对于源哪些类是过期的,并且删除所有依赖于过期类的其他类文件。depend通过分析传递给它的所有类文件来确定类的依赖关系。depend不以任何方式解析源代码,而是依赖于通过编译器编码到类文件中的类引用,这通常比解析java源文件快。因为类的依赖关系只在类本身改变时才会变化,所以depend可以用来缓存依赖信息。只有在类文件变化时才会重新分析它们的依赖关系。当发现了所有的类依赖项,就会反转此关系来确定每个类有哪些其他类依赖于它。要注意的是有些依赖关系是无法检测的:1)如果java编译期优化了依赖关系,在没有依赖的情况下可以有源依赖项。2)非公共类有两个问题,首先类文件不能关联源文件(以后可能会解决类文件中使用源文件属性的问题);其次,当非公有类丢失时,无论是依赖还是编译任务都不能检测。depend形成了一个隐式文件集,并且支持

fileset

的大多数属性,以及include、exclude、

patternset

嵌套元素。classpath属性也可以通过嵌套classpath元素来设置。

二、属性

srcDir:源所在目录,depend会检查这个目录来确定哪些类过期了。

destDir:要分析的类文件的根目录。如果不设置默认于srcDir相同。

cache:一个可以存储和检索依赖信息的目录。如果不设置,就不使用缓存。

closure:是否只考虑直接的类类关系还是也考虑间接的类类关系,假设有三个类,A依赖于B,B依赖于C,当C类过期时,如果closure为false,只会删除B类,如果closure设置为true,A类也会被删除。通常直接关系就足够了。默认为false。

dump:如果为true,依赖信息会写入debug级别的日志中。

classpath:如果设置此属性,depend会对这个类路径中jar和类进行依赖关系检查。任何依赖于此类路径中的元素且比该元素旧的类都将被删除。例如,当构建一个工具包时,希望确保这个jar中过期的类能够重新构建。不要在classpath中配置你不想改变的jar,比如,JDK运行时jar或者第三方jar,因为这样会减慢依赖项的检查速度。

warnOnRmiStubs:标记禁止警告类似rmic生成的存根/骨架类的没有.java源文件的文件。在进行rmi开发时很有用,默认为true。

三、简单示例

<project>
	<depend srcdir="trans\src\main\java\com\run\ayena\trans\common;trans\src\main\java\com\run\ayena\trans\config" 
			destDir="trans\bin" 
			cache="dependencies" />
</project>



版权声明:本文为asty9000原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。