2016-11-21 29 views
0

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

我跟着引导here写出下列构建配置:

我的项目设置是这样的:

parent_project 
|- module1 
|- module2 
|- module3 

父/的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

你见过gradle-fury了吗?看起来像它所做的一切,你需要更多 – spy

回答

0

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

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

我试过这个,但它导致一个未知的属性错误的任务 – Sven

相关问题