gpt4 book ai didi

gradle - 为现有存储库布局设置 Gradle 多项目构建时遇到困难

转载 作者:行者123 更新时间:2023-12-04 01:18:51 26 4
gpt4 key购买 nike

我正在尝试为我的项目布局已经指示给我的情况制作 Gradle 多项目构建。我有这样的事情:

-->Shared\
---->SharedComponent1\
------>build.gradle
------>src\
...
---->SharedComponent2\
------>build.gradle
...
-->Product1\
---->ProductComponent1\
------>build.gradle
---->ProductComponent2\
------>build.gradle
...
---->build\
------>settings.gradle

我的 settings.gradle 看起来像这样:
rootProject.name = 'Product1'
rootProject.projectDir = new File( "${ProjectsRoot}" )

include 'Shared:SharedComponent1'
include 'Shared:SharedComponent2'
include 'Product1:ProductComponent1'
include 'Product1:ProductComponent2'

当我在 build 文件夹中运行 Gradle 时,如下所示:
gradle -PProjectsRoot=c:\my\project\root\dir projects

我得到:
:projects

------------------------------------------------------------
Root project
------------------------------------------------------------

Root project 'build'
No sub-projects

To see a list of the tasks of a project, run gradle <project-path>:tasks
For example, try running gradle :tasks

BUILD SUCCESSFUL

即它没有找到我正在尝试构建的项目。
我正在尝试使用 Gradle 的多项目支持做些什么?还是我叫错了树?

最佳答案

几个提示:

  • Gradle 将逻辑项目层次结构(Gradle 将您的构建组织成项目的逻辑层次结构的方式)与物理目录布局严格分开。几乎任何映射都是可能的。 (想到的一个异常(exception)是您不能让两个项目共享同一个项目目录。)
  • 要实现自定义目录布局,您必须设置 projectDir对于所有项目,而不仅仅是根项目。您应该使用相对路径,例如rootProject.projectDir = new File(settingsDir, "../foo")project(":sub1").projectDir = new File(rootDir, "bar") .在这里,settingsDir指包含settings.gradle的目录, 和 rootDirrootProject.projectDir 的简写.
  • 要通用配置项目,您可以递归遍历 (root)Project.children .请注意 settings.gradlebuild.gradle使用不同的类型来表示一个项目 - ProjectDescriptorProject , 分别。
  • Gradle 必须从包含 settings.gradle 的目录中调用。 ,或其子目录。因此,从可用性的角度来看,最好放置 settings.gradle进入目录层次结构的根目录。

  • 如需更多信息,请参阅 SettingsGradle Build Language Reference ,以及 Multi-Project Builds Gradle 用户指南中的章节。

    关于gradle - 为现有存储库布局设置 Gradle 多项目构建时遇到困难,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14729072/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com