问题标签 [gradle-multi-project-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 build:如何设置多级项目(3+ 级)?
我在设置 3 级 gradle 多项目时遇到了麻烦:
我希望能够:
- 在构建脚本中设置同级项目之间的依赖关系,比如:
- 还希望能够在任何级别启动 bash 命令 [$gradle build] 构建(子树) [然后构建项目的子树]
我已经实现了中层和底层的构建,但我无法从顶层设置构建。得到错误:
评估项目“Level_2_Proj_A”时出现问题。在项目“Level_2_Proj_A”中找不到路径为“Level_3_Proj_C”的项目。
可能吗?如果可以,如何配置?谢谢
java - 无法识别 java-library 插件的 api 配置
我是 Gradle 新手,我正在使用 Gradle 6.1。
我正在编写小型应用程序以了解 Gradle 的多项目应用程序和 Java-Library 插件的概念。
我的问题是:
App.java 如何在不从 SubProject-2 导入 DefaultRandomGenerator 类的情况下完美运行
为什么我在父项目(MultiProjectApp)的 build.grade 文件中收到错误消息“找不到方法调用 api 的候选者”。
以下是我的应用程序代码:
父项目 (MultiProjectApp) 文件
设置.gradle
构建.gradle
子项目 2 文件
构建.gradle
随机生成器.java
DefaultRandomGenerator.java
子项目 1 文件
构建.gradle
应用程序.java
java - VSCode, Spring boot, Gradle, Make Multi-Project, 如何解决initializationError?
全部。
我需要使用 VSCode 来制作项目。而且我不擅长用 VSCode 制作 java 项目。
我尝试使用带有 gradle 的 spring boot 来制作多项目。(图片:项目大纲)
告诉我我需要做什么来解决问题,我会立即附上评论。
当我运行 java 测试时,initializationError 发生如下:
gradle - gradle 自定义任务类使自己无法编译
我正在尝试编写一个自定义 Gradle 任务类并在另一个子项目中使用它。我在将构建捆绑在一起时遇到问题。
在此示例中,我将子项目命名为“a”(用于应用程序)和“p”(用于插件,尽管我没有使用插件对象,而只是为构建脚本提供了一个任务类)。
设置.gradle
p/build.gradle
p/src/main/groovy/p/MyTask.groovy
一个/build.gradle
“插件”是通过运行构建的,在 p 文件夹内:
在 a 文件夹内:
打印“耶!”
但是,在开发过程中,会发生错误。当我在 MyTask 中模拟一个错误时:
并构建插件(在文件夹 p 中):
它按预期失败。
现在我通过再次删除损坏的构造函数来“修复”错误,并在文件夹 p 中重建:
但是此命令失败并出现相同的错误。
据我了解,原因是:
- 损坏的插件在我的本地 Maven 仓库中
- 尝试构建插件检测到父文件夹中的 settings.gradle
- gradle 尝试配置从 settings.gradle 引用的所有项目
- 这会加载损坏的插件
- 构建失败
为了验证,我注释掉了 settings.gradle 中的包含行,它又可以工作了。恢复 settings.gradle,它仍然有效,因为现在“固定”插件在我的 maven 存储库中,重建插件只会用工作版本再次覆盖它。
最重要的是,我的自定义任务类(或自定义插件,或任何其他 buildscript 代码)中的错误有可能使它们自己无法编译,解决方法是编辑或临时重命名 settings.gradle。项目越复杂,就越麻烦:如果插件代码本身包含多个子项目,重命名不起作用,甚至注释掉变成“注释掉正确的行”。
解决此问题的预期方法是什么?
kotlin - 无法访问多项目 Kotlin Gradle 构建中的资源
所以我有基于多项目的 Grandle 构建,我使用 Kotlin 作为主要语言。假设默认项目被命名为app
同时具有src/main/kotlin
和src/main/resources
目录。奇怪的是,即使 Gradle 将其设置为正确的,我也无法从代码中访问资源。我将它与单项目构建(src
作为主源目录的那个)进行比较,当我运行时:
两个项目都指向位于build/classes/kotlin/main/
. 但是当我运行时:
单项目指向build/resources/test.txt
(正如预期的那样)但进入null
多app
项目构建。当然文件存在于两个地方
我是否错过了全局build.gradle
或项目中的某些配置build.gradle
或其他配置?
项目结构和一些重要的文件部分:
设置.gradle
构建.gradle
应用程序/build.gradle
主应用.kt
node.js - Gradle 多项目构建 - 如何处理本地 npm 项目依赖项
该项目正在构建一个 Angular 应用程序。
我需要应用程序构建来使用另一个本地项目的结果,该项目是一个 javascript 库。
Gradle 用于在 com.github.node-gradle.node 节点插件的帮助下构建这两个项目。
项目结构简单
其中 App 取决于 Library 的输出。
更准确地说,应用程序需要在项目库上输出“npm pack”。
在 App 项目中,我声明了对库项目的本地 npm 依赖项,这是 npm 包的结果。( .tgz 文件)
如何将库项目的结果声明为构建输出并将其声明为 App 项目的依赖项输入?
使用 java-library 插件将是这样的:
目标是 gradle 将首先构建 Library 项目,然后再构建 App 项目。如果他可以在请求构建 App 时检查库源代码是否已更改以在其上触发构建,那就更好了。
两个项目的构建都是这样完成的:
package.json 中库项目的构建脚本是
我已经看过很多关于如何使用 java 插件的文档,但我没有找到任何非 java 项目的好例子。
任何帮助将不胜感激,使用 kotlin dsl 会更好:-)
spring-boot - 如何从 Gradle Multi Build 项目中发布 Spring Boot 应用程序?
假设我有一个带有 3 个子项目、2 个 Spring Boot 项目(auth
和profile
)和 1 个库项目(commons
)的 Gradle 多项目。
2 个 Spring Boot 项目包括对 Library 项目的依赖:implementation project(":commons")
实际上,要运行 2 个 Spring Boot 项目,我必须从父项目运行它:
如果我gradlew bootRun
只从每个 Spring Boot 子项目运行,我会收到错误,例如:commons
在根项目中找不到库项目,这是有道理的,因为该:commons
项目仅包含在父settings.gradle
文件中。
我必须将每个 Spring Boot 子项目单独推送到 Heroku。
我应该如何管理?
gradle - 我可以在多项目构建中一次调用所有项目的 Gradle 属性任务吗?
我想查看 Gradle 项目的属性,以手动确保值看起来正确。
properties
当我从多项目构建的根目录调用任务时,它会列出根项目的属性:
我还可以为每个单独的子项目请求属性:
但是,我真正想做的是一次列出给定项目及其所有子项目的属性。
我有点惊讶在根级别调用任务只提供根级别属性。这似乎与 Gradle 文档中关于在多项目构建中按名称执行任务相矛盾:
该命令
gradle test
将在具有该test
任务的任何子项目中执行该任务,相对于当前工作目录。如果从项目根目录运行命令,您将test
在api、shared、services:shared和services:webservice中运行。如果您从 services 项目目录运行命令,您将只执行 services:shared 和 services:webservice 中的任务。Gradle 行为背后的基本规则是:执行层次结构中具有此名称的所有任务。只有在遍历的任何子项目中都没有找到这样的任务时才抱怨。
如何一次列出项目及其子项目的所有属性?作为奖励,为什么不在properties
根级别运行的任务也为子项目运行?我正在使用当前最新版本的 Gradle (6.7.1)。
java - Gradle:具有项目依赖属性的多项目构建
我目前正在尝试使用 gradle 创建一个多项目构建,它应该生成多个耳朵文件。所有 ear 文件都使用一个共享 ejb 项目,该项目捆绑了一个 ejb-jar.xml 部署描述符。此部署描述符应包含一个依赖于 ear-project 的 env-entry。
项目结构如下所示:
build.gradle(根)
build.gradle(耳朵)
build.gradle (ejb)
整个项目应该由一个命令创建,例如gradle ear
.
到目前为止,我已经尝试通过闭包注入属性,但它似乎不起作用:
如何配置ear项目来设置placeholder
ejb项目的变量?
您可以通过 GitHub 访问完整示例:https ://github.com/monsieurvader/multiproject-ear