gradle - в ProjectB отсутствуют зависимости ProjectA - PullRequest
0 голосов
/ 18 февраля 2020

Я включаю ProjectA в ProjectB с compile files('../ProjectA/build/libs/ProjectA-1.0-SNAPSHOT.jar'). Однако при запуске ProjectB я получаю ошибки, не найденные в классе для зависимостей в ProjectA. Как и селен вебдрайвер и охттп. Что я должен сделать, чтобы обойти эти ошибки?

ProjectA build.gradle

plugins {
    id 'java'
    id 'org.jetbrains.kotlin.jvm' version '1.3.61'
    id 'application'
}

group 'com.company.projectA'
version '1.0-SNAPSHOT'

sourceCompatibility = 1.8

repositories {
    mavenCentral()
}

sourceSets {
    main.java.srcDirs = ['src']
//    main.kotlin.srcDirs = ['src/main/java', 'src/main/kotlin']
    main.kotlin.srcDirs = ['src']
    main.resources.srcDirs = ['src/main/resources']
}

dependencies {
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8"
    compile group: 'org.seleniumhq.selenium', name: 'selenium-java', version: '2.41.0'
    implementation("com.squareup.okhttp3:okhttp:4.3.1")

}

Project B build.gradle

plugins {
    id 'java'
    id 'org.jetbrains.kotlin.jvm' version '1.3.61'
    id 'application'
}

group 'com.company.projectB'
version '1.0-SNAPSHOT'

sourceCompatibility = 1.8

repositories {
    mavenCentral()
}

sourceSets {
    main.java.srcDirs = ['src']
    main.kotlin.srcDirs = ['src']
    main.resources.srcDirs = ['src/main/resources']
}

dependencies {
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8"

    // This pulls in the local project, but leaves out its dependencies.
    compile files('../ProjectA/build/libs/ProjectA-1.0-SNAPSHOT.jar')
}

1 Ответ

1 голос
/ 19 февраля 2020

В зависимости от сгенерированного файла JAR в качестве зависимости добавляются только скомпилированные классы из ProjectA. В этом случае ProjectB должен зависеть от самого ProjectA - это также добавит зависимости ProjectA в качестве временных зависимостей.

Поместите settings.gradle в каталог root обоих проектов:

settings.gradle
ProjectA/
  build.gradle
ProjectB/
  build.gradle

Включите оба проекты в settings.gradle:

include ':ProjectA', ':ProjectB'

Добавить ProjectA в качестве зависимости в ProjectB / build.gradle:

dependencies {
  compile project(':ProjectA')
}

Или как в примере Project B build.gradle:

plugins {
    id 'java'
    id 'org.jetbrains.kotlin.jvm' version '1.3.61'
    id 'application'
}

group 'com.company.projectB'
version '1.0-SNAPSHOT'

sourceCompatibility = 1.8

repositories {
    mavenCentral()
}

sourceSets {
    main.java.srcDirs = ['src']
    main.kotlin.srcDirs = ['src']
    main.resources.srcDirs = ['src/main/resources']
}

dependencies {
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8"

    // This adds the local project with all its transient dependencies
    implementation project(':ProjectA')
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...