如何使用gradle构建源jar

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用gradle构建源jar相关的知识,希望对你有一定的参考价值。

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

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

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

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

答案
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
}
另一答案

如果您使用的是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
}

来自here

另一答案

如果您希望将源添加到已编译的类JAR文件中,您也说这是可以接受的,您可以轻松地完成此操作。只需将以下内容添加到构建文件中即可。从理论上讲,您可以看到它非常类似于将源放入单独的JAR的解决方案:

 jar {
     from sourceSets.main.allSource
 }

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

另一答案

这应该工作

assemble.dependsOn 'propertyJar'

task propertyJar(type: Jar) {
 archiveName = "myJarName.jar"
 from('src/main/resources') {
    include '**'
 }}
另一答案

Kotlin DSL等价物将是:

tasks {

    val sourcesJar by creating(Jar::class) {
        dependsOn(JavaPlugin.CLASSES_TASK_NAME)
        classifier = "sources"
        from(java.sourceSets["main"].allSource)
    }

    val javadocJar by creating(Jar::class) {
        dependsOn(JavaPlugin.JAVADOC_TASK_NAME)
        classifier = "javadoc"
        from(java.docsDir)
    }

    artifacts {
        add("archives", sourcesJar)
        add("archives", javadocJar)
    }
}

以上是关于如何使用gradle构建源jar的主要内容,如果未能解决你的问题,请参考以下文章

如何添加jcenter仓库 gradle依赖

如何使用gradle构建工具打包groovy脚本成jar文件

如何在不使用 Gradle 复制 jar 的情况下将一个模块的源包含在另一个模块中?

如何使用具有依赖关系的gradle构建jar文件

如何使用 Gradle 构建名称中没有“-SNAPSHOT”的 jar?

Gradle 引入本地定制 jar 包