我有一个包含不同库模块的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
内使用子模块的配置对象?
答案 0 :(得分:0)
您可以使用任务的project
属性。只需在您尝试访问的子项目对象前添加task.project.
,如下所示:
configuration = task.project.configurations['archives']