当前位置: 首页 > 知识库问答 >
问题:

分级多项目生成Src不在子项目中工作

洪涵亮
2023-03-14
root
 buildSrc
  src
   main
    kotlin
     Dependencies.kt
  build.gradle.kts
 soa
  SoaProject1
   settings.gradle.kts
   build.gradle.kts
  SoaProject2
   settings.gradle.kts
   build.gradle.kts
 tools
  ToolProject1
  ToolProject2
 settings.gradle.kts
 build.gradle.kts

根settings.gradle.kts如下所示:

include(
    ":SoaProject1",
    ":SoaProject2"
)
project(":SoaProject1").projectDir = File("soa/SoaProject1")
project(":SoaProject2").projectDir = File("soa/SoaProject2")

在SoaProject的一个build.gradle.kts文件中,例如,我有以下依赖项:

dependencies {
  implementation("log4j:log4j:${Versions.log4j}")
}

导入/刷新gradle项目在Intellij中工作,并且依赖项被下载。但是当我尝试从子项目执行gradle任务时,我得到一个未解决的引用版本错误。

object Versions {
  const val log4j = "1.2.16"
}

向西蒙致意

共有1个答案

司徒英卓
2023-03-14

很抱歉回复晚了,但是问题已经解决了,你可以在第一个帖子的评论中看到。

问题是,当您有一个多项目设置,然后gradle是扫描文件夹分层。根项目中与gradle multiproject相关的每个子文件夹都需要包含一个build.gradle/build.gradle.kts文件,即使它是空的。

这样,所有的东西都工作得很好,至少在IntelliJ中,gradle支持工作得很好,模块创建得很正确。

 类似资料:
  • 我有一个非常基本的多项目分级设置,如下所示: 文件包括这两个子项目。根项目不应用java插件,但两个子项目都应用了。使用时,所有东西都按预期生成。 但是,据我所知,由于我没有在根项目中应用插件,因此它不应该有任务。 的输出显示任务。 但的输出只显示列有和。 所以我的问题是--在这个场景中到底执行了什么?gradle只是找到所有子项目中匹配供应模式的每一个任务吗?是否有关于此任务名称解析的特定规则?

  • 当我使用特殊的Gradle任务运行InternalProj时,它将生成一些文件到中,然后将这些文件复制到中。不用说,这真的很难看,我想知道如何以更好的方式做到这一点。我应该将它放入构建中还是直接放入中?也许用符号链接? 现在,我使用了一个从到的相对符号链接,到目前为止,它运行良好。但现在我有一个不同的问题:任务生成一些资源,而任务依赖于这些资源,从而依赖于。如果运行或,仍然会失败,因为生成的资源没

  • 我有一个多项目分级构建,我想应用其中一个子项目作为所有其他子项目的依赖项。 也就是说,如果我指定:

  • 我在SBT中有一个多项目构建配置,由两个互不依赖的不同模块组成。它们只是(碰巧)属于同一产品。 项目布局如下: project/Build.scala包含常见设置,如下所示: 根构建文件 build.sbt 只需要将它们放在一起 [我也试图删除它... 最后是myProject_1/build.sbt[我刚刚省略了myProject_2/build.sbt,因为它非常相似,没有为主题提供任何附加价

  • 我正在进行带有多个Grails插件的Grails项目(Grails2.3.11)。一个主要的Grails项目,加上一些用户定义的Grails插件和核心Java项目,创建了一个完整的应用程序。到目前为止,这些项目都是使用Ant Builder构建的。最近升级的构建过程使用Gradle。 gradle过程的问题是,有些项目需要用JDK1.7构建,有些项目需要用JDK1.8构建。为了修复它,我将java

  • 我的项目中有一些来自Maven中央存储库的依赖项。所以我想,如果从Maven Central和其他存储库(GitHub)中删除了任何依赖项,而我将无法在某个地方找到这个依赖项并构建我的项目,该怎么办? 我想把本地依赖缓存添加到我的项目的git存储库中,这样任何人都可以克隆这个存储库并离线构建我的项目。可能是Cocoapods的方式。我怎么能这么做?