1. 程式人生 > >希望大牛加入,共同為專案智慧化管理jar包而努力

希望大牛加入,共同為專案智慧化管理jar包而努力

看到了吧,當你的程式需要使用第三方封裝好的功能時,可以通過引入jar包來實現。我為什麼感覺到沒有必要呢?因為我覺得完全可以依賴於某個智慧化工具來處理這件事情,也就是智慧化引包。想想下面的一些問題吧。假如我要在專案中新增郵件傳送功能並且想通過第三方jar包來實現時,不但要知道相關功能在哪個jar包(幸虧maven也幫助我們引入了三方包的依賴),並且需要準確寫出jar包的相關資訊,比如唯一名稱,版本號等。假如我使用了hibernate的3.6.7.Final這個版本,那麼在新需求開發時,專案還需要用到spring相關的功能,應該怎麼做呢?搜尋使用spring需要引入哪些依賴包嗎?根據本人多年的經驗,如果你不查一下與已有Hibernate相關包的相容性,那起衝突的概率是非常大的。PS:不要和我說Eclipse,IDEA不是有這個功能嗎?我說的不是專案新建的時候,而是在專案開發過程中加入新的三方jar包。你有遇到過ClassNotFoundException異常嗎?我覺得大部分時候出現這種異常都是由於相關jar包引入不全,或者由於版本的問題,某個類並不存在而引起的。這種問題一般在執行專案時才會發現,想想為什麼?很簡單,你的原始碼中肯定沒有直接用這個類,專案不報錯你當然在編寫原始碼時發現不了。以前工作時專案經理讓我把兩個老專案改造成maven專案,以方便對專案進行jar包管理,專案打包、編譯和部署。我查找了這個專案依賴的每一個jar包(包多,非常痛苦),然後轉換為maven的<dependency>,那時候想了想,不就是把以前依賴的包轉換為maven的寫法,讓maven來引入不就行了嗎?其實事情遠沒有想像的那麼簡單,尤其是你的專案依賴的包很多時,非常容易引起衝突。舉個例子,好多的三方jar包會依賴log4j或者logback進行日誌記錄,maven就會幫助你引入這些三方jar包所依賴的包,那麼就有可能引入一些版本不同的日誌記錄包,也就是專案中出現了好多相同的類,還需要配合<dependency>節點下的<exclude>來排除某些包。記得曾經struts2的核心包暴露了一個巨大的安全隱患,而你又不幸的在專案中使用了這一版本的包,那麼肯定還需要修改依賴配置,引入最新發布的補丁包(你知道補丁包具體的版本號是多少嗎)。對於知道的人是這樣,對於不知道的人也就那樣了。如果你經歷過這些事情,那麼假如現在有一個智慧管理jar包的工具(暫時命名為autort,意為auto import)為你管理類似下面這一坨的東西,你願不願意用上一用呢?
<dependencies> 
    <dependency> 
        <groupId>org.apache.geronimo.ext.openejb</groupId> 
        <artifactId>javaee-api</artifactId> 
        <version>5.0.3</version> 
    </dependency> 
    <dependency> 
      <groupId>javax.servlet</groupId> 
      <artifactId>jstl</artifactId> 
      <version>1.2</version> 
      <scope>provided</scope> 
    </dependency> 
    <dependency> 
      <groupId>javax.servlet.jsp</groupId> 
      <artifactId>jsp-api</artifactId> 
      <version>2.1</version> 
      <scope>provided</scope> 
    </dependency> 
    ...
</dependencies>