Явная проблема для теневого плагина с Gradle

Я использую Gradle v3.4 и теневой плагин v1.2.4. Я публикую jar-файл в моем локальном репозитории Maven, используя следующую информацию в моем файле build.gradle

mainClassName = 'some.thing.SomeClient'
    jar {
        manifest {
            attributes(
                    'Class-Path': configurations.compile.collect { it.getName() }.join(' '),
                    // 'Main-Class': 'some.thing.SomeClient'
            )
        }
    }

    shadowJar {
        baseName = 'commons-java'
        classifier = null
        version = '0.0.1-SNAPSHOT'
    }

    artifacts {
        archives shadowJar
    }

    jar.dependsOn shadowJar

После публикации я пытаюсь использовать эту зависимость внутри другого проекта следующим образом, но при запуске gradle build получаю копию ошибки ниже.

 /**
 * jar/shadow jar (shadow jar extends jar task to create fat jar)
 */
jar {
    manifest {
        attributes(
                'Class-Path': configurations.compile.collect { it.getName() }.join(' '),
                //'Main-Class': 'some.thing.SomeClient'
        )
    }
}

shadowJar {
    baseName = 'something-java-client'
    classifier = null
    version = '0.0.1-SNAPSHOT'
}

artifacts {
    archives shadowJar
}

jar.dependsOn shadowJar

ошибка

The value of a manifest attribute must not be null (Key=Main-Class).

1 ответ

Решение

Проблема была вызвана атрибутом mainClassName в gradle.properties, приводящим к исключению. Удаление его из gradle.properties устранило проблему.

Также возможно, что mainClassName устанавливается после применения плагина, что является известной проблемой. Быстрое и грязное решение состоит в том, чтобы установить свойство перед применением плагина, например так:

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.github.jengelman.gradle.plugins:shadow:2.0.2'
    }
}

plugins {
    id "application"
}

mainClassName = 'some.thing.SomeClient'

apply plugin: 'com.github.johnrengelman.shadow'

// ...
Другие вопросы по тегам