Как опубликовать толстый JAR в JitPack с помощью плагина shadowJar gradle, а не Maven Publish

Не сразу понятно, как публиковать толстый JAR в JitPack, потому что в теневых документах нет раздела для JitPack, а в документах JitPack нет раздела, посвященного толстым банкам.

Все документы говорят, что если вы включите maven-publish, они выполнят задачу publishToMavenLocal.

Обычно толстая банка shadowJar создается через gradle shadowjar, но команда сборки в JitPack не настраивается, поэтому мы должны изменить наш publishToMavenLocal, чтобы использовать shadowJar.

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
2
0
1 281
2

Ответы 2

Я сделал запрос в службу поддержки с помощью JitPack, и они вернулись со следующим кодом, который я тестировал на работу по состоянию на 2018/04/12:

plugins {
    id "com.github.johnrengelman.shadow" version "2.0.2"
}

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

group = 'com.github.jitpack-io'

repositories {
  mavenCentral()
}

dependencies {
  compile 'com.google.guava:guava:18.0'
  testCompile 'junit:junit:4.12'
}

task sourcesJar(type: Jar, dependsOn: classes) {
    classifier = 'sources'
    from sourceSets.main.allSource
}

task javadocJar(type: Jar, dependsOn: javadoc) {
    classifier = 'javadoc'
    from javadoc.destinationDir
}

shadowJar {
    archiveName = "$baseName-$version.$extension"
}

artifacts {
    archives sourcesJar
    archives javadocJar
    archives shadowJar
}

Они опубликовали код через GitHub.

Его также можно комбинировать с оберткой gradle:

allprojects {
    task wrapper(type: Wrapper) {
        gradleVersion = '4.4'
        distributionType = Wrapper.DistributionType.ALL
    }
}

возможно, немного поздно, но я запустил его, просто добавив артефакт в часть публикации, например:

publishing {
publications {
    mavenJava(MavenPublication) {
        groupId project.group
        artifactId project.name
        version project.version
        from components.java
        artifact sourceJar {
            classifier "sources"
        }
        artifact shadowJar
    }
}....

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