编译构建 CodeArts Build
编译构建 CodeArts Build
- 最新动态
- 功能总览
- 产品介绍
- 快速入门
-
用户指南
- 编译构建服务(CodeArts Build)使用流程
- 开通CodeArts Build
- 配置CodeArts Build项目级角色权限
- 新建构建任务
-
配置构建任务
- 构建任务基础配置
- 选择构建步骤
-
配置构建步骤
- 使用Maven构建
- 使用Android构建
- 使用Npm构建
- 使用Gradle构建
- 使用Yarn构建
- 使用gulp构建
- 使用Grunt构建
- 使用mono构建
- 使用PHP构建
- 使用SetupTool构建
- 使用PyInstaller构建
- 使用shell命令构建
- 使用Gnu-arm构建
- 使用CMake构建
- 使用Ant构建
- 使用Kotlin构建
- 使用Go语言构建
- 使用Ionic Android App构建
- 构建Android快应用
- 使用Sbt构建
- 使用Grails构建
- 使用Bazel构建
- 使用Flutter构建
- 使用HarmonyOS构建
- 通过Docker命令操作镜像
- 生成单元测试报告
- 自定义构建环境
- 使用自定义环境构建
- 下载软件发布库中的软件包
- 上传软件包到软件发布库
- 上传文件到OBS
- 配置构建任务参数
- 配置构建任务执行计划
- 配置构建任务角色权限
- 配置构建任务事件通知
- 执行构建任务
- 查看构建任务
- 管理构建任务
- 查询审计日志
- 参考
- 旧版手册页面
-
最佳实践
- 基于Maven构建产物制作Docker镜像并发布到镜像仓(内置执行机/图形化构建)
- 使用Maven构建上传软件包至私有依赖库(内置执行机/图形化构建)
- 使用Maven构建实现私有依赖包的上传及下载引用(内置执行机/图形化构建)
- 使用NPM构建上传软件包至软件发布库(内置执行机/图形化构建)
- 使用自定义执行机执行Maven构建(自定义执行机/图形化构建)
- 使用Maven构建上传软件包和推送镜像到SWR(内置执行机/代码化构建)
- 使用Maven构建执行多任务构建工程(内置执行机/代码化构建)
- 基于私有依赖库使用Maven构建并上传软件包(内置执行机/图形化构建)
- 使用自定义构建环境执行构建任务(内置执行机/图形化构建)
- API参考
-
常见问题
- 通用构建问题
- Maven构建
- Android构建
- Gradle构建
-
Npm构建
- 执行Npm构建时,报错提示JavaScript heap out of memory
- 执行Npm构建时,报错提示enoent ENOENT: no such file or directory
- 执行Npm构建时,报错提示Module not found: Error: Can't resolve ...
- 执行Npm构建失败,但不显示错误日志
- 执行Npm构建时,报错提示npm cb() never called
- 执行Npm构建时,报错提示gyp ERR! stack Error: EACCES: permission denied
- 执行Npm构建时,报错提示eslint: error 'CLODOP' is not defined
- 执行Npm构建时,报错提示node-sass下载失败
- 执行Npm构建时,报错提示error: could not write config file
- Npm构建耗时且安装依赖缓慢
- 执行Npm构建时,报错提示找不到依赖版本
- 镜像问题
- 视频帮助
- 通用参考
链接复制成功!
执行Maven构建时,多个子项目和父项目之间引用报错
问题现象
Maven构建任务,pom文件存在多个子项目和父项目之间的引用,在执行任务时,日志报如下异常信息:
[ERROR] Project 'xxx.xxx:xxx1:1.0-SNAPSHOT' is duplicated in the reactor @ [2022-03-02 14:02:52.656] [ERROR] Project 'xxx.xxx:xxx2:1.0-SNAPSHOT' is duplicated in the reactor -> [Help 1] [2022-03-02 14:02:52.656] [ERROR] [2022-03-02 14:02:52.656] [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch. [2022-03-02 14:02:52.656] [ERROR] Re-run Maven using the -X switch to enable full debug logging.
原因分析
在Maven中,parent模块组织好childA和childB,叫做"聚合"。多个模块联合编译实现起来很简单,按照以下方式即可:
- 在parent的pom文件里加入以下内容:
<modelVersion>4.0.0</modelVersion> <groupId>com.demo</groupId> <artifactId>parent</artifactId> <version>1.0</version> <modules> <module>childA</module> <module>childB</module> </modules>
- 在childA和childB的pom文件中添加相应的标签来标记父模块。
- childA:
<modelVersion>4.0.0</modelVersion> <groupId>com.demo</groupId> <artifactId>childA</artifactId> <version>1.0</version> <parent> <groupId>com.demo</groupId> <artifactId>parent</artifactId> <version>1.0</version> </parent>
- childB:
<modelVersion>4.0.0</modelVersion> <groupId>com.demo</groupId> <artifactId>childB</artifactId> <version>1.0</version> <parent> <groupId>com.demo</groupId> <artifactId>parent</artifactId> <version>1.0</version> </parent>
- childA:
在上述的配置形式中指定了一个父项目,下面有两个同级的子项目A和B,如果A项目的pom文件中把B项目当做自己的子项目来引用或者把parent项目作为子项目就会引起冲突,构建时就是出现上面的报错。
处理办法
检查项目的pom的引用情况 ,如果要B项目作为A的子项目,则需要从parent的pom中把B项目的引用去掉,把B项目的父标签指向A项目,如下:
- parent项目:
<modelVersion>4.0.0</modelVersion> <groupId>com.demo</groupId> <artifactId>parent</artifactId> <version>1.0</version> <modules> <module>childA</module> </modules>
- A项目:
<modelVersion>4.0.0</modelVersion> <groupId>com.demo</groupId> <artifactId>childA</artifactId> <version>1.0</version> <parent> <groupId>com.demo</groupId> <artifactId>parent</artifactId> <version>1.0</version> </parent> <modules> <module>childB</module> </modules>
- B项目:
<modelVersion>4.0.0</modelVersion> <groupId>com.demo</groupId> <artifactId>childA</artifactId> <version>1.0</version> <parent> <groupId>com.demo</groupId> <artifactId>childA</artifactId> <version>1.0</version> </parent>
父主题: Maven构建