2017-06-13 39 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