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

由于似乎“maven发布”插件仅支持“java”和“web”项目,因此我将“java”插件应用于CrazyJar。但是CrazyJar没有消息来源!我最终发布了一个空的 Artifact 。有什么办法可以使它像正常的Java项目一样工作?如果没有,我还能做什么?

最佳答案

嗯,是的,我有点误解了我的问题。好吧,这还是我的解决方案(主要基于“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
}

07-27 16:51