【问题标题】:Gradle: publish an artifact with a subset of files/dependencies of a projectGradle:发布带有项目文件/依赖项子集的工件
【发布时间】:2016-11-27 01:03:51
【问题描述】:

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

到目前为止,我所拥有的看起来像这样:

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]

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

如你所见,我在这里彻底迷路了 :( 有线索的人可以给我指点灯吗?

更新因此,我从构建中删除了最后一个 artifactory 闭包,现在我没有收到错误,但仍然无法让它做我需要的事情。 我的神器现在好像心情不太好,所以在本地发布。

gradle publishToMavenLocal 像以前一样创建单个工件,但将我的新“-util”jar 添加到它。这根本不是我想要的。我需要一个新的、单独的工件,带有那个 jar 文件和它自己的一组依赖项。

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

【问题讨论】:

  • 尝试gradle tasks --all查看所有可用任务

标签: gradle publish artifactory


【解决方案1】:

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

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

【讨论】:

  • 是的,我用它来获得我现在拥有的东西(在我的帖子的开头)。不知道它对我现在需要做的事情有什么帮助。
猜你喜欢
  • 2012-07-23
  • 1970-01-01
  • 1970-01-01
  • 2014-09-13
  • 1970-01-01
  • 1970-01-01
  • 2018-10-15
  • 1970-01-01
  • 2013-10-14
相关资源
最近更新 更多