【问题标题】:Gradle weird errors on Jenkins詹金斯上的 Gradle 奇怪的错误
【发布时间】:2020-09-23 07:06:18
【问题描述】:

我正在尝试在 Jenkins 上部署我们的项目,但每个组件都只是使用根目录中的 settings.gradle 文件,即使我为每个组件添加了单独的 settings.gradle 文件。

目前,我有这样的结构。

    • 用户界面
      • ship(在此文件夹中包含 settings.gradle 和 build.gradle)
      • 订购
      • 质量
        • 审核
    • settings.gradle
    • build.gradle

我在 settings.gradle 文件中有 include("ui:shipnotice") 用于根目录和 ship 目录。

我有一个任务叫copy,当我尝试在ship文件夹下调用这个任务时,我需要使用../../graldew --no-daemon --info copy

我收到了以下Settings evaluated using settings file 'xxx/ui/shipnotice/settings.gradle.kts'.

但是,在我使用 Jenkins 部署它之后,事情变得很奇怪。在 Jenkins 中,它一直使用根目录下的 settings.gradle 文件。

Settings evaluated using settings file '/home/jenkins/workspace/xxx/settings.gradle.kts'.

FAILURE: Build failed with an exception.

* What went wrong:
Project directory '/home/jenkins/workspace/xxx/ui/shipnotice' is not part of the build defined by settings file '/home/jenkins/workspace/xxx/settings.gradle.kts'. If this is an unrelated build, it must have its own settings file.

我尝试添加rootProject.name = "shipnotice" include("ui:shipnotice") 以将shipnotice 作为根项目,但它仍然使用来自根的文件。

谁能给我一些关于这个错误的想法?提前致谢!

【问题讨论】:

    标签: jenkins gradle continuous-integration


    【解决方案1】:

    我建议摆脱嵌套的settings.gradle。这是not a recommended setup

    在您的 Jenkins 构建中最有可能发生的情况是执行 Gradle 命令的文件夹是结帐的根文件夹。因此,该根的settings.gradle 被拾取。

    【讨论】:

    • 谢谢,路易斯。我发现在我的 Jenkinsfile 中,我忘记在一个地方使用 {env.workspace}。我改了之后,就解决了。但是,我很好奇删除那些多余的设置文件。我知道 Gradle 可以在同一目录中找到子项目。但是,对于 review 组件的情况,它位于更深的目录中。没有settings.gradle文件怎么能找到呢?
    猜你喜欢
    • 1970-01-01
    • 2016-12-15
    • 2015-05-31
    • 2019-11-11
    • 2019-05-23
    • 2021-12-04
    • 2012-12-23
    • 2016-10-10
    • 1970-01-01
    相关资源
    最近更新 更多