IntelliJ / Gradle - 复合构建项目 - 如何从不同模块导入?

Hes*_*ons 5 java intellij-idea

我是 Java 新手,目前正在尝试在 IntelliJ 中构建一个 Cucumber/selenium 项目,其中包含两个模块:一个包含页面定义的库项目,以及一个包含与这些页面定义对话的 Cucumber 功能和步骤定义的测试项目。这个想法是页面定义是共享资源,并且测试特定于不同的项目/组。这两个模块位于父项目下的同一级别。构建使用 Gradle,settings.gradle父级文件如下所示:

rootProject.name = 'composite-builds'
includeBuild 'libraryproject'
includeBuild 'testproject'
Run Code Online (Sandbox Code Playgroud)

在父项目上使用 GradleincludeBuild效果很好,并且整个项目都会导入。但是,我在测试项目的导入语句中没有使用库项目。它始终向我返回这些类型的错误:java: package libraryproject.pageFactory.examplePages does not exist并且显然没有看到库模块。

为了让测试项目识别库项目,我需要做什么/添加什么?我确实尝试includeBuildsettings.gradle测试项目中添加语句,但这没有什么区别。

图书馆可以在这里找到

更新:我看不到库项目中的模块的真正原因是它们保存在测试文件夹中,而不是主文件夹中。

Zub*_*bty 2

转到您的build.gradle文件

使用dependency{compile{project(':libraryproject')}}代替includeBuild

在libraryproject 的根项目内部,在您的情况下是复合构建。更改includeBuild包含settings.gradle中

rootProject.name = 'composite-builds'
include ':libraryproject'
include ':testproject'
Run Code Online (Sandbox Code Playgroud)

如果它在同一个根中:

dependencies {
    compile(
        project(':libraryproject')
    )
}
Run Code Online (Sandbox Code Playgroud)

子文件夹:

dependencies {
    compile(
        project(':myFolder1:myFolder2:libraryproject')
    )
}

Run Code Online (Sandbox Code Playgroud)