今天有人问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天相比,这个概率还是比较低的。
分享到:
相关推荐
之前用maven开发,每修改一次代码都需要重新编译发布一次,于是后面我用了jrebel实现热编译,这样开发就方便了很多,后面开发都只需要编译一次,有代码或者页面改动,都会自动去编译,不用maven再重新编译发布一次,...
如果你使用的是IDE,如IntelliJ IDEA或Eclipse,它们通常有内置的Maven支持,可以配置成使用IDE的构建优化功能,比如增量编译。 通过以上这些策略,可以显著提升Maven多模块项目的编译速度,使开发流程更加流畅...
Maven的增量构建 如果未检测到更改,此Maven扩展可以跳过模块的整个执行。 重要限制和假设 需要Maven 3.1.2+ incr-build并不关心Maven生命周期阶段。 它在mvn clean和mvn validate之间没有区别。 这使得incr-build...
Java的增量编译通常与构建工具如Maven、Gradle或IntelliJ IDEA等集成。这些工具通过识别源代码的改动,确定需要重新编译的部分,然后仅执行必要的编译任务。这样,开发人员可以更快地获得反馈,提高工作效率。 ...
增量 Maven 编译 样本输出 [INFO] --- takari-lifecycle-plugin:1.10.2:compile (default-compile) @ maven-incremental-compilation --- [INFO] Performing incremental build [INFO] Compiling 2 sources to /...
【自动打包】:自动打包是指通过脚本或工具自动化执行构建过程,将源代码编译、测试并通过打包工具(如Maven的`mvn package`命令)生成可部署的文件(如JAR、WAR)。这大大减少了手动操作的时间,降低了错误率,尤其...
此外,Eclipse还可以自动根据POM.xml配置进行增量编译。 **5. 依赖管理** Maven的依赖管理功能在Eclipse中得到体现,开发人员可以通过Maven仓库自动下载项目所需的库文件。Eclipse的“Dependency Hierarchy”视图...
本文将详细探讨如何通过Shell脚本和Git实现基于Maven的Java项目的增量部署。 首先,让我们理解核心组件的作用: 1. **Git**:这是一个分布式版本控制系统,用于跟踪对代码库的修改。在增量部署过程中,Git帮助我们...
3. **构建与清理**:通过右键菜单,开发者可以执行`mvn install`、`mvn clean`等命令,实现编译、测试、打包、部署等构建流程,同时支持增量构建,提高开发效率。 4. **生命周期与构建阶段**:Maven定义了一套标准...
Maven插件则是Maven生态系统中的一个重要组成部分,它们提供了各种功能,例如编译、测试、打包、部署等。在本场景中,我们关注的是"Maven代码生成"插件,特别是"MyBatis Generator"。 MyBatis Generator(MBG)是一...
- **增量编译**:通过智能地识别修改过的源文件,2.3.2版本可以实现增量编译,提高构建效率。 3. 使用示例 在pom.xml文件中,我们可以这样配置Maven Compiler Plugin 2.3.2: ```xml <groupId>org.apache....
增量编译 svnkit接口(svn操作web接口) 全流程使用案例 [toc] 说在最前面的话 本人只是一枚从事运维6年的老兵,从今年年初一直在构建自动化运维平台,从持续交互着手,流程最开始的就是代码的抽包编译(这里说的java)...
- **构建过程**:执行编译、测试等操作,确保只有变动的文件被处理。 - **打包**:根据找出的改动,生成一个包含这些改动的增量包。这可能需要自定义脚本或者利用构建工具(如 Maven 或 Gradle)的特定功能。 5. ...
在编写代码时,Maven 会实时增量编译。 四、添加依赖 Jar 包 要添加依赖 Jar 包,需要按照以下步骤进行: 1. 右键点击“pom.xml”,然后选择“Maven”>“添加依赖”。 2. 在“添加依赖”对话框中,输入要导入的 ...
- **生命周期管理**: Maven具有声明式的项目对象模型和可扩展的插件机制,可以方便地管理项目的构建生命周期,包括编译、测试、打包、部署等。 #### 配置Tomcat6服务器 - **服务器配置**: 文档中提到需要配置Tomcat...
- **版本管理**:Maven有自己的版本定义规则,包括主版本号、次版本号和增量版本号等。 - **构建支持**:Maven支持多种应用程序类型的构建,如JAR、WAR等,为每种类型提供了一套构建规则和工具集。 - **输出物管理**...
为了优化性能,可以考虑以下策略:只在保存文件时触发编译,或者启用增量编译,让MyEclipse仅编译修改过的部分,而非整个项目。 6. **与其他工具的集成** MyEclipse还可以与持续集成工具如Jenkins、Git等配合使用...
- 安装到本地Maven仓库:将`xpand-canal`中的jar包通过命令行工具或者相关工具(如Maven的`install:install-file`指令)安装到你的本地Maven仓库,这样在项目中就能通过Maven依赖管理直接引用Canal。 - 引入依赖:...
增量式打包方式在Eclipse/SVN中的一键式打包解决方案 在软件开发过程中,项目的不停更新和修改是非常常见的,...同时,使用纯Java代码实现增量式打包可以避免项目中有任何编译错误的java代码,並且配置简单,耗时少。