`
fanrey
  • 浏览: 254953 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

maven增量编译的思考

 
阅读更多
今天有人问maven增量编译的事情, 思考了一下, 有下面心得:

1. Maven缺省的就是增量编译.
2. Java的项目通常正式的build不能用增量编译, 原因很简单, maven和ant都不支持"减量编译": 如果删除.java文件, 编译结果.class文件将不会被删除, 而java支持运行期动态加载, 这样被删除的文件的class也可能在运行时被使用, 结果可能是灾难性的. 所以我们的build都是用"mvn clean install", 先清除再编译. 不过如果确定没有删除文件或者被删除文件的.class文件不会被使用, 我个人觉得可以用增量编译(mvn install).
3. 如果想加快编译, 可以考虑这几个方面:
   1) 忽略maven生命周期中的某些阶段。比如:mvn install -Dmaven.test.skip=true 跳过TestCase检验,否则在install时会运行TestCase测试;
   2) 修改pom文件来删减maven plugin的执行。 比如从pom中去掉打source jar的plugin, 这样最后build的结果不包含源代码。
   3) 冒险用增量编译。 过去一年里我们项目影响增量编译的删掉的文件大概10多个,主要源于需求变化和代码重构。和一年365天相比,这个概率还是比较低的。
分享到:
评论
3 楼 soho00147 2011-11-17  
我的想法是在这个插件的基础上编写更加强大的插件,扫描目录时发现有变动时,对变动部分在jar包或者war包中做更新,删除或添加操作,并编译新文件和修改过的文件打入jar包或者war包。
2 楼 soho00147 2011-11-17  
如果没有变动则 maven install


使用时,直接对整个项目maven install 就可以了
1 楼 soho00147 2011-11-17  
可以参考这个插件,这个插件是对maven项目以module级别来编译,当发现某个module有变动时,会对这个module调用maven clean install

http://maven-incremental-build.java.net/site/index.html

这个需要将项目很好的划分成小的module。

使用时,设置repo库为   http://repo1.maven.org/maven2

相关推荐

    maven+jrebel热编译

    之前用maven开发,每修改一次代码都需要重新编译发布一次,于是后面我用了jrebel实现热编译,这样开发就方便了很多,后面开发都只需要编译一次,有代码或者页面改动,都会自动去编译,不用maven再重新编译发布一次,...

    如何提高Maven多模块项目编译速度.docx

    如果你使用的是IDE,如IntelliJ IDEA或Eclipse,它们通常有内置的Maven支持,可以配置成使用IDE的构建优化功能,比如增量编译。 通过以上这些策略,可以显著提升Maven多模块项目的编译速度,使开发流程更加流畅...

    incr-build-plugin:Maven的增量构建

    Maven的增量构建 如果未检测到更改,此Maven扩展可以跳过模块的整个执行。 重要限制和假设 需要Maven 3.1.2+ incr-build并不关心Maven生命周期阶段。 它在mvn clean和mvn validate之间没有区别。 这使得incr-build...

    增量编译器:支持增量构建的Java代码编译器

    Java的增量编译通常与构建工具如Maven、Gradle或IntelliJ IDEA等集成。这些工具通过识别源代码的改动,确定需要重新编译的部分,然后仅执行必要的编译任务。这样,开发人员可以更快地获得反馈,提高工作效率。 ...

    maven-incremental-compilation

    增量 Maven 编译 样本输出 [INFO] --- takari-lifecycle-plugin:1.10.2:compile (default-compile) @ maven-incremental-compilation --- [INFO] Performing incremental build [INFO] Compiling 2 sources to /...

    基于Maven+SVN自动打包

    【自动打包】:自动打包是指通过脚本或工具自动化执行构建过程,将源代码编译、测试并通过打包工具(如Maven的`mvn package`命令)生成可部署的文件(如JAR、WAR)。这大大减少了手动操作的时间,降低了错误率,尤其...

    eclipse-maven内置

    此外,Eclipse还可以自动根据POM.xml配置进行增量编译。 **5. 依赖管理** Maven的依赖管理功能在Eclipse中得到体现,开发人员可以通过Maven仓库自动下载项目所需的库文件。Eclipse的“Dependency Hierarchy”视图...

    通过Shell脚本,结合Git实现增量部署基于Maven的Java项目.zip

    本文将详细探讨如何通过Shell脚本和Git实现基于Maven的Java项目的增量部署。 首先,让我们理解核心组件的作用: 1. **Git**:这是一个分布式版本控制系统,用于跟踪对代码库的修改。在增量部署过程中,Git帮助我们...

    maven插件for eclipse

    3. **构建与清理**:通过右键菜单,开发者可以执行`mvn install`、`mvn clean`等命令,实现编译、测试、打包、部署等构建流程,同时支持增量构建,提高开发效率。 4. **生命周期与构建阶段**:Maven定义了一套标准...

    maven 代码生成(maven插件)

    Maven插件则是Maven生态系统中的一个重要组成部分,它们提供了各种功能,例如编译、测试、打包、部署等。在本场景中,我们关注的是"Maven代码生成"插件,特别是"MyBatis Generator"。 MyBatis Generator(MBG)是一...

    maven-compiler-plugin-2.3.2

    - **增量编译**:通过智能地识别修改过的源文件,2.3.2版本可以实现增量编译,提高构建效率。 3. 使用示例 在pom.xml文件中,我们可以这样配置Maven Compiler Plugin 2.3.2: ```xml <groupId>org.apache....

    java8源码-JavaCompile:Javacompile是一个自动增量/全量编译java的api接口应用。包含以下特性:全量编译增量编译

    增量编译 svnkit接口(svn操作web接口) 全流程使用案例 [toc] 说在最前面的话 本人只是一枚从事运维6年的老兵,从今年年初一直在构建自动化运维平台,从持续交互着手,流程最开始的就是代码的抽包编译(这里说的java)...

    Jenkins增量更新部署

    - **构建过程**:执行编译、测试等操作,确保只有变动的文件被处理。 - **打包**:根据找出的改动,生成一个包含这些改动的增量包。这可能需要自定义脚本或者利用构建工具(如 Maven 或 Gradle)的特定功能。 5. ...

    Maven2的Eclipse插件安装和使用.doc

    在编写代码时,Maven 会实时增量编译。 四、添加依赖 Jar 包 要添加依赖 Jar 包,需要按照以下步骤进行: 1. 右键点击“pom.xml”,然后选择“Maven”>“添加依赖”。 2. 在“添加依赖”对话框中,输入要导入的 ...

    IntelliJ IDEA 12创建Maven管理的Java Web项目

    - **生命周期管理**: Maven具有声明式的项目对象模型和可扩展的插件机制,可以方便地管理项目的构建生命周期,包括编译、测试、打包、部署等。 #### 配置Tomcat6服务器 - **服务器配置**: 文档中提到需要配置Tomcat...

    Maven安装配置全教程

    - **版本管理**:Maven有自己的版本定义规则,包括主版本号、次版本号和增量版本号等。 - **构建支持**:Maven支持多种应用程序类型的构建,如JAR、WAR等,为每种类型提供了一套构建规则和工具集。 - **输出物管理**...

    myeclipse添加自动发编译工具

    为了优化性能,可以考虑以下策略:只在保存文件时触发编译,或者启用增量编译,让MyEclipse仅编译修改过的部分,而非整个项目。 6. **与其他工具的集成** MyEclipse还可以与持续集成工具如Jenkins、Git等配合使用...

    xpand-canal依赖,已经编译好,解压放入maven仓库即可引入项目中

    - 安装到本地Maven仓库:将`xpand-canal`中的jar包通过命令行工具或者相关工具(如Maven的`install:install-file`指令)安装到你的本地Maven仓库,这样在项目中就能通过Maven依赖管理直接引用Canal。 - 引入依赖:...

    打包增量包方式.docx

    增量式打包方式在Eclipse/SVN中的一键式打包解决方案 在软件开发过程中,项目的不停更新和修改是非常常见的,...同时,使用纯Java代码实现增量式打包可以避免项目中有任何编译错误的java代码,並且配置简单,耗时少。

Global site tag (gtag.js) - Google Analytics