如何在Gradle中以编程方式发布操作(例如仪表化)的罐子?

时间:2014-04-17 00:29:34

标签: java maven gradle

我有一个多项目构建。子项目CoolApp依赖于子项目CrazyJar。 Project CrazyJar没有任何来源:它使用一个工具对从非Gradle项目BigProject派生的现有jar执行字节代码操作,并希望发布由CoolApp依赖的结果操作jar。它需要将其作为本地Maven包发布。

因为它似乎是" maven-publishing"插件只支持" java"和" web"项目,我应用" java"插件到CrazyJar。但CrazyJar没有消息来源!我最终发布了一个空的神器。有没有什么方法可以将它作为一个普通的Java项目来破坏它?如果没有,我可能做的其他事情呢?

1 个答案:

答案 0 :(得分:1)

嗯,是的,我稍微误解了我的问题。好吧,无论如何,这是我的解决方案(主要基于" maven-publish"插件的文档):

根项目

subprojects {
  repositories {
    maven {
      url "${rootDir}/repo"
    }
  }
}

CrazyJar项目

apply plugin: "maven-publish"

...

task createCrazyJar(type: Exec) {
  ...
}

publish {
  dependsOn "createCrazyJar"
}

publishing {
  publications {
    mavenJava(MavenPublication) {
      artifact createCrazyJar.outputs.getFiles().getSingleFile()
    }
  }
  repositories {
    maven {
      url project.repositories.maven.url
    }
  }
}

CoolApp项目

dependencies {
  compile group: "coolproject", name: "crazyjar", version: project("CrazyJar").version
}