`
mwei
  • 浏览: 121799 次
  • 性别: Icon_minigender_1
  • 来自: 抽象空间
社区版块
存档分类
最新评论

javamake.jar & javamake-ant15.jar

    博客分类:
  • fw
阅读更多
关键词: ant  javamake  增量编译

前一阵子找这两个jar包,baidu来google去,不容易。
发现有些童鞋需要,拿出来共享一下,同时也让搜索引擎快照下。
使用ant版本为1.5(+)。

Ant本身也支持增量编译,不过有两个问题它没有解决好:1、当修改了一个类的时候,与此类有依赖关系的类不会被重新编译,ant只编译了这个修改过的类。2、全局常量类的修改,ant无法定位。  说白了,这两个问题是一个性质的。结果是,开发人员每次编译时都要clean,再compile,cope…导致编译时间过长,每次修改调试都要等待。
   使用第三方的支持javamake,可以解决上述问题。原理是:第一次编译时,javamake把所有class文件的时间戳记录到数据库(一个pdb文件)中,并记录了所有的依赖关系(继承、实现、调用…);之后再编译时,javamake首先到数据库中检查source文件和class文件的时间戳是否一致,不一致的话,将source文件及其依赖关系(别的source文件)编译。
详细见英文原文:http://www.experimentalstuff.com/Technologies/JavaMake/javamake.html

1.如果不知道怎么编写支持增量编译的build.xml,请参考以下网址:
http://www.experimentalstuff.com/Technologies/JavaMake/ant.html
2.如果init中有clean,应该去掉clean,不然javamake的威力没法释放了。
   我是在init中定义一个task:
<taskdef name="javamake" classname="com.sun.tools.javamake.ant.JavaMake">
      <classpath>
           <pathelement location="${classpath.dir}/javamake-ant15.jar"/>
      </classpath>
      <classpath>
           <pathelement location="${classpath.dir}/javamake.jar"/>
      </classpath>
</taskdef>

3.如果在<javamake ... />中设置了verbose="true",那么可以看到每次修改源文件再编译时,javamake具体做了哪些“地下工作”。

[END]:我使用增量编译后,每次等待时间是原来的1/4左右,depending.




分享到:
评论
6 楼 Dancen 2012-08-28  
理想状态下jar包的更新当然不应该去修改其中的方法签名等外部依赖的部分,但有时修改jar中的接口也是难以避免,我们项目已经因此悲剧过,后来都是先clean,再compile。我已经对javamake进行了重新包装,增加了外部jar包的校验。
5 楼 mwei 2012-08-28  
Dancen 写道
javamake可以解决代码之间的依赖问题,但如果调用的是外部jar包中的方法,而jar包更新了怎么办?

首先jar包是编译好的class文件,外部jar包更新,一般接口是不变的,这不会影响自己的代码,如果自己的代码没有变,javamake不会重新编译。只要自己的代码变了,就会增量编译。--请质疑之
4 楼 Dancen 2012-08-27  
javamake可以解决代码之间的依赖问题,但如果调用的是外部jar包中的方法,而jar包更新了怎么办?
3 楼 mwei 2010-08-17  
zhuyanjavaeye 写道
javac不能做增量编译吗?

javac也能做增量编译,有局限,例如:对静态变量(及对静态变量的那些引用类)无法做到增量编译;
2 楼 zhuyanjavaeye 2010-08-12  
不过,还是很感谢你,我已经下载了你的javamake
1 楼 zhuyanjavaeye 2010-08-12  
javac不能做增量编译吗?

相关推荐

    apache-ant-1.7.1-bin.tar

    Ant是一种基于Java的build工具。理论上来说,它有些类似于(Unix)C中的make ,但没有make的缺陷。

    apache-ant-1.9.3-src.tar

    在Java 中应用是平台无关性的,当然不会用平台相关的make脚本来完成这些批处理任务了,ANT本身就是这样一个流程脚本引擎,用于自动化调用程序完成项目的编译,打包,测试等。除了基于JAVA是平台无关的外,脚本的格式...

    ant-1.6.5.jar

    Ant是一个基于Java的,将软件工程的编译、测试、部署等步骤联系在一起并加以自动化的构建工具。与make工具有几分相似,但又优化了一些make工具所具有的缺陷。它可以跨平台运行,使用简单方便。 Ant主要用来编译、...

    apache-ant-1.10.3

    Apache Ant,是一个将软件编译、测试、部署等步骤联系在一起加以自动化的一个工具,大多用于Java环境中的软件开发。由Apache软件基金会所提供。 简介 用户群:大多数的Java设计都被用于管理大量信息流,例如纽约州就...

    新版Android开发教程.rar

    Note: Note: Note: Note: If JDK is already installed on your development computer, please take a moment to make sure that it meets the version requirements listed above. In particular, note that some ...

    swingx包

    HOME\lib directory. - for Ant 1.6.x and above, make sure ant-junit.jar is in your ANT_HOME\lib directory, and that jUnit.jar is either in that directory as well OR listed on your CLASSPATH. &lt;br&gt;...

    tomcat-8_API

    * catalina-ant.jar (Tomcat Catalina Ant tasks) * catalina-ha.jar (High availability package) * catalina-storeconfig.jar (Generation of XML configuration from current state) * catalina-tribes.jar ...

    tomcat-7_API_帮助文档

    * catalina-ant.jar (Tomcat Catalina Ant tasks) * catalina-ha.jar (High availability package) * catalina-tribes.jar (Group communication) * ecj-4.4.jar (Eclipse JDT Java compiler) * el-api.jar (EL 2.2 ...

    nb-javac:nb-javac是Apache NetBeans Java编辑器使用的Java编译器插件

    关于nb-javac! “ nb-javac”是OpenJDK“ javac”的补丁版本,即Java编译器。 长期以来,这一直是NetBeans的一部分,它提供了专门针对Java编辑器的... $ ant -f ./make/langtools/netbeans/nb-javac clean jar 两个jar

    phonegap-phonegap-1.6.0-0-g66780d6.zip_66780,com_PhoneGap 1.6_co

    Apache Ant, a program that automates software build processes (similar to make ) 6. Ruby, a programming language 7. Git Bash, an alternative command program for Windows environments (Windows only)

    Kripki:PPKE-ITK 密码学将于 2015 年提交

    您将需要和 :下载并安装它们。... 如果没有安装 ,使用ant get-ivy命令安装; 然后使用ant resolve命令安装依赖项。 然后: 打开ant build命令(客户端和服务器) 从服务器和客户端(在 dist 目录... ant make-runscr

    WekaUsingScavenger

    #Weka和清道夫 Weka的weka.experiment.CrossValidationResultProducer的版本,它使用... ant make_package -Dpackage=2015.08.31 ###从命令行运行 对于以下命令,类路径应包含dist / &lt;version&gt; / &lt;version&gt; .jar和lib /

    dbperf:hsqldb数据库查询性能优化

    程序运行说明程序代码已经全部放在github上,仓库地址:下面的内容与在仓库中的README.md相同准备Linux操作系统,预先安装了ant, jdk(8以上)注意安装jdk之后需要在.bashrc文件中设置JAVA_HOME环境变量本地下载了FTP...

    jive.chm

    系统缺陷 1 Jive的硬伤 2 查询的Bug &lt;br&gt; 安装配置 1 Jive Forum KB的license 2 MakeWAR.jar文件中的MakeWAR.class源代码MakeWAR.java 3 为Jive写的补丁程序patcher....

    初级java笔试题-RMG-Java:RMG的Java版本:React机制生成器

    初级java笔试题RMG-Java - React机制生成器 注意 这是 RMG 的 Java 版本。 它不再被积极开发。 我们建议改用用 Python 编写的最新版 RMG,可在此处找到: 描述 RMG(Java 版)是一个自动化学React机理生成器,它利用...

    为 Ibatis 2.3.4 构建增强的 Apache Ibator 实体类生成工具

    Ibator can run as a standalone JAR file, or as an Ant task, or as an Eclipse plugin. 欲了解更多详细说明,敬请移步:http://blog.csdn.net/DavidHsing/archive/2010/07/12/5729027.aspx

    maven_practice2

    简直太简单了,使用Maven入门Java应用程序带有香草Maven文件的骨架Java项目,使用最少的选项即可入门。笔记该项目包含一个gitignore,它将停止将大多数IDE特定文件以及Java构建文件检入源代码管理。 通常,仅包含...

    FBReaderAPI:带有所有FBReader库附加组件的接口的通用代码

    FBLibrary接口如何编译在命令行中输入: ./make.sh dir ,其中“ dir”是放置jar库的目录。 或只输入: ant jar并且库jar将放置在/ bin目录中。

    apache-tomcat-7.0.82

    WAR是Sun提出的一种Web应用程序格式,与JAR类似,也是许多文件的一个压缩包。这个包中的文件按一定目录结构来组织:通常其根目录下包含有Html和Jsp文件或者包含这两种文件的目录,另外还会有一个WEB-INF目录,这个...

Global site tag (gtag.js) - Google Analytics