【问题标题】:Configure Gradle to publish sources and javadoc配置 Gradle 以发布源代码和 javadoc
【发布时间】:2014-02-20 09:58:18
【问题描述】:

如何配置 Gradle 以将源和 javadoc jar 发布到存储库?

【问题讨论】:

    标签: java gradle


    【解决方案1】:

    Gradle 6.0 的解决方案

    如果您使用的是 Gradle 6.0 或更高版本,则可以使用以下最低配置;注意新引入的withSourcesJar()withJavadocJar() 方法:

    plugins {
        id 'java'
        id 'maven-publish'
    }
    
    group = 'com.example'
    
    java {
        withSourcesJar()
        withJavadocJar()
    }
    
    publishing {
        repositories {
            maven {
                url = 'file:///tmp/my-repo'
            }
        }
        publications {
            myJava(MavenPublication) {
               from components.java
           }
        }
    }
    

    当然,你也可以使用ivy-publish插件代替maven-publish

    另请参阅 Gradle 文档:

    【讨论】:

      【解决方案2】:

      将以下代码添加到构建脚本中:

      task packageJavadoc(type: Jar, dependsOn: 'javadoc') {
          from javadoc.destinationDir
          classifier = 'javadoc'
      }
      task packageSources(type: Jar, dependsOn: 'classes') {
          from sourceSets.main.allSource
          classifier = 'sources'
      }
      artifacts {
          archives packageJavadoc
          archives packageSources
      }
      

      使用 Gradle 1.10 测试

      【讨论】:

      • 被打败了:p 我也让sourcesJar(你称之为packageSources 依赖于classes;如果源编译失败,它会避免生成源jar:p
      • 谢谢@fge,我测试了你的建议并更新了答案
      【解决方案3】:

      2017,Gradle 4.0 版:

      apply plugin: 'maven'
      apply plugin: 'maven-publish'
      
      publishing {
          publications {
              mavenJava(MavenPublication) {
                  from components.java
      
                  artifact sourceJar
                  artifact packageJavadoc
              }
          }
      }
      
      javadoc {
        source = sourceSets.main.allJava
        classpath = configurations.compileClasspath
      
        options
        {
          setMemberLevel JavadocMemberLevel.PUBLIC
          setAuthor true
      
          links "https://docs.oracle.com/javase/8/docs/api/"
        }
      }
      
      task sourceJar(type: Jar) {
        classifier = 'sources'
        from sourceSets.main.allJava
      }
      
      task packageJavadoc(type: Jar) {
          from javadoc
          classifier = 'javadoc'
      }
      

      适用于 gradle publishgradle publishToMavenLocal

      【讨论】:

      • 有人有 2019 Gradle 5.4.1 的更新吗?
      • @dammason:不,但也许我的2019 update for Gradle 6.0 会帮助你;-)
      • 顺便说一句,@sobutterysosmooth:+1 但真的需要应用maven 插件吗?
      【解决方案4】:

      Paolo Fulgoni 的答案一直有效,直到我将 Gradle 版本升级到 3.1。为了让 packageJavadoc 任务与 Gradle 3.1 一起工作,我发现我必须对其进行如下微调:

      task packageJavadoc(type: Jar) {
          from javadoc
          classifier = 'javadoc'
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-03-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-08-12
        • 1970-01-01
        • 2019-02-11
        相关资源
        最近更新 更多