您如何確定框架的這種和那種功能需要哪些罐子?例如,爲了僅支持依賴注入,所有可用於Spring的jar都需要哪些jar?確定某個功能需要哪些最小罐子
5
A
回答
4
有一些工具可以通過靜態分析代碼找出實際在應用程序中使用哪些類來創建最小的JAR,然後創建一個僅包含一個新的JAR這些類。 (我記得使用Zelix班主任要做到這一點,但也有很多的替代品)
問題與使用這些工具對於像春天有個DI框架包括:
現有的僅微量靜態依賴。如果你動態加載類,你必須特別告訴分析器每一個。 DI框架,特別是Spring充滿了動態加載,包括對應用程序代碼不透明的動態加載。
現有的工具通過創建新的輸出JAR來工作,而不是告訴您哪個輸入JAR沒有被使用。如果您要從封閉源代碼庫創建縮減封裝的應用程序,重新打包JAR是可以的,但這通常是不理想的,並且可能會對某些開放源代碼許可證造成問題。當然,你不想用Spring來做這件事。
從理論上講,有人可以寫一個工具來幫助。實際上,該工具需要(例如)知道如何從註釋中表達的Spring配置,XML以及從高級配置(例如SpringSecurity執行此操作)在運行時創建的bean描述符中提取動態類依賴關係。這是一個很大的問題。即使如此,您仍然有一個問題,即由於JAR修剪過程中遺漏了必需的JAR,導致安裝平臺上的配線「小」更改可能會失敗。
在我看來,更切實可行的辦法是:
- 如果你使用Maven /常春藤來管理你的依賴,看看依賴關係圖,去掉那些看起來不再需要依賴...並進行測試,測試,測試。
- 手動去除看似未使用的JAR ......並測試,測試,測試。
- 別擔心。中等程度的未使用的JAR cruft可能會爲部署和webapp啓動時間增加一到三分之一,但這通常並不重要。 (但是,如果它......見上面)
1
這就是爲什麼一些較老的Java項目最終擁有600個Jars和一個200MB的戰爭文件,對於10,000行應用程序。有一種痛苦,如果你不仔細管理它...
0
你應該真的問框架提供者或閱讀文檔。在某些情況下(動態加載),靜態分析需要的罐子可能不夠,有時候最終會出現過多的罐子。
我曾經爲某種「實用程序」庫做過一些ftp幫助程序。它依賴於一些apache ftp jar。如果你從來不使用庫中的ftp功能,你不需要ftp jar,但是對代碼的靜態分析可能會說你需要它。這是你應該記錄的東西。
相關問題
- 1. 哪個Oracle JDBC罐需要
- 2. 要使用硒HtmlUnitDriver,需要哪些罐子?
- 3. 需要哪個罐子才能嵌入Neo4j?
- 4. Adobe Air中最需要哪些功能?
- 5. 使用Spring框架的AspectJ需要哪些罐子?
- 6. 哪些罐子需要存在於WEB-INF \ lib和.classpath中
- 7. 在春天建立AOP環境需要哪些罐子?
- 8. 如何確定哪些測試最能代表您想要創建的功能?
- 9. Java「罐子」功能在哪裏
- 10. 某個tinyxml能解釋哪些字符需要轉義?
- 11. Spring3所需的罐子和其他罐子的功能?
- 12. 如何確定哪些功能正在使用哪個頭?
- 13. 如何將所有需要的罐子放入一個最終罐子?
- 14. 這依賴需要一定的罐子
- 15. 導軌和網絡套接字:需要某個功能的某些方向
- 16. Objectify4需要的罐子
- 17. 確定項目實際需要的罐子
- 18. One Jar需要另一個罐子
- 19. 確定哪些訂單一個功能被執行從
- 20. 果園模塊某些功能需要升級facebook.lite
- 21. https需要Chrome瀏覽器的某些功能
- 22. mongodb:列出可用數據庫需要哪些最小角色?
- 23. 使用Smack 4.1.0的GCM XMPP服務器 - 需要添加哪些罐子
- 24. 如何定期執行某些功能,如果這個功能隨時間需要運行(比peroid以下)
- 25. 需要幫助最小和最大功能?
- 26. 如何確定哪個小部件觸發了插槽功能?
- 27. 我需要哪些子類遷移?
- 28. 設計 - 有可能某些用戶不需要確認嗎?
- 29. 決定需要哪個子類的最佳方法
- 30. 安全表單輸入需要哪些功能?
測試,測試,測試。 但通常如果框架說它需要所有的罐子,你最好提供所有的罐子,否則你是自己的。 – 2010-05-08 23:56:01
Spring就是一個例子。幾乎所有的第三方依賴都在Maven POM中標記爲可選。我同意測試是這個「全部」,但這是一個很好的問題 - 我經常希望能夠在運行時知道哪些庫實際使用了。 我已經使用了Java時間本地編譯器 - 它記錄了所有使用的類和它們來自的罐子。您可以模擬類似於跟蹤加載的類的自定義類加載器並使用Class.getResource()來確定位置的東西。 – mdma 2010-05-09 00:08:29