微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Gradle:在构建时将子项目文件复制到 rootproject 中

如何解决Gradle:在构建时将子项目文件复制到 rootproject 中

鉴于此 gradle 项目:

org.mycompany.rootProject
|
|--org.mycompany.subProject0001
|  |
|  |-src/
|  | |
|  | |-dist/
|  | | |
|  | | |-README.MD
|  | | |-runSubProject0001.cmd
|  | |-main/
|  | |-test/
|  | |
|  |-build.gradle
|
|--org.mycompany.subProject0002
|  | |
|  | |-dist/
|  | | |
|  | | |-README.MD
|  | | |-runSubProject0002.cmd
|  | |-main/
|  | |-test/
|  | |
|  |-build.gradle
|  .
|  .
|  . (goal is keeping going until subproject 1000)
|-build.gradle
|-settings.gradle

如何在构建时从每个子项目中获取 README 和“runSubProject”并复制到我的根项目中(目标是“{rootProject}/build/distribution/{subprojectName}/”)?

我所有的项目都使用“java-application”插件

我试图让 gradle 遍历每个子项目并将这些文件复制到我的根项目中,但我失败了。

解决方法

所以这就是我在 build.gradleorg.mycompany.rootProject 中所做的,并且奏效了:

task getArtifactsFromSubprojects {
    subprojects.each {
        if(it.getName().contains("cjv")){
            dependsOn it.getPath() + ':convertReadmeToPdf'
            def sourcePath = it.getProjectDir().toString() + '/src/dist'
            def destinationPath = getRootDir().toString() + '/src/dist/' + it.getName() + '/'
            it.copy {
                from sourcePath
                into destinationPath
            }
        }
    }
}

PS:我对我的子项目做了一些工作,并实现了一个名为 convertReadmeToPdf 的新任务,它在与 README.PDF 相同的文件夹中生成一个 README.MD

运行此任务后,结果如下:

org.mycompany.rootProject
|
|--src/
|  |
|  |-dist/
|  | |
|  | |-org.mycompany.subProject0001/
|  | | |
|  | | |-README.MD
|  | | |-runSubProject0001.cmd
|  | |
|  | |-org.mycompany.subProject0002/
|  | | |
|  | | |-README.MD
|  | | |-runSubProject0002.cmd
|  | |
|  | |-org.mycompany.subProject0003/
|  | | |
|  | | |-README.MD
|  | | |-runSubProject0003.cmd
|  | .
|  | .
|  | .
|  | 
|  |-main/
|  | 
|  |-test/
|
|
|-build.gradle
|-settings.gradle

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。