如何为几个子模块定义gradle任务?

时间:2016-11-21 16:59:42

标签: gradle android-gradle

我有一个包含不同库模块的android项目。我定义了一个将工件上传到maven存储库的任务。当我直接在模块的build.gradle中定义它时,它可以工作。我想做的是在父build.gradle中定义一次任务,并在每个模块中重复使用。

我按照指南here编写了以下构建配置:

我的项目设置如下:

parent_project
|- module1
|- module2
|- module3

parent / build.gradle,默认

subprojects {    
    task installToLocalMaven(type: Upload) {
        description "Installs artifacts to local Maven repository"
        configuration = configurations['archives']
        repositories {
            mavenDeployer {
                pom.groupId = commonGroupId
                pom.artifactId = artifactId
                pom.version = gitBranch() + '-' + android.defaultConfig.versionName
                if (android.defaultConfig.versionName.endsWith("-SNAPSHOT")) {
                    snapshotRepository(url: repositories.mavenLocal().url)
                } else {
                    repository(url: repositories.mavenLocal().url)
                }
            }
        }
    }
}

project(':module1') {
    ext.artifactId = "module1"
}
...

执行gradlew :module1:installToLocalMaven会导致此错误Configuration with name 'archives' not found.

我假设使用了父项目中的配置对象。

如何确保在父build.gradle内使用子模块的配置对象?

1 个答案:

答案 0 :(得分:0)

您可以使用任务的project属性。只需在您尝试访问的子项目对象前添加task.project.,如下所示:

configuration = task.project.configurations['archives']