Получить список библиотек времени выполнения в Gradle, используя «java-library» и «api» вместо «compile» - PullRequest
0 голосов
/ 01 февраля 2019

Я использую этот код, чтобы получить необходимые библиотеки и скопировать их во время компиляции:

task copyToLib( type: Copy ) {
    into "$buildDir/libs/lib"
    from configurations.runtime
}

jar {
    dependsOn copyToLib
    ...
}

Это нормально, когда я использую модель Grade lagecy для добавления зависимостей, используя compile:

dependencies {
    compile 'net.objecthunter:exp4j:0.4.8'
    compile 'io.undertow:undertow-core:2.0.16.Final'
    compile 'org.postgresql:postgresql:42.2.5'
    ...
}

Но когда я использую ключевое слово api:

dependencies {
    api 'net.objecthunter:exp4j:0.4.8'
    api 'io.undertow:undertow-core:2.0.16.Final'
    api 'org.postgresql:postgresql:42.2.5'
    ...
}

configurations.runtime будет пустым.Любая альтернатива?

1 Ответ

0 голосов
/ 01 февраля 2019

Конфигурация runtime также устарела, как и конфигурация compile (см. Документацию здесь: https://docs.gradle.org/4.10/userguide/java_plugin.html#tab:configurations)

Так что вам нужно изменить предложение from в copyToLibзадача, чтобы подобрать правильную конфигурацию: я думаю, что в вашем случае вы должны использовать compileClasspath ( EDIT использовать runtimeClasspath вместо этого, см. комментарий ниже):

dependencies {
    api 'net.objecthunter:exp4j:0.4.8'
    api 'org.postgresql:postgresql:42.2.5'
    api 'io.undertow:undertow-core:2.0.16.Final'
}

task copyToLib(type: Copy) {
    into "$buildDir/libs/lib"
    from configurations.runtimeClasspath
}

Смотрите этографик зависимостей конфигурации, который может помочь вам подобрать правильную конфигурацию: https://docs.gradle.org/current/userguide/java_library_plugin.html#sec:java_library_configurations_graph

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...