Как добавить сгенерированные файлы в shadowJar в build.gradle? - PullRequest
0 голосов
/ 25 января 2019

Я использую shadowJar в Gradle для создания 2 банок.Один jar содержит только основные файлы, а другой - толстый jar, содержащий все java-файлы в папках src / main / java и src / main / generate.Но когда я запускаю этот jar-файл, я получаю NoClassDefFoundError для классов в src / main / generate.Как этого добиться?

Мой пример задания shadowJar показан ниже:

shadowJar {
    dependsOn compileLib
    from(sourceSets.generated.java.srcDirs[1]) 
    from(sourceSets.main.java.srcDirs[1])
    from { configurations.runtime.collect { it.isDirectory() ? it : zipTree(it) } } 
}

task shadowJar2(type: Jar, dependsOn: shadowJar) {
    baseName = project.name + '-all'
    manifest {
        attributes 'Implementation-Title': project.name,
                   'Implementation-Version': version,
                   'Main-Class': 'XYZ'
    }
    doFirst {
        dependsOn compileLib
        from sourceSets.generated.java.srcDirs[1] include '**/*.class'
        from sourceSets.generated.java.srcDirs[0] include '**/*.class'
        from sourceSets.main.java.srcDirs[1]
        from sourceSets.logback.resources.srcDirs[0] include '**/logback.xml'
        from {configurations.applibs.collect { it.isDirectory() ? it : zipTree(it) } }
        from { configurations.runtime.collect { it.isDirectory() ? it : zipTree(it) } }
    }
}

Я попробовал предложения в https://github.com/johnrengelman/shadow/issues/138, https://github.com/bodiam/epub-organizer/blob/master/epub-organizer-dropwizard/epub-organizer-dropwizard.gradle, https://objectpartners.com/2013/07/16/creating-self-contained-executable-jars-with-gradle-and-shadow/ и несколько других.Но я не могу решить это.Причина использования shadow jar заключается в том, что мой jar должен быть правильно упакован со всеми версиями внутренних зависимых библиотек.Любая помощь будет принята с благодарностью.

...