问题标签 [parallel-builds]
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.
maven - 如何查看 maven 的并行构建图
Maven 3 中的并行构建是一件好事。
该过程使用依赖图来评估构建的顺序,文档说明如下:
...这是通过 pom 中声明的依赖关系进行的,并且没有很好的日志记录该图的实际评估方式。(我希望渲染实际的执行图,但从来没有找到一个很酷的工具/方法来做到这一点——-X 日志中的纯文本 ascii 是一种选择)。
我想知道这样的演绎是否已经存在,如果存在,如何触发?
java - 如何查看 maven 中的所有非线程安全插件?
我已经阅读了有关 Maven 并行构建配置的信息。那么如何显示所有非线程安全的插件呢?maven 中有类似“plugin-not-safe-list”命令的东西吗?
tfs - 如何跨构建代理并行构建?
我目前正在为同一产品的 15 个 SKU 运行构建。在串行中,所有 SKU 的完整构建只需不到三个小时。
我有资源来创建一个构建场,它可以处理需要 15 个构建代理的 1 个构建的负载,并且希望利用这一事实。
我使用了几年前在TFS2010上在网上找到的TFS构建模板,升级模板后我继续在TFS2012上使用它。不幸的是,该模板不会轻易升级以在 TFS2013 中工作,并且由于它有缺点,我想获得一个新模板以在新的 2013 世界中重新开始。(它的缺点在于单一任务的并发处理:标记、将工作项与内部版本号相关联、包含锁定文件的私有版本。)
由于我还没有在网上找到任何东西,我可能会创建自己的并行构建模板。在我为 TFS2013 创建我自己的 TFS 并行构建模板之前,我不得不问是否有一个我尚未偶然发现的解决方案已经可用?
(我在这里对 SO 进行了研究,发现了很多关于这个主题的帖子,但是没有为在 VS2013 中工作的并行化模板提供完整的解决方案)
编辑:添加指向 TFS2010 的并行构建模板源的链接
maven - maven的重载目录结构
我正在与 Jenkins 和 Maven 合作我正在寻找一种方法,我也不会下载常用的工件,如 org.apache、org.springframework ......但允许我只重新下载/重建我自己的公司工件。我知道以下选项 -
- 使用自己的本地 maven 存储库运行作业,但这将多次下载复制公共组件。
- 从机器存储库中删除/清除 com.myCompany 包 - 但这会对并行运行的其他构建产生“从机”广泛的影响。
我的想法是使用作业 maven 存储库,但对于除com.myCompany 之外的所有工件包都具有指向机器 .m2 存储库的软链接,这似乎是一个公平的解决方案。基本上给了我为 com.myCompany 目录执行目录“重载”的选项
有没有人知道这个问题的任何其他解决方案或已经实施了这样的方案?
cmake - CMake parallel build for Fortran-90+ with modules
I have a problem building multiple Fortran-90+ executable targets using CMake, when I use Fortran modules that are shared by all executables, and build in parallel using make -j
. The issue seems to be that the compiled object files are placed in different subdirectories for each target, CMakeFiles/targetName.dir/src/file.f90.o
, while the module files are placed in the same directory for every target (I can change this directory by setting Fortran_MODULE_DIRECTORY
, but it will still be the same dir for all module files). The problem is then that all targets start writing these module files in parallel, and I get a
Fatal Error: Can't rename module file 'module.mod0' to 'module.mod': No such file or directory
when using gfortran (which apparently creates a .mod0 file and then renames it to .mod). The problem does not arise when I issue make without the -j option (serial build).
I can see two solutions, but I don't know how to implement them. Firstly, put the object files for all targets in the same directory rather than target-specific directories. This may be the preferred option, since I won't have to compile the shared source files N times for N targets. The make process will then recognise that the object files exist, and not compile the corresponding source files again, hence not touching the .mod(0) files again (I may need to make all following targets depend on the first).
The second solution would be to put the .mod(0) files in the target-specific directories, so that they are not overwritten or removed by the other targets. This would solve my problem, even though it would still involve more compiling than necessary. I have no idea how to accomplish either option, so any hint there or alternative solution is welcome.
ios - 如何更改 DerivedData 中的文件夹路径?
我有以下情况:
每当我进行构建时,我都知道我的产品和构建工件会在如下文件夹中生成:/Users/david/Library/Developer/Xcode/DerivedData/MyProject-foobar123
. 不幸的是,我想xctool build
为不同的目标,使用不同的代码,并行。
假设它MyProject-foobar123
始终是每个构建的输出文件夹是否安全?
如果是这样,我该如何更改它,以便即使我正在构建相同的项目(每次并行使用不同的代码),我也能够构建到不同的文件夹中?
我想知道的原因是因为我尝试在开始另一个构建之前rm -rvf /Users/david/Library/Developer/Xcode/DerivedData/MyProject-foobar123
以及xctool clean
在开始另一个构建之前(但显然当我并行化构建时这会遇到问题)
c++ - CMake ExternalProject_Add 和并行构建
使用以下CMakeLists.txt构建脚本:
当我尝试执行并行构建 ( make -j5
) 时,它偶尔会由于框架中的构建工件不存在而失败。add_dependencies
没有遵守由 固定的构建顺序。
我是否误解了有关add_dependencies的文档?
输出自cmake --graphviz=graph.dot
maven - Maven 无法从本地 nexus 下载工件
我从我们的本地连接下载工件时遇到问题,抱歉,如果这有点长。
我们的源树分为几个项目,我们称它们为A和B。B依赖于部署到我们本地 Nexus 服务器的A的发布版本。每当我发布新的 A时,接下来的几个构建(在 TeamCity 中)都无法下载新的工件,我看到了错误:
以下是一些相关事实:
- 我们正在使用
-T 1C
Maven 选项进行构建 - 该工件确实存在于nexus中-如果我去下载URL它就可以了
- 当我在本地构建它时它可以工作
- 最终一切都解决了,这意味着它第一次无法下载某个工件,下一次它成功但在另一个上失败,依此类推,直到所有工件都下载完毕
- 另一个项目也发布到同一个本地存储库,当其版本更新时工作正常
我在日志中看到这些多条下载行:
对于每个刚刚发布的工件,这条线重复了几次
- 这似乎不是关系索引的问题(就像我提到的那样 - 在本地构建工作正常,并且在它的一些 TeamCity 代理上也能正常工作)
- 另外 - 似乎不是网络问题,因为 TeamCity 代理和 nexus 服务器都在同一个数据中心
对不起,如果这是一个长篇阅读,但我真的很感激任何帮助。这件事让我们发疯。
谢谢
maven - 如何只让部分项目建设并行?
我正在做一个非常大的 Maven 项目,它有 400 多个模块。为了使其构建更快:
失败了,因为一些模块相互依赖,它们必须放在一起。
但是大多数其他模块都是独立的,有什么办法可以保持一些模块的构建顺序,而其他的则并行?
msbuild - 打字稿并行构建
背景:
我们有几个具有共同核心的 ASP.NET 项目。来自 Core 的静态被复制到所有其他项目。我们已将 TypeScript 添加到我们所有的项目中。
下面是 TypeScript 构建在 csproj 中的样子:
编译 TypeScript 文件时,也会编译所有引用文件。一些 TypeScript 文件引用了 Core 项目中的文件。因此,Core 项目中的文件有时会被编译多次(如果其他项目中的多个文件引用它们)。
简单的例子:
ScriptA.ts:
ScriptB.ts:
A 或 B 项目的构建也会导致来自 Core 的 Common.ts 也被构建。
问题:
某些文件被构建多次不是问题。但是 - 如果我们并行构建项目(这是默认的 VS 行为!) - 有时构建会因异常而崩溃:
原因是两个或多个项目尝试构建 TypeScript 文件并尝试从某个常见项目构建引用文件。一个项目开始将 ts 文件构建为 js 文件并锁定 js 文件。其他项目试图锁定同一个文件并崩溃。
所以,问题是 - 如何避免这种并行构建/锁定?引用的项目必须已经编译,所以可以说 TypeScript 编译器不会以某种方式从其他项目构建文件?