Build Gradle:如何将jar位置配置为项目的父目录?

Build Gradle:如何将jar位置配置为项目的父目录?,build,jar,directory,gradle,Build,Jar,Directory,Gradle,我正在尝试构建一个Gradle JAR项目,它是另一个项目的子项目,并且希望输出JAR文件位于父目录中(具体地说是父目录或同级目录的“lib”目录中)。如何为此配置Gradle以及在何处记录?同意Peter键入的评论。然而,我认为您想要表示父项目依赖于子模块的输出。表达这一点并确保父模块将子模块的输出复制到其“lib”目录更有意义 task assembleSubModules(type: Copy) { destinationDir = file("lib") into("lib")

我正在尝试构建一个Gradle JAR项目,它是另一个项目的子项目,并且希望输出JAR文件位于父目录中(具体地说是父目录或同级目录的“lib”目录中)。如何为此配置Gradle以及在何处记录?

同意Peter键入的评论。然而,我认为您想要表示父项目依赖于子模块的输出。表达这一点并确保父模块将子模块的输出复制到其“lib”目录更有意义

task assembleSubModules(type: Copy) {
  destinationDir = file("lib")

  into("lib") {
    project.subprojects.each { p ->
      from(p.tasks.withType(Jar)*.outputs)
    }
  }
}

build.gradle
中,添加:

libsDirName = '../../lib'
配置设置显示在的官方Gradle文档中


顺便说一句,我完全同意Peter和Hiery给出的评论和回答背后的意图,但有时最简单的解决方案就是最好的解决方案。

为什么要这样做?每个项目都有自己的构建输出目录,我不建议偏离这个目录。这让人困惑,意味着你将无法独立清理项目。嗨,Peter,我理解分离子项目构建的原理,但在本例中,我创建了一个Grails插件,它依赖于子项目中的jar(包含groovy源代码),该jar是使用Gradle构建的。我希望jar被输出到插件的“lib”目录。插件本身没有构建(因为它是一个Grails插件),只有子项目。希望Gradle足够灵活,可以做我想做的事情,而不会对项目结构强加严格的规则,比如Maven;)当然可以,但可能有更好的解决方案来解决你的问题(我对这个问题了解得还不够)。