问题标签 [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 投票
2 回答
583 浏览

java - Jib gradle 插件多模块项目 ClassNotFoundException

我有多模块 gradle 项目并使用 Jib 插件构建 docker 映像并推送到注册表。

但是,当我构建图像并尝试运行这个图像时,我得到了这个异常:

错误:无法找到或加载主类 Xmx512m

引起:java.lang.ClassNotFoundException: Xmx512m

这是我的根 build.gradle 文件:

根设置.gradle

此项目之一的 build.gradle 文件。(除了依赖之外,它们都是相同的):

找不到任何解决方案。尝试了很多事情,但一次又一次地遇到这个异常。

注意:使用 jib 版本:2.6.0

0 投票
1 回答
43 浏览

java - 如何在 Gradle 多项目构建中引用其他 classesdir

我正在使用 Spring Boot 构建 API。我正在使用 gradle 和一个多项目构建设置,其中我有一个services-lib项目和一个依赖于services-lib的api项目。

在 api 项目中运行api:bootRun任务工作得很好,但现在我正在尝试添加触发 spring-boot-devtools自动重启的能力,这需要 bootRun 任务在它的类路径中包含service-lib类目录(不是多项目依赖添加的jar)。

将此添加到我的 api 的 build.gradle 确实会在我运行 api:build 任务时触发自动重启(其中“C:/foo/bar”是我的多项目根目录的绝对路径)。

我的问题是,我可以使用 project(':services-lib') 之类的东西来设置它,而不是硬编码该路径吗?

0 投票
0 回答
106 浏览

kotlin - 如何在子模块之间共享 kotlin 多平台目标?

在永恒之后,我设法建立了一个 kotlin 多平台和多模块项目。由于几乎没有适当的指南或文档,我只有一个无法解决的问题。我可以在子模块之间共享 kotlin 多平台目标吗?

现在每个子模块都有一个build.gradle.kts包含:

显然,我希望所有模块都使用相同的版本编译到相同的平台,并且最好不要为每个模块复制此代码段。更不用说测试依赖项也是相同的。

0 投票
0 回答
22 浏览

gradle - 使用公共项目发布 gradle 子项目工件

考虑以下项目结构:

设置.gradle

build.gradle (subprojA)

build.gradle (subprojB)

运行./gradlew subprojA:uploadArchives./gradlew subprojB:uploadArchives

另一个项目,尝试导入任何 repo 中不可用的com.abc:subprojB:x.y.z抱怨。subprojA

我想要什么:在我的本地,我希望 subprojB 指向本地 subprojA 以便于开发,但是在将 subprojB 发布到工件时,我希望它创建对com.abc:subprojA:x.y.z.

0 投票
0 回答
190 浏览

gradle - Gradle:从子项目工件和依赖项创建 zip

我通过以下方式(Kotlin DSL)从 gradle kotlin 项目工件和依赖项创建一个 zip:

现在我需要在父项目中执行相同的操作,以将所有工件和所有子项目的编译时间依赖项收集到同一个 Zip 文件中。如何遍历 Kotlin DSL 中的所有子项目以创建 Fat Zip?

0 投票
0 回答
94 浏览

android-studio - Android Studio gradle 多模块编译但找不到类

我有一个带有我也开发的库的 android 应用程序。

当我通过这样的 Maven 存储库添加该库时:

一切正常,它编译并且库的类被 IDE 找到,我可以像往常一样工作。

问题是当我使用该库并使用应用程序对其进行测试时。

在这种情况下,我为此更改了上述行:

settings.gradle文件中我也有这个:

奇怪的是它编译得很好,我可以运行应用程序并测试我在 myLib 中所做的更改,但问题是 IDE(Android Studio)没有找到 myLib 的类/包。这使得几乎不可能工作,因为没有导入类,没有识别方法和属性...... IDE 以红色下划线显示与 myLib 相关的所有内容。

我试过了:

  • 多次同步 Gradle 项目
  • 清洁项目
  • 重建项目
  • 使缓存无效并重新启动
  • ./gradlew clean 后跟 ./gradlew build

IDE 仍然无法识别 myLib。

我认为这可能与 Android Studio、Android Gradle 插件或 Gradle 版本本身有关并进行了更新,因为我使用这种配置工作得很好。我能记得的唯一改变的是上面提到的。

FWIW 我正在使用 Android Studio 4.2.1、AGP 4.2.1 和 Gradle 6.8.3

0 投票
0 回答
132 浏览

java - 如何从 Gradle 多项目创建 Java fat jar?

使用 Gradle 7.2 和 Java 11,我按照以下说明创建了一个 Java 应用程序多项目:https ://docs.gradle.org/current/samples/sample_building_java_applications_multi_project.html

我想创建一个包含所有依赖项的胖 jar,这样我就可以通过简单地调用来运行我的应用程序:java -jar app.jar

我尝试将此行添加到app/build.gradle

当我从基本目录构建项目时./gradlew clean build,构建成功,但是当我转到app/build/libsapp.jar包含所有依赖项并且尝试运行它时,我收到以下错误:

app.jar 中没有主清单属性

我该如何解决这个问题?

0 投票
0 回答
30 浏览

gradle - Gradle 多模块项目:如何访问另一个模块的 ./build 目录?

就像问题标题一样,我有一个Gradle由 2 个模块组成的多模块项目:apiservice. 从service模块中,我试图访问api./build目录下的模块内生成的代码。有谁知道我该怎么做?我一直在从Gradle的文档中搜索,但找不到任何解决方案,而且我觉得Gradle没有制作足够的关于这个主题的文档。

有一种解决方案,我可以将内容从一个./build目录复制到另一个目录,但这会使整个应用程序变得更重并影响应用程序的性能。

0 投票
1 回答
59 浏览

kotlin - 如何创建依赖于 Kotlin 项目中 JS 的 Gradle 项目?

我正在使用 Kotlin 在我的后端(Java Spring Web)和前端之间共享逻辑。让 Java 后端调用 Kotlin 逻辑很容易:我制作了同一个 Gradle Multiproject 构建的两个部分,并使服务器项目依赖于 Kotlin 项目。

现在我需要将生成的 JavaScript 从 Kotlin 中取出并转换成服务器可以提供的格式。查看服务器的 Gradle 输出 jar,它只有 jvm jar,没有 js jar。

0 投票
2 回答
189 浏览

gradle - Gradle 预编译脚本插件:未找到外部 Quarkus 插件依赖项

背景

我目前正在开发一个带有多个 quarkus 微服务的 gradle 多项目。为了捆绑我的 quarkus 依赖项,我使用预编译脚本插件和kotlin-dsl. 鉴于以下配置,执行quarkusBuild工作正常。

问题

执行quarkusDev微服务子项目的任务失败

Unable to find quarkus-gradle-plugin dependency in project ':microservice'

你知道为什么会这样吗?我已经为此投入了几个小时,但我仍然不明白它为什么会失败。https://github.com/quarkusio/quarkus/issues/12509似乎是相关的,但建议的解决方案对我不起作用。任何帮助是极大的赞赏!

编辑

gradle.plugin.io.quarkus:quarkus-gradle-plugin:2.2.3.Final我意识到and之间可能存在差异io.quarkus:gradle-application-plugin:2.2.3.Final,但是交换依赖项并没有多大帮助。

配置

这是我的项目的最小版本,它允许重现错误。

这个最小的例子也可以在这里查看:https ://github.com/lorenzjosten/gradle-plugin-quarkus

rootProject/buildSrc/src/main/kotlin/quarkus-conventions.gradle.kts

rootProject/buildSrc/build.gradle.kts

rootProject/buildSrc/gradle.properties

rootProject/microservice/build.gradle.kts

rootProject/settings.gradle.kts

rootProject/build.gradle.kts

rootProject/gradle.properties