7

我有一个多项目设置。我创建了一个非 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 项目的工件发布到 groovy 的内部存储库,以便我可以在另一个基于 java 的项目中获取它?

4

1 回答 1

7

不完全确定你在追求什么,但这是一种快速而简单的方法来访问任务输出的FileCollection ::my-non-java-project:doZip

project(":my-non-java-project").tasks.getByName("doZip").outputs.files

请注意,archives配置是由 Java 插件添加的,而不是 Base 插件。但是您仍然可以my-non-java-project使用 OP 中的代码定义自定义配置并将工件添加到其中:

//in my-non-java-project/build.gradle
configurations {
    archives
}
artifacts {
    archives doZip
}

然后您可以通过配置访问任务输出,如下所示(再次,快速和肮脏):

//in some-java-project/build.gradle
project(":my-non-java-project").configurations.archives.artifacts.files

请注意,您可以使用zipTree.

如果您需要实际发布由 生成的 zip my-non-java-project,您可以在此处阅读相关内容

于 2013-08-28T21:39:15.693 回答