CONAN ZONE

          你越掙扎我就越興奮

          BlogJava 首頁 新隨筆 聯系 聚合 管理
            0 Posts :: 282 Stories :: 0 Comments :: 0 Trackbacks

          搭建最簡單的開發環境 Top

          首先我們來看看如何搭建最簡單的J2EE項目的開發環境。

          1. 我們需要建立的一個空的J2EE項目的目錄結構



          在這里,我簡單解釋一下這些目錄的作用:

          src(source folder):存放所有的Java源代碼。
          conf(source folder):存放所有的配置文件。
          test(source folder):存放所有的Java測試代碼和調試代碼。
          web:web項目的根目錄,下面有WEB-INF目錄以及在此之下的classes和lib目錄。classes目錄將會成為所有的source folder的編譯對象目錄,而lib目錄則存放項目所依賴的jar包。
          lib:也存放jar包,這些jar包可能僅僅在開發調試時依賴,項目本身則不依賴這些jar文件。

          2. 編寫IDE相關的文件

          在這里,你還能看到classpath文件和project文件。這兩個文件是導入到eclipse中所必須的文件,是我為eclipse工程而寫的文件。如果你使用其他IDE,可能需要自行編輯與其他IDE相關的項目文件。

          在建立了這些目錄結構后,你就可以將其導入到eclipse中作為eclipse的工程了。



          3. 加入相關調試所需要的jar包,并指定classpath

          接下來,我們把Jetty所需要的jar包copy到lib目錄下,并在IDE中指定classpath。



          4. 添加Jetty啟動類

          在test下建一個runtime的目錄,并添加Jetty啟動類。

          Java代碼
          1. package runtime;  
          2.   
          3. import org.mortbay.jetty.Connector;  
          4. import org.mortbay.jetty.Server;  
          5. import org.mortbay.jetty.nio.SelectChannelConnector;  
          6. import org.mortbay.jetty.webapp.WebAppContext;  
          7.   
          8. /** 
          9.  * Jetty Server starter. Use embedded mode. 
          10.  *  
          11.  * @author Downpour 
          12.  */  
          13. public class JettyStarter {  
          14.   
          15.     /** 
          16.      * @param args 
          17.      * @throws Exception 
          18.      */  
          19.     public static void main(String[] args) throws Exception {  
          20.         long begin = System.currentTimeMillis();  
          21.         Connector connector = new SelectChannelConnector();  
          22.         connector.setPort(Integer.getInteger("jetty.port"8080).intValue());  
          23.   
          24.         WebAppContext webapp = new WebAppContext("web""/struts-sample");  
          25.         webapp.setDefaultsDescriptor("./test/runtime/webdefault.xml");  
          26.           
          27.         Server server = new Server();  
          28.         server.setConnectors(new Connector[] { connector });  
          29.         server.setHandler(webapp);  
          30.         server.start();  
          31.         System.out.println("Jetty Server started, use " + (System.currentTimeMillis() - begin) + " ms");  
          32.     }  
          33. }  


          如果此時,你在WEB-INF下有web.xml,那么你就可以執行上面這個Jetty的啟動類。



          5. 啟動、調試、測試

          執行了Jetty的啟動類后,可以看到啟動界面的日志:

          Java代碼
          1. 15 [main] INFO org.mortbay.log - Logging to org.slf4j.impl.SimpleLogger(org.mortbay.log) via org.mortbay.log.Slf4jLog  
          2. 15 [main] INFO org.mortbay.log - jetty-6.1.7  
          3. 1109 [main] INFO org.mortbay.log - Started SelectChannelConnector@0.0.0.0:8080  
          4. Jetty Server started, use 1547 ms  


          這表示你已經成功啟動了Jetty作為你的Web服務器。當然,你可以使用Debug模式來執行Jetty類,這樣就進入了調試模式,你可以在代碼中設置斷點進行調試。

          在這里,還有一點需要簡單提一下,默認情況下,Jetty會在windows上使用緩存,所以會把js,css等文件進行鎖定,使你無法編輯。為了解決這個問題,需要設置一些默認參數。這里,我們可以使用google大法,已經有朋友為我們解決了這個問題:

          http://www.aygfsteel.com/alwayscy/archive/2007/05/27/120305.html

          所以,我在runtime的同級目錄建立了一個webdefault.xml文件,并且指定Jetty使用該文件作為默認的參數設定。

          【小結】
          在上面我介紹了我個人的開發調試環境,這種開發環境的好處可能有一下這些:

          1. 開發環境不依賴于任何IDE或者相關的插件,只需要運行Java文件即可進行調試。(當然,你可能需要編寫IDE相關的project文件來獲取IDE的工程支持)

          2. 開發環境不依賴于任何外部的Web服務器,與環境無關,所以無論將項目遷移到哪里,都可以直接運行。

          3. 不需要開發人員額外學習如何搭建開發環境,開發環境已經內置,降低了開發人員的學習成本。

          完善Library的管理方式 Top

          在上面搭建環境的過程中,我們發現,Library的管理存在著一定問題。這個問題主要表現為:

          1. 不容易做Library的版本管理。如果Library的版本需要升級,那么我們不得不重新copy一份新的jar包,并且借助IDE重新指定項目的 classpath。這種勞動,對于一個項目還可以接受,如果你有10多個項目,那么jar包的復制工作會讓你很頭疼。

          2. 每個項目都會有Library的副本。這一點讓人非常惱火。實際上,對于一個公司或者一個項目組而言,使用的技術體系基本不變。然而,每個項目的 Library卻是分開的。不僅如此,每個項目都要從svn中下載大量的相同的Library文件,給我們的硬盤造成極大的空間浪費。對于那些頻繁使用 Branch的項目來說,這些Library的下載簡直就是噩夢。

          所以,我們需要一個集中式的Library管理方式。而這一點曾經在Javaeye的海闊天空版激烈得討論過使用maven來進行管理還是自行管理。

          Readonly 寫道

          共享類庫可以用IDE reference project解決,公司內部項目給常用的lib建立一個project,從CVS上check out,其他工程項目都依賴這個project就可以了,ant build也直接引用這個項目的jar就可以,項目體積照樣只有幾百K。

          ——一個討厭ant,更加討厭maven的人


          我比較贊同Readonly老大的說法而傾向于自行管理。maven這樣的高級貨,偶實在是用不來啊。那么我們就來看看如何使用共享類庫來進行Library管理。


          1. 首先建立一個共享類庫


          建立一個共享類庫,將項目中需要共享的Library進行恰當的分類。同時,為每個加入到Library中的jar包進行統一的格式化的命名方 式。例如:spring/spring-2.5.5.jar等等。這樣的好處在于,一旦jar包的版本有更新,可以加入新的jar包而保留原來的。在項目 中,就可以通過引用不同版本的jar包來對Library進行版本管理。

          以下就是我個人建立的一個共享類庫,大家可以參考:

          svn://www.demo2do.com/library

          2. checkout共享類庫,并將其導入到IDE中作為一個Library工程



          3. 為你的項目指定classpath,引用的jar包存在于Library工程中



          在這里,我們可以看到,原來項目中的lib目錄被刪除,jar包也被刪除。在項目中所引用的jar包是Library項目中的jar包。

          【小結】
          完成了上述所有的步驟之后,Library就被集中管理起來,而每個項目也不會再變得那么龐大。當然,開發環境的搭建完全取決于個人的習慣,所以使用各自喜歡的方式吧,不要讓環境問題束縛你們的手腳。

          轉自:http://www.javaeye.com/wiki/struts2/1321-struts2-development-environment-to-build
          posted on 2009-06-20 16:16 CONAN 閱讀(333) 評論(0)  編輯  收藏 所屬分類: Struts2/Webwork
          主站蜘蛛池模板: 呈贡县| 莫力| 平邑县| 巴彦淖尔市| 汪清县| 黄骅市| 定南县| 花莲县| 桦川县| 潍坊市| 丰宁| 手游| 大埔区| 怀安县| 砀山县| 万年县| 曲阜市| 怀化市| 夹江县| 开江县| 新乡县| 泗洪县| 盐城市| 元朗区| 鄄城县| 灵寿县| 电白县| 肃北| 东台市| 定结县| 嘉善县| 河池市| 彭阳县| 肇源县| 汉中市| 天津市| 平定县| 凤阳县| 友谊县| 夏津县| 万年县|