`
mwei
  • 浏览: 123906 次
  • 性别: 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不能做增量编译吗?

相关推荐

    ant-apache-oro.jar ant-apache-regexp.jar ant-apache-resolver.jar

    标题中的"ant-apache-oro.jar", "ant-apache-regexp.jar", 和 "ant-apache-resolver.jar" 是三个与Apache Ant相关的Java库文件。Apache Ant是一个由Apache软件基金会开发的Java构建工具,它广泛用于自动化Java项目的...

    mysql-connector-java-6.0.6.jar

    1. **手动添加**:将jar包复制到项目的类路径(classpath)下,例如`lib`目录,然后在构建脚本(如Ant或Maven)中配置相应的库路径。 2. **Maven依赖**:如果项目使用Maven构建,可以在`pom.xml`文件中添加如下依赖...

    apache-ant-1.9.9-bin.tar.gz 【适用于linux系统】

    Ant是Java生态系统中的重要组成部分,它的设计目标是替代传统的Make工具,提供跨平台的构建解决方案。 在“apache-ant-1.9.9-bin.tar.gz”压缩包中,包含了Apache Ant 1.9.9版本的所有必要文件,这是针对Linux系统...

    ant-1.5.1.jar.zip

    Ant是Apache软件基金会的一个开源项目,它是一个基于Java的构建工具,类似于Unix的make,但更面向Java环境。标题中的"ant-1.5.1.jar.zip"指的是Ant 1.5.1版本的库文件,它已经被压缩为ZIP格式,方便用户下载和使用。...

    ant-1.5.jar.zip

    在实际使用中,Ant 1.5.jar可以通过Java的-classpath或-cp参数添加到JVM中,然后通过`java org.apache.tools.ant.Main`命令启动Ant。而构建过程则由`ant`命令触发,根据build.xml文件进行。 此外,Ant 1.5还支持...

    ant-javamail-1.6.jar.zip

    Ant是Apache软件基金会的一个项目,它是一个基于Java的构建工具,类似于Unix的Make,但更符合Java的特性。JavaMail则是用于处理电子邮件的Java API,提供了丰富的功能,可以方便地进行邮件发送、接收及管理。本文将...

    apache-ant-1.6.5-bin

    - **任务(Tasks)**:Ant的核心,如`javac`用于编译Java源码,`jar`用于打包JAR,`copy`用于文件复制等。 **3. 使用Ant-1.6.5** - **安装**:解压`apache-ant-1.6.5-bin`压缩包到合适的位置,设置环境变量`ANT_...

    ant.jar wsdl4j-1.5.1.jar jaxrpc.jar jasper-jdt.jar

    Ant不仅支持Java项目,也可以处理其他语言的构建任务,是Java世界中替代Make的强大工具。它允许跨平台的构建,并且可以与各种版本控制系统和构建生命周期工具集成。 2. **wsdl4j-1.5.1.jar**:WSDL4J是Web Services...

    ant-zip-1.7.1.jar.zip

    标题中的"ant-zip-1.7.1.jar.zip"是一个压缩文件,它包含了名为"ant-zip-1.7.1.jar"的Java档案(JAR)文件以及"ant.license.txt"的许可文件。这个JAR文件是Apache Ant项目的一部分,用于处理ZIP归档操作。 Apache ...

    apache-ant-1.7.1-bin.tar

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

    ant-eclipse.jar.zip

    Ant是Apache软件基金会的一个项目,它是一个基于Java的构建工具,类似于Make,但它是用Java语言编写,并且更适用于Java环境。Eclipse是一个广泛使用的开源集成开发环境(IDE),它支持多种编程语言,包括Java。 在...

    ant-launcher-1.7.1.jar.zip

    Ant是Java世界中最常用的构建工具之一,类似于其他语言中的Make或Gradle。 **ant-launcher** 是Apache Ant项目的一部分,它提供了启动Ant的基础设施。`ant-launcher.jar`文件是运行Ant命令行工具所必需的。它包含了...

    ant-contrib-1.0.jar.zip

    在Java开发环境中,Apache Ant是一个广泛应用的自动化构建工具,它类似于Make,但基于Java,遵循XML规范,提供了跨平台的构建脚本。Ant Contrib是针对Ant的一个扩展库,为Ant任务提供了额外的功能和便利。"ant-...

    ant-jme.jar.zip

    在Java项目中,Ant通常作为构建脚本的工具,类似于其他语言中的Make或Gradle。 "ant-jme.jar"是Ant的一个特定版本或模块,专为Java Micro Edition (JME)定制。JME,以前被称为Java 2 Micro Edition,是Java平台的一...

    ant-jakarta-regexp.jar.zip

    Apache Ant是一个基于Java的构建工具,其设计目标是替代Make或其他类似的构建工具,以实现跨平台的项目构建。Ant通过XML定义构建过程,使得构建脚本易于理解和维护。而Jakarta Regexp是Apache软件基金会的一个项目,...

    ant-contrib-1.0b1.jar.zip

    标题中的"ant-contrib-1.0b1.jar.zip"是一个包含特定版本(1.0b1)的"ant-contrib"库的压缩文件,其格式为ZIP,并且内部包含了一个JAR(Java Archive)文件。"ant-contrib"是Apache Ant的一个扩展库,提供了额外的...

    ant1.9包下载

    Ant 1.9.x版本中包含了丰富的内置任务,如javac用于编译Java源码,jar用于创建JAR文件,copy用于文件复制,以及clean用于清理构建产物等。此外,Ant还允许开发者自定义任务,以适应项目特有的需求。 在Ant的配置...

    ant-junit-1.6.5.jar.zip

    《Ant与JUnit结合:深入解析ant-junit-1.6.5.jar.zip》 在Java开发领域,Ant和JUnit是两个不可或缺的工具。Ant是一种基于Java的构建工具,用于自动化项目构建过程,如编译、打包、测试等任务。JUnit则是Java编程...

    ant-1.6.5.jar

    总之,Apache Ant的`ant-1.6.5.jar`版本是用于自动化Java项目构建的重要工具,它可以创建JAR和ZIP文件。当遇到问题如“为什么资源分不能选0”时,应检查Ant的任务配置和文档,以了解可能的限制或要求。理解Ant的XML...

Global site tag (gtag.js) - Google Analytics