Gradle:发布包含项目

时间:2016-07-23 04:11:50

标签: gradle publish artifactory

我迷失在所有这些插件中:(

到目前为止,看起来像这样:

artifactory {
  contextUrl = artifactoryUrl
  publish {
    repository {
      repoKey = project.repo
      username = artifactoryUser
      password = artifactoryPassword
      maven = true

    defaults {
      publications('mavenJava')
    }
  }
}

version = "${majorVersion}${buildNumber}${snapshot}"
publishing {
  publications {
    mavenJava(MavenPublication) {
      from components.java
      artifact sourceJar {
        classifier = 'sources'
      }
    }
  }
}

对不起,我自己写了这个,但是,主要是通过复制和粘贴我在网上找到的各种例子中的内容,所以我不确定这实际上是做什么的:(

令人惊讶的是,这可行:我可以gradle artifactoryPublish,并将pom文件和两个jar(类和源)上传到artifactory。

但是,我需要对其进行修改,以便我可以将项目的子集作为不同的工件发布,并且只包含它所需的依赖项。 我设法建立了一个jar文件:

 task utilJar(type: Jar) {
   from sourceSets.main.output.classesDir
   include '**/util/*.class'
   baseName 'basic-util'
 }

我还定义了一个带有依赖项子集的配置:

 configurations {
    util 
 }

 dependencies {
   util "org.apache.commons:commons-lang3:3.4"
   util "com.google.guava:guava:18.0"
 }

 artifacts {
   util utilJar
 }

这是我被卡住的地方。如何发布这个新工件?

我尝试遵循相同的策略:

publishing {
  publications {
    mavenUtil(MavenPublication) {
      from components.java
      artifact utilJar {
        classifier = 'util'
      }
    }
  }
} 

artifactory {
 defaults {
   publications('mavenUtil')
 }
}

(这是在一个子项目中,所以我需要它是增量的) 这不起作用: Could not find method defaults() for arguments [build_8axxghkylu3559p5lal6spy1u$_run_closure7$_closure11@38abcbd4]

但是,即使它确实如此,它仍然不是我需要的,因为我不知道如何发布一个特定的工件:我可以发布任何东西的唯一方法是{{1但是,这并没有问我要发布哪些工件。它会每次都发布一切吗?

正如你所看到的,我绝望地迷失在这里:( 有人可以告诉我明白了吗?

UPDATE 所以,我从构建中移除了最后一个gradle artifactoryPublish闭包,现在我没有收到错误,但仍然无法让它做我需要的。 我的神秘现在似乎没有好心情,所以我在当地出版。

artifactory像以前一样创建一个工件,但是将新的“-util”jar添加到其中。这根本不是我想要的。我需要一个新的,独立的工件,包含该jar文件,以及它自己的一组依赖项。

这里:https://docs.gradle.org/current/userguide/publishing_maven.html#publishing_maven:repositories我发现了一个建议,即“创建的任务被命名为”发布«PUBNAME»PublicationTo«REPONAME»Repository“”。这似乎不是真的,因为gradle publishToMavenLocal(我可以想到所有的案例变化)说没有这样的任务。 :(

1 个答案:

答案 0 :(得分:0)

您是否尝试过使用set me up功能?它适用于所有版本的Artifactory。它应该为您配置gradle项目以使用Artifactory提供一个很好的起点。

特别是对于Gradle,它可以帮助您根据要解析/发布的存储库生成相关配置,定义相关的依赖项以安装jfrog插件等。