Gradle:如何在运行任务时将子项目jar复制到另一个子项目?

时间:2014-02-19 15:36:38

标签: java gradle

我在Gradle中有以下多项目结构:

- root-project
  - acceptance-tests
  - sub-java-proj

acceptance-tests有一个任务cucumber(由Gradle Cucumber-plugin提供),它运行项目中的Cucumber功能。但是,我需要在运行功能之前进行一些引导。特别是,在cucumber任务之前,Gradle应执行以下操作:

  1. sub-java-proj中运行测试,如果他们通过则生成其jar文件(如果没有失败)
  2. 将jar文件从1)复制到目录accentance-tests/proglib
  3. 像普通
  4. 一样运行Cucumber功能
  5. 删除2)
  6. 中复制的jar文件

    我对Gradle完全陌生,所以我不确定如何正确实现这一点。我的第一个想法是让acceptance-tests依赖sub-java-proj(使用testRuntime配置),但我觉得这是滥用依赖机制:这样做的唯一原因是确保sub-java-proj是在acceptance-tests运行之前编译的,但实际上这也是acceptance-tests的类路径通过添加来自sub-java-proj的jar而混淆的,并且还存在传递依赖的问题。简而言之:acceptance-tests除了复制它之外,不应该有任何来处理sub-java-proj

    非常感谢有关如何实现这一目标的建议。

    更新

    到目前为止,我在acceptance-tests/build.gradle中有以下内容:

    task fix(dependsOn: ':sub-java-proj:jar', type: Copy) {
        from tasks.getByPath(':sub-java-proj:jar')
        to 'proglib'
    }
    
    task unfix(type: Delete) {
        delete fix
    }
    
    cucumber.dependsOn fix
    cucumber.finalizedBy unfix
    

    但是,除了unfix还删除了proglib目录之外,这也有效。它应该只删除jar文件。任何想法如何解决这个问题?

0 个答案:

没有答案