2017-06-13 65 views
0

我有以下allprojects指令在我的根项目build.gradle文件中设置JAR baseName的:摇篮3.5如何从archiveBaseName在allproject

allprojects { 

    dependencies { 
     testCompile("junit:junit:${junitVersion}") 
    } 

    jar { 
     baseName = project.archivesBaseName 
     from files(project.subprojects.sourceSets.main.output) 

     manifest { 
      attributes(
        "Created-By": vendor, 
        "Specification-Title": jar.archiveName, 
        "Specification-Version": version, 
        "Specification-Vendor": vendor, 
        "Implementation-Title": jar.baseName, 
        "Implementation-Version" : version, 
        "Implementation-Vendor": vendor, 
      ) 
     } 
    } 

} 

在每一个子项目,我在他们的build.gradlearchiveBaseName但都重新定义我的JAR档案会与根项目的archiveBaseNamebaseName一起生成。

有没有办法根据我的覆盖archiveBaseName动态创建我的档案名称?

回答

1

在计算allprojects闭包时,子项目构建脚本尚未评估,因此您看不到重写的值,而是原始值。

你必须延迟Jar任务afterEvaluate的配置。

+0

谢谢。你知道确切的synthax?我通过在我的所有子项目中创建'gradle.properties'文件以不同的方式进行管理。 – BigDong

+0

当然,我只是将'jar {}'包装在'afterEvaluate {}' – Vampire

+0

之后。您必须将它分成两部分,一部分设置基本名称,另一部分设置清单属性,否则您的覆盖不会工作。 – Vampire