如何使用Bintray用户仓库(正确)从gradle中获取依赖项?

fwe*_*and 7 dependency-management gradle bintray

这更像是"我做得对"的问题.

快速回顾:我已经构建了一个gradle插件(在一个独立的gradle/groovy项目中).我在一个不同的java项目中使用它.客户端项目通过以下方式引用它:

buildScript
{
      flatDir {
            dirs '../my-gradle-plugin/build/libs'
      }

      classpath name: 'gradle-my-plugin'
}
Run Code Online (Sandbox Code Playgroud)

所以我不想要相对引用插件项目(也不要让插件成为客户端的一部分).我以为我会看看我是否可以把它放在BinTray中,并且像个"真正的"插件一样.

所以设置BinTray并经过多次试验和错误后,我得到了它的工作,但我不认为我做对了.这是我做的:

  1. 做了一个maven回购:MyStuff
  2. 制作了一个包:gradle-my-plugin
  3. 制作版本:0.1
  4. 上传了该版本的文件,但指定了目标路径,如"org/fhw/gradle-my-plugin/0.1"

我的buildScript块看起来像这样:

buildScript {
    repositories {
        maven {
            url 'http://dl.bintray.com/my-bintray-id/MyStuff
        }
    }    
    dependencies {
        classpath 'org.fhw:gradle-my-plugin:0.1'
   }
}
Run Code Online (Sandbox Code Playgroud)

所以我很好奇的是我在BinTray上对目标所做的黑客攻击.W/O这个,上传的文件/ jar(对于版本)没有适当的路径.

这对BinTray和Gradle依赖是一个正确的过程吗?

JBa*_*uch 5

你做的是好的,虽然使用官方的Bintray插件可以让你的生活更轻松.它在今天变得越来越好,添加功能并为您做更多的工作(例如,如果它们不存在,它可以懒洋洋地创建一个包和一个版本).

另一件需要考虑的事情是将你的包装包括在jcenter中.这种包含的一个好处是oss.jfrog.org中的免费帐户,用于您的开发过程.这是一个免费的Artifactory帐户(如nexus,但更好).

另请注意,您可以将插件包含在Gradle插件门户中.一旦你这样做,你的插件的使用率下降到

plugins {
  id "org.fhw.gradle-my-plugin" version "0.1"
}
Run Code Online (Sandbox Code Playgroud)

以下是包含说明.

PS关于nexus'隐藏'的组ID - Bintray不仅限于Maven工件布局,您可以在任何需要的布局中部署文件,这就是您在通过UI上传文件时需要提供路径的原因.说,当Bintray在上传的文件中遇到pom文件时,它会自动设置路径.使用mavenmaven-publish使用Bintray插件时,该路径也是可选的- 一旦明确了那些是Maven文件,它就会计算工件的路径.