2015-06-07 27 views

回答

0

如果你真的需要改變,由於項目限制你的源代碼,這可能爲你工作:

假設你的版本信息保存在一個名爲VersionInfo.java,下面的代碼片段拷貝從默認的文件夾中的原始VERSIONINFO源類插入到生成的文件夾中,並通過更新版本信息來處理文件。你compileJava任務需要這個生成的文件作爲另一個來源,而忽略了原來的編譯過程中,以避免重複類名的錯誤:

task preprocessVersionInfo(type:Copy){ 
    include "VersionInfo.java" 
    from "src/main/java" 
    into "$buildDir/preprocessedJava" 

    inputs.property "version", project.version 

    filter(org.apache.tools.ant.filters.ReplaceTokens, tokens: [version: project.version]) 
} 

compileJava { 
    source preprocessVersionInfo.outputs.files 
    exclude { 
     it.file.absolutePath.endsWith("src/main/java/VersionInfo.java") 
    } 
} 

旁註:這種方法保持了IDE設置爲是,在開發過程中意味着你會繼續使用未修改的VersionInfo類。

+0

中引用我改變它,但得到它的工作。謝謝 – DarkGuardsman

1

我認爲比改變源代碼更好的方法是將版本信息保存在jar中的屬性文件中。 (例如src/main/resources/versioninfo.properties)。這個文件可以簡單地通過使用ReplaceTokens過濾器在生成過程中改變:

processResources { 
    inputs.property "version", project.version 
    filter(org.apache.tools.ant.filters.ReplaceTokens, tokens: [version: project.version]) 
} 

然後你可以閱讀從一個單獨的類此版本信息。

+0

是的,這將是一個更好的方法。但是,由於項目的限制,我必須使用一個常量,然後將在註釋「@Plugin(Name,ID,Version)」 – DarkGuardsman