【问题标题】:How to publish programmatically manipulated (e.g. instrumented) jars in Gradle?如何在 Gradle 中发布以编程方式操作(例如检测)的 jar?
【发布时间】:2014-04-17 00:29:34
【问题描述】:

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

由于“maven-publishing”插件似乎只支持“java”和“web”项目,我将“java”插件应用到 CrazyJar。但是 CrazyJar 没有来源!我最终发布了一个空的工件。有什么办法可以让它像普通的 Java 项目一样工作吗?如果没有,我还能做什么?

【问题讨论】:

  • maven-publishing 插件(目前)仅支持 javaweb components,但它也允许发布任意 artifacts (如Gradle User Guide 中所述)。

标签: java maven gradle


【解决方案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
    }
  }
}

酷应用项目

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-09-16
    • 1970-01-01
    • 1970-01-01
    • 2010-09-17
    • 1970-01-01
    • 1970-01-01
    • 2021-03-24
    相关资源
    最近更新 更多