Build Gradle:如何从非java项目发布zip并在java项目中使用它?

Build Gradle:如何从非java项目发布zip并在java项目中使用它?,build,gradle,Build,Gradle,我有一个多项目设置。我创建了一个非java项目,其工件是一个zip文件,我将在另一个项目中解压缩它。因此,想法如下 my-non-java-project build.gradle ------------ apply plugin: 'base' task doZip(type:Zip) { ... } task build(dependsOn: doZip) << { } artifacts { archives

我有一个多项目设置。我创建了一个非java项目,其工件是一个zip文件,我将在另一个项目中解压缩它。因此,想法如下

my-non-java-project
  build.gradle
  ------------
    apply plugin: 'base'

    task doZip(type:Zip) { ... }

    task build(dependsOn: doZip) << {
    }

    artifacts {
      archives doZip
    }


some-java-project
  build.gradle
  ------------
    apply plugin: 'war'
    configurations {
      includeContent // This is a custom configuration
    }
    dependency {
      includeContent project(':my-non-java-project')
    }

    task expandContent(type:Copy) {
      // Here is where I would like get hold of the all the files
      // belonging to the 'includeContent' configuration
      // But this is always turning out to be empty. Not sure how do I publish
      // non-java content to the local repository (as understood by groovy)
    }
我的非java项目
格雷德尔先生
------------
应用插件:“基本”
任务doZip(类型:Zip){…}

任务构建(dependsOn:doZip)并不确切地确定您想要的是什么,但这里有一种快速而肮脏的方法来访问
:我的非java项目:doZip任务输出:

project(":my-non-java-project").tasks.getByName("doZip").outputs.files
请注意,
归档了
配置,而不是基本插件。但是您仍然可以在
my non-java project
中定义自定义配置,并使用OP中的代码将工件添加到其中:

//in my-non-java-project/build.gradle
configurations {
    archives
}
artifacts {
    archives doZip
}
然后,您可以通过配置访问任务输出,如下所示(同样,又快又脏):

请注意,您可以使用扩展zip文件的内容


如果您确实需要发布由
我的非java项目
生成的zip,您可以。

您只是想访问
输出
:我的非java项目:doZip
任务,还是需要将zip发布到存储库(本地文件系统或远程)?感谢您提供的解决方案。这就解决了眼前的问题。我对ant+ivy有相当多的经验,也了解一些内部操作。在Gradle的例子中,我试图弄清楚如何将工件(任何文件类型)发布到本地Gradle repo(当依赖项是项目时,Java/War插件会使用它)。注意,我问的是Gradle的内部回购,而不是ivy/maven。
//in some-java-project/build.gradle
project(":my-non-java-project").configurations.archives.artifacts.files