如何使用gradle构建源jar

问题

我正在使用一个用gradle构建的开源项目。我想生成一个(项目)-sources.jar文件,我可以将其加载到我的IDE(IntelliJ IDEA)中并通过项目进行调试。如果我可以生成它,我知道如何加载文件。

我查看了项目的可用gradle任务,但没有一个生成源jar文件。

为此项目生成源jar文件的最简单方法是什么?

将源添加到包含已编译类文件的jar文件中也可以。


#1 热门回答(204 赞)

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

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

artifacts {
    archives sourcesJar
    archives javadocJar
}

#2 热门回答(43 赞)

如果你使用的是Android:

task sourcesJar(type: Jar) {
    from android.sourceSets.main.java.srcDirs
    classifier = 'sources'
}

task javadoc(type: Javadoc) {
    source = android.sourceSets.main.java.srcDirs
    classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
}

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

artifacts {
    archives javadocJar
    archives sourcesJar
}

fromhere


#3 热门回答(31 赞)

如果你想将源代码添加到已编译的类JAR文件中,你也说这是可以接受的,你可以很容易地做到这一点。只需将以下内容添加到构建文件中即可。从理论上讲,你可以看到它非常类似于将源放入单独的JAR的解决方案:

jar {
     from sourceSets.main.allSource
 }

不同之处在于你通过使用"jar"代替sourcesJar将其添加到主JAR文件中。