问题标签 [incremental-build]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
gradle - 在一项任务中执行多个命令而不中断增量构建
我们使用 gradle 增量构建并希望运行两个命令(理想情况下来自一个任务)。这里的解决方案之一可以让两个命令运行......但是它破坏了增量构建......它看起来像:
如果运行单个命令并且增量构建正在运行,则任务看起来与此类似,似乎有所不同的是workingDir
:
到目前为止,最好的选择是创建 3 个任务,一个用于我要运行的每个 cmdline 任务,第三个用于对它们进行分组,这看起来很脏。
问题是:有没有办法在一个任务中运行两个或多个命令而增量构建仍然有效?
parameter-passing - Datastage 增量计费
我们想在 DataStage 中执行增量加载(在并行环境中)。只加载前一次加载和新加载之间的增量(用于创建、更新、删除 DWH 中的记录)。
我们希望存储上次加载期间恢复的最后一个密钥,以便能够在新加载时从下一条记录重新启动请求。
我们已经成功地使用了一个参数来过滤运行时的 SQL 负载查询。不幸的是,我们还没有找到检索最后一个键(max (Key) - Aggregator?)并将其存储在此参数中的可能性。
使用哪个阶段,在同一个并行作业中输出单个值,然后存储到参数?
有任何想法吗 ?
谢谢你的帮助。
tfs - 如何调整 TFS 以选择构建代理以实现尽可能小的增量构建
假设 TFS 增量构建定义和构建代理 BA1 和 BA2。假设最后两个执行的构建是针对构建代理 BA1 上的分支 BR1 中的提交 C1 和构建代理 BA2 上的分支 BR2 中的提交 C2。假设BR1和BR2之间的差异很大。
现在为分支 BR2 中的提交 C3 请求一个新的构建。通常 sizeof(C3-C2) << sizeof(C3-C1)。因此,为了获得最少的重新编译量,构建应该由构建 C2 的构建代理执行,即由构建代理 BA2 执行。
不幸的是,这不是 TFS 选择构建代理的方式。是否可以如上所述调整 TFS 构建代理选择?
java - Visual Studio Code 可以增量编译 Java Web 应用项目吗?
我是 Visual Studio Code 的新手。我正在尝试将它与使用 Maven 的现有 Java Web 应用程序项目一起使用。我已经下载了推荐的 Java 扩展,例如Java Extension Pack、 Java 的Maven 和 Java的Tomcat。
在 IntelliJ(我常用的 IDE)中,我可以很快地从一个小的 Java 编辑转到 Tomcat 中的刷新 WAR。如果我编辑一个文件并重新编译项目,它只适用于几个类文件,然后更新一个展开的 WAR 目录。然后,您可以选择使用 Tomcat 重新启动、重新部署或简单地重新加载资源(如 JSP)。这个过程意味着对于大多数更改,我无需等待很长时间即可在 Tomcat 和我的浏览器中看到结果。
相比之下,我在 VS Code 中所知道的只是运行一个 maven 命令来打包一个 WAR。时间太长了。是否有类似上述 IntelliJ 进程的东西,它可以使用 Maven pom.xml 获取库信息,但进行增量/更新构建并将类置于爆炸式战争中?
maven - 如何在大型多模块项目上进行增量 Jenkins Maven 构建
我有一个大型的多模块项目,在 Jenkins 中从 clean 构建大约需要一个小时。
我正在对多模块项目中的所有模块版本使用 ${revision} 对 Maven CI 友好的版本控制,并且我从 Jenkins 传递了类似 -Drevision=${BUILD_NUMBER} 的内容。
这很好用,但是当部署在一个 20 人左右的团队中时效率非常低,每个 Pull Request 都需要一个新的构建。谁愿意每次修改一行代码都要等一个小时?!?
如何使用我的项目结构进行增量构建?
“增量构建”复选框的明显问题是,当我构建更改的模块(例如版本 5)时,它们都将依赖于版本 5 的未更改模块,但实际构建的最后一个版本可能是 1、2、3或 4。
因此,整个多模块项目的 ${revision} 将破坏增量构建
我的另一个问题是我正在使用多个从站,这意味着我不能简单地依赖自上次构建以来未更改的文件系统(相同的 Maven 本地存储库、相同的工作树等)。
为了在不同从站上的构建之间共享未更改的工件,我必须使用 Maven 存储库(例如 Nexus),或者通过 SSH 进行某种文件复制(例如,每个构建传输回 Master,然后再传输到从站)
sonarqube - SonarQube Quality Gate 在增量分析中不起作用?
Sonarqube 与竹子集成在一起,我们使用 bitbucket 作为 SCM。
当我们执行增量分析时,质量门集不起作用,我说得对吗?
gradle - 考虑到添加的文件,对输出目录的增量构建支持
Gradle文档告诉我们:
请注意,如果任务指定了输出目录,则自上次执行以来添加到该目录的任何文件都将被忽略,并且不会导致任务过期。这是因为不相关的任务可以共享一个输出目录而不会相互干扰。如果由于某种原因这不是您想要的行为,请考虑使用 TaskOutputs.upToDateWhen(groovy.lang.Closure)
问题:使用 upToDateWhen 的解决方案如何(以便考虑添加的文件)。主要问题是必须访问构建缓存以检索上次任务运行时的输出目录内容哈希。
c++ - 链接使用不同优化设置编译的目标代码是否安全?
我有一个项目,我用make
它只重新编译更改的文件及其依赖项。有时我添加-O0
到调试中,而大多数代码都是用-O2 -march=native
.
它始终是相同的编译器版本。链接后是否有可能得到两个版本的代码(例如,一个先前内联的其他版本)或常量?
android - Android Studio 缓慢增量构建
我已经通过许多步骤来完善我们的构建系统(这些以及更多)。后来,我阅读了这篇官方博文,声称在 Gradle 3.4 中通过增量构建将构建时间缩短了 5-10 倍。事实上,我们的增量构建不起作用,因为我们使用了 annotationProcessors。由于 Gradle 4.7 annotationProcessors 可以选择与增量构建兼容。我经历了许多依赖项更新,以使用支持它的 annotationProcessors激活增量构建。
通过各种配置和改进,我能够将构建时间(预构建)从约 30 秒减少到约 19 秒。根据增量构建博客文章,我假设我可以进一步将构建时间减少到约 5 秒。
不幸的是,随着增量构建,它只下降到大约 15 秒。使用--profile
,--info
我试图进一步诊断问题。仅提取 gradle 任务compileDevDebugJavaWithJavac
表明编译步骤从 ~16s 变为 ~12s。
476 个类的增量编译在 12.51 秒内完成。
在我看来,这对于单行更改来说太慢了,而且它几乎不能反映 Gradle 对增量构建的要求。我特别尝试更改依赖项很少的文件,并且我知道公共常量会触发完全重建。还有什么可能导致仅单个文件的增量构建如此缓慢?
我还尝试启用实验功能
它确实有效并将我的构建分成两个编译步骤
compileDevDebugJavaWithJavac 6.777s
processDevDebugAnnotationsWithJavac 6.104s
我希望与
这两个任务可能并行运行,几乎是构建时间的一半。但显然并行处理在这里不起作用,或者是吗?
还可以做些什么来增加非常小的更改的构建时间?
编辑:我发现主要问题是我们有太多的类依赖关系,它总是触发476个类的编译(见这个问题)。因为我不希望在我们的遗留代码中解决足够的类依赖关系:我的问题仍然存在。该项目可以enableSeparateAnnotationProcessing
并行化还是有任何其他配置?