问题标签 [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.

0 投票
1 回答
666 浏览

gradle - Gradle build:如何设置多级项目(3+ 级)?

我在设置 3 级 gradle 多项目时遇到了麻烦:

我希望能够:

  1. 在构建脚本中设置同级项目之间的依赖关系,比如:
  1. 还希望能够在任何级别启动 bash 命令 [$gradle build] 构建(子树) [然后构建项目的子树]

我已经实现了中层和底层的构建,但我无法从顶层设置构建。得到错误:

评估项目“Level_2_Proj_A”时出现问题。在项目“Level_2_Proj_A”中找不到路径为“Level_3_Proj_C”的项目。

可能吗?如果可以,如何配置?谢谢

0 投票
1 回答
3643 浏览

gradle - 如何使用 Gradle“平台”在多项目设置中对齐依赖版本?

0 投票
1 回答
1487 浏览

java - 无法识别 java-library 插件的 api 配置

我是 Gradle 新手,我正在使用 Gradle 6.1。
我正在编写小型应用程序以了解 Gradle 的多项目应用程序和 Java-Library 插件的概念。

我的问题是:

  1. App.java 如何在不从 SubProject-2 导入 DefaultRandomGenerator 类的情况下完美运行

  2. 为什么我在父项目(MultiProjectApp)的 build.grade 文件中收到错误消息“找不到方法调用 api 的候选者”。


以下是我的应用程序代码:


父项目 (MultiProjectApp) 文件


设置.gradle

构建.gradle

在此处输入图像描述


子项目 2 文件


构建.gradle

随机生成器.java

DefaultRandomGenerator.java


子项目 1 文件


构建.gradle

应用程序.java

0 投票
1 回答
239 浏览

java - VSCode, Spring boot, Gradle, Make Multi-Project, 如何解决initializationError?

全部。
我需要使用 VSCode 来制作项目。而且我不擅长用 VSCode 制作 java 项目。
我尝试使用带有 gradle 的 spring boot 来制作多项目。(图片:项目大纲)
告诉我我需要做什么来解决问题,我会立即附上评论。
当我运行 java 测试时,initializationError 发生如下:

0 投票
1 回答
121 浏览

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。项目越复杂,就越麻烦:如果插件代码本身包含多个子项目,重命名不起作用,甚至注释掉变成“注释掉正确的行”。

解决此问题的预期方法是什么?

0 投票
0 回答
242 浏览

kotlin - 无法访问多项目 Kotlin Gradle 构建中的资源

所以我有基于多项目的 Grandle 构建,我使用 Kotlin 作为主要语言。假设默认项目被命名为app同时具有src/main/kotlinsrc/main/resources目录。奇怪的是,即使 Gradle 将其设置为正确的,我也无法从代码中访问资源。我将它与单项目构建(src作为主源目录的那个)进行比较,当我运行时:

两个项目都指向位于build/classes/kotlin/main/. 但是当我运行时:

单项目指向build/resources/test.txt(正如预期的那样)但进入nullapp项目构建。当然文件存在于两个地方

我是否错过了全局build.gradle或项目中的某些配置build.gradle或其他配置?

项目结构和一些重要的文件部分:

设置.gradle

构建.gradle

应用程序/build.gradle

主应用.kt

0 投票
0 回答
292 浏览

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 会更好:-)

0 投票
1 回答
38 浏览

spring-boot - 如何从 Gradle Multi Build 项目中发布 Spring Boot 应用程序?

假设我有一个带有 3 个子项目、2 个 Spring Boot 项目(authprofile)和 1 个库项目(commons)的 Gradle 多项目。

2 个 Spring Boot 项目包括对 Library 项目的依赖:implementation project(":commons")

实际上,要运行 2 个 Spring Boot 项目,我必须从父项目运行它:

如果我gradlew bootRun只从每个 Spring Boot 子项目运行,我会收到错误,例如:commons在根项目中找不到库项目,这是有道理的,因为该:commons项目仅包含在父settings.gradle文件中。

我必须将每个 Spring Boot 子项目单独推送到 Heroku。

我应该如何管理?

0 投票
2 回答
368 浏览

gradle - 我可以在多项目构建中一次调用所有项目的 Gradle 属性任务吗?

我想查看 Gradle 项目的属性,以手动确保值看起来正确。

properties当我从多项目构建的根目录调用任务时,它会列出根项目的属性:

我还可以为每个单独的子项目请求属性:

但是,我真正想做的是一次列出给定项目及其所有子项目的属性。

我有点惊讶在根级别调用任务只提供根级别属性。这似乎与 Gradle 文档中关于在多项目构建中按名称执行任务相矛盾:

该命令gradle test将在具有该test任务的任何子项目中执行该任务,相对于当前工作目录。如果从项目根目录运行命令,您将testapisharedservices:sharedservices:webservice中运行。如果您从 services 项目目录运行命令,您将只执行 services:shared 和 services:webservice 中的任务。

Gradle 行为背后的基本规则是:执行层次结构中具有此名称的所有任务。只有在遍历的任何子项目中都没有找到这样的任务时才抱怨。

如何一次列出项目及其子项目的所有属性?作为奖励,为什么不在properties根级别运行的任务也为子项目运行?我正在使用当前最新版本的 Gradle (6.7.1)。

0 投票
0 回答
56 浏览

java - Gradle:具有项目依赖属性的多项目构建

我目前正在尝试使用 gradle 创建一个多项目构建,它应该生成多个耳朵文件。所有 ear 文件都使用一个共享 ejb 项目,该项目捆绑了一个 ejb-jar.xml 部署描述符。此部署描述符应包含一个依赖于 ear-project 的 env-entry。

项目结构如下所示:

build.gradle(根)

build.gradle(耳朵)

build.gradle (ejb)

整个项目应该由一个命令创建,例如gradle ear.

到目前为止,我已经尝试通过闭包注入属性,但它似乎不起作用:

如何配置ear项目来设置placeholderejb项目的变量?

您可以通过 GitHub 访问完整示例:https ://github.com/monsieurvader/multiproject-ear