首页 文章

如何使用gradle构建源jar

提问于
浏览
128

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

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

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

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

5 回答

  • 33
    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
    }
    
  • 3

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

  • 47

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

    jar {
         from sourceSets.main.allSource
     }
    

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

  • 219

    这应该工作

    assemble.dependsOn 'propertyJar'
    
    task propertyJar(type: Jar) {
     archiveName = "myJarName.jar"
     from('src/main/resources') {
        include '**'
     }}
    
  • 9

    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)
        }
    }
    

相关问题