2

如何将胖 JAR 发布到 JitPack 并不是很直观,因为影子文档没有针对 JitPack 的部分,而 JitPack 文档没有关于胖 jar 的部分。

所有文档都说,如果您包含,maven-publish那么他们将执行任务publishToMavenLocal

通常通过创建 shadowJar fat jar,gradle shadowjar但 JitPack 上的构建命令是不可配置的,因此我们必须修改我们publishToMavenLocal以使用 shadowJar。

4

2 回答 2

3

我向 JitPack 提出了支持请求,他们返回了以下代码,我已经测试过这些代码在 2018 年 4 月 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
    }
}
于 2018-04-06T18:26:09.363 回答
2

可能有点晚了,但我让它运行了,只是将工件添加到发布部分,如下所示:

publishing {
publications {
    mavenJava(MavenPublication) {
        groupId project.group
        artifactId project.name
        version project.version
        from components.java
        artifact sourceJar {
            classifier "sources"
        }
        artifact shadowJar
    }
}....
于 2018-05-15T05:36:13.753 回答