我正在尋找一種簡單的解決方案來在編譯之前查找並替換常量。例如@[email protected]
替換爲1.0.0
,因此程序可以訪問正確版本#s
。在編譯之前更改版本常量
0
A
回答
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類。
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
相關問題
- 1. 在預編譯之前更改網站應用程序的DLL文件版本
- 2. 更改運行時編譯版本
- 3. 更改Visual Studio編譯器版本
- 4. 更改Eclipse中大量項目的編譯器版本
- 5. 獲取以前版本和當前版本之間的所有VCS更改
- 6. Tablayout在將編譯sdk版本從23更改爲24之後被破壞
- 7. 在Ruby的編譯版本和rvm版本之間切換
- 8. 在xCode編譯之前從SVN獲取當前修訂版
- 9. 錯誤在編譯編譯版本
- 10. 如何在編譯後更改* .a文件的版本信息
- 11. 更改JSP編譯器版本在GlassFish中
- 12. 如何在eclipse中將編譯版本更改爲api 23 android?
- 13. 在java中更改現有jar文件的編譯版本
- 14. 在iTunes上線前更改版本
- 15. 在已編譯的類中更改字符串常量
- 16. 是一個編譯時常量索引編譯時常量數組本身編譯時常量?
- 17. Android - 在onCreate之前更改類變量
- 18. 在importlib.reload之前更改環境變量
- 19. 在Eclipse中更改文本編譯
- 20. require.js編譯版本
- 21. C#編譯版本
- 22. 編譯版本3.2
- 23. Android Studio更新編譯sdk版本
- 24. ';'在數字常量之前
- 25. eclipse崩潰時的編譯器版本更改
- 26. 如何更改編譯單元的版本?
- 27. 版本2.10中的Mono.CSharp(編譯器即服務)更改
- 28. 更改MATLAB編譯運行時jvm版本
- 29. 如何將g ++編譯器的版本從4.1.2更改爲4.5?
- 30. 爲什麼不提交對版本控制的更改...之前
中引用我改變它,但得到它的工作。謝謝 – DarkGuardsman