如何在gradle中的分发中包含自定义工件

如何在gradle中的分发中包含自定义工件,gradle,Gradle,我想知道如何在使用gradle以规范方式构建的发行版zip中包含自定义构建工件。我通过直接引用工件的路径成功地做到了这一点,但我猜有更好的方法来实现这一点: task sourcesJar(type: Jar, dependsOn: tasks.classes) { classifier 'sources' from sourceSets.main.allSource } tasks.distZip.shouldRunAfter tasks.sourcesJar tasks.d

我想知道如何在使用gradle以规范方式构建的发行版zip中包含自定义构建工件。我通过直接引用工件的路径成功地做到了这一点,但我猜有更好的方法来实现这一点:

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

tasks.distZip.shouldRunAfter tasks.sourcesJar
tasks.distTar.shouldRunAfter tasks.sourcesJar

artifacts {
    archives sourcesJar
}

distributions {
    main {
        contents {
            from { "${libsDir}/${project.name}-${version}-sources.jar" }
        }
    }
}
如何根据其定义引用源工件的名称,或者是否有更好的方法将构建工件包含在发行版中?

可能是这样的:

apply plugin: 'java'
apply plugin: 'distribution'

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

tasks.distZip.shouldRunAfter tasks.sourcesJar
tasks.distTar.shouldRunAfter tasks.sourcesJar

artifacts {
    archives sourcesJar
}

distributions {
    main {
        contents {
            from { tasks.sourcesJar.archivePath }
        }
    }
}

您也可以直接引用jar任务,如下所示:

distributions {
    main {
        contents {
            from { sourcesJar }
        }
    }
}