【问题标题】:gradle configuration to download custom plugin dependenciesgradle 配置以下载自定义插件依赖项
【发布时间】:2014-07-15 07:09:48
【问题描述】:

我创建了一个 gradle 插件(简称为 testinfra),它的编译时间和运行时依赖于其他 2 个 jar。这是我的插件的 build.gradle:

/**
 * Define the dependencies for compiling the plugin code
 */
dependencies {
    compile gradleApi()
    compile localGroovy()
    compile group:'com.mycompany.tools', name: 'lrgmanager', version: '1.0+'
    compile group: 'com.mycompany.tools', name: 'LrgParser', version: '1.0+'
}


/**
 * This task is responsible for publishing the plugin jar in the artifactory
 */ 
group   = 'com.mycompany.tools'  
version = '1.0'
publishing {
    publications {
        publishPlugin(MavenPublication) {
            artifact jar
        }
    }
}

我可以将我的插件 jar 推送到 artifactory。但是当我想使用插件时,我必须指定插件的 GAV 及其依赖项。见下文:

/**
 * define classpath for buildscript{}, to download the regression plugin and its dependencies
 */
buildscript {
    dependencies {
        classpath group: 'com.mycompany.tools', name: 'testinfra', version: '1.0+'
        classpath group:'com.mycompany.tools', name: 'lrgmanager', version: '1.0+'
        classpath group: 'com.mycompany.tools', name: 'LrgParser', version: '1.0+'
    }
}
apply plugin: 'testinfra'

我的要求是避免指定依赖 jar 的 GAV 以及 testinfra 插件 GAV。有没有一种方法可以在发布期间配置我的 pom.xml(发布任务),这样当我指定插件的 GAV 时,gradle 会识别依赖项并下载它们?

我试图为此参考 gradle 用户指南,但我没有看到任何明确的示例。

【问题讨论】:

标签: maven gradle


【解决方案1】:

使用from components.java 代替artifact jar。然后依赖项应该会出现在 POM 中,Gradle 会自动将它们拉入。

【讨论】:

  • 这是一个时髦的代码。我还需要说 components.java 还是必须说 components.groovy ?
  • 使用components.java。没有components.groovy
  • 将 components.java 添加到我的插件的 build.gradle 不起作用。这是生成的 pom.xml(与之前相同)` maven.apache.org/POM/4.0.0 maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="maven.apache.org/POM/4.0.0" xmlns:xsi="w3.org/2001/XMLSchema-instance"> 4.0.0com.oracle.emaas.emditestinfra1.0 pom`
  • 很可能你的构建有问题。查看Gradle User Guide 中的 maven-publish 插件章节了解详细信息。请注意,它是from components.java,而不是components.java
  • 是的,我使用的是components.java。当我使用from components.java 时,它起作用了。但是现在它失败了,因为没有拉取插件依赖项的依赖项。即,testinfra 依赖 lrgmanager 和 lrgManager 依赖 groovy:2.3 我修改了 lrgManager 的 build.gradle 和 testinfra build.gradle 的代码以使用from components.java,我看到 lrgmanager 的 pom 具有 groovy 的依赖项。并且testinfra的pom有lrgparser和lrgmanager的依赖项。我应该怎么做才能获得 groovy:2.3 呢?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-09-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-23
  • 1970-01-01
相关资源
最近更新 更多