Вопрос:

Shadow Plugin Gradle: что делает mergeServiceFiles ()?

java gradle build.gradle gradle-shadow-plugin

3330 просмотра

1 ответ

510 Репутация автора

В моем файле build.gradle мне нужно добавить строку:

shadowJar {
    mergeServiceFiles()
}

В противном случае банка не работает должным образом. Интересно, что именно делает эта строка? Я использую плагин Gradle в Eclipse Luna. Я создаю банку для одного проекта Java, который зависит от другого.

Автор: Romain Источник Размещён: 01.10.2015 12:46

Ответы (1)


8 плюса

55701 Репутация автора

mergeServiceFilesобъявляется именно здесь, и его реализация заключается в следующем:

/**
 * Syntactic sugar for merging service files in JARs
 * @return
 */
public ShadowJar mergeServiceFiles() {
    try {
        transform(ServiceFileTransformer.class);
    } catch (IllegalAccessException e) {
    } catch (InstantiationException e) {
    }
    return this;
}

Как вы можете видеть, он использует, ServiceFileTransfomerкоторый определен здесь . Из его документов:

Изменено из org.apache.maven.plugins.shade.resource.ServiceResourceTransformer.java

Преобразователь ресурсов, который добавляет записи в ресурсах META-INF / services в один ресурс. Например, если имеется несколько ресурсов META-INF / services / org.apache.maven.project.ProjectBuilder, распределенных по многим JAR-файлам, все отдельные записи будут объединены в один META-INF / services / org.apache.maven.project. Ресурс .ProjectBuilder упакован в результирующий JAR-файл, созданный процессом затенения.

Автор: Opal Размещён: 02.10.2015 07:19
Вопросы из категории :
32x32