gradle - 在 settings.gradle 不是最高级别依赖项的平面多模块项目中使用 gradle

标签 gradle

我有一个多模块项目,其目录结构如下:

proj
|-modA
|-modB
|-modMain
\-modSysTest

依赖项是:
modB -> modA
modMain -> modB
modMain -> modA
modSysTest -> modMain

我们目前使用 Ant 作为我们的构建系统。每个模块都有一个 build.xml。有一个 master.xml 运行多模块构建,它位于 modMain 中。

我正在研究将我们的项目切换为使用 gradle。如果我将 build.gradle 和 settings.gradle 放在一个新的同级目录中并使用 includeFlat 设置依赖模块,我可以获得一个多模块构建工作。

我尝试将 gradle 文件移动到 modMain 中,这是我们系统的主要组件以及构建整个系统的顶级构建脚本 (master.xml) 的主目录,但我无法让构建以这种方式工作.目前,我的主要绊脚石是尝试将 modSysTest 配置为依赖于 modMain 中的 modMain。

这是来自 modMain 的 settings.gradle:
includeFlat 'modA', 'modB', 'modSysTest'

这是来自 modMain 的 build.gradle 文件:
allprojects {
    apply plugin: 'java'

    repositories {
        mavenCentral()
    };
    dependencies {
        testCompile 'junit:junit:4.11'
    }
}

project(':modB') {
    dependencies {
        compile project(':modA')
    }
}

project(':modSysTest') {
    dependencies {
        compile project(':modMain')
    }
}

dependencies {
    compile project(':modA'), project(':modB')
}

使用此配置时,我收到错误:
A problem occurred evaluating root project 'modMain'.
> Project with path ':modMain' could not be found in project ':modSysTest'.

我不确定如何将 modMain 指定为 modSysTest 的依赖项。

最佳答案

根项目的项目路径为: ,而不是 :modMain .在根项目中包含代码不是很习惯(但可能)。我不明白如何把 build.gradlesettings.gradle进入 modMain 的同级目录会给出不同的结果(除非您还更改了 settings.gradle 的内容)。请注意,使用这样的设置,Gradle 将找不到 settings.gradle除非您从 modMain 开始构建目录或使用 -c 传递设置文件的位置.

关于gradle - 在 settings.gradle 不是最高级别依赖项的平面多模块项目中使用 gradle,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20527305/

相关文章:

Gradle publishToMavenLocal 不会将 jar 复制到本地 Maven 存储库

android - 反射在签名构建 Android 中失败

android - 在哪里可以下载Google的android程序包? (不是应用程序)

java - 在 VSCode 中更改 java 项目源?

Android - 该包与同名的现有包冲突

android - 如何确定在运行时哪个 Gradle 配置处于 Activity 状态?

java - 有没有办法获得 `Exec` 依赖工件?

unit-testing - 如何在没有类的情况下将纯Groovy脚本导入Spock测试

java - 如何从 class.getResource() 释放资源

Android - 将compileSdkVersion更改为16会导致编译错误(gradle)