7

这更像是一个“我做得对吗”的问题。

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

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

      classpath name: 'gradle-my-plugin'
}

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

所以设置 BinTray 并经过多次试验和错误,我让它工作,但我认为我没有正确。这是我所做的:

  1. 做了一个 maven repo: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'
   }
}

所以我很好奇的是我对 BinTray 上的目标所做的 hack。没有这个,上传的文件/罐子(对于一个版本)没有正确的路径。

那么这是 BinTray 和 Gradle 依赖项的正确过程吗?

4

1 回答 1

5

你所做的没问题,尽管使用官方的 Bintray 插件可以让你的生活更轻松。它一天比一天好,添加功能并为您做越来越多的工作(例如,如果它们不存在,它可以懒惰地为您创建一个包和一个版本)。

要考虑的另一件事是将您的包包含到jcenter中。这种包含的好处之一是在 oss.jfrog.org 中为您的开发过程提供一个免费帐户。这是一个免费的 Artifactory 帐户(类似于 nexus,但要好得多)。

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

plugins {
  id "org.fhw.gradle-my-plugin" version "0.1"
}

这是包含说明

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

于 2014-09-14T07:02:57.427 回答