<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    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://m.tkk7.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 閱讀(328) 評論(0)  編輯  收藏 所屬分類: Struts2/Webwork
    主站蜘蛛池模板: 精品国产免费观看久久久| 中文字幕不卡亚洲 | mm1313亚洲国产精品无码试看 | 国产亚洲综合色就色| 天天影院成人免费观看| 国产亚洲综合视频| 亚洲天堂久久精品| 在线观看免费亚洲| 99久久久国产精品免费牛牛四川| 亚洲国产区男人本色在线观看| 亚洲天堂中文字幕在线| 青青在线久青草免费观看| 国产福利免费视频 | 亚洲国产模特在线播放| 波多野结衣中文一区二区免费| 久草免费福利视频| 小说专区亚洲春色校园| 亚洲欧洲日产国产最新| 国产成人精品久久亚洲| 国产精品成人免费一区二区 | 免费在线观看毛片| 国产免费丝袜调教视频| sihu国产精品永久免费| 亚洲国产激情在线一区| 亚洲av中文无码乱人伦在线r▽ | 无码乱人伦一区二区亚洲| 免费观看的a级毛片的网站| 99在线视频免费| 国产免费伦精品一区二区三区| 亚洲AV电影天堂男人的天堂| 亚洲美女色在线欧洲美女| 亚洲精品少妇30p| 又爽又黄无遮挡高清免费视频| 丁香花免费高清视频完整版| 一个人看的www免费视频在线观看| 黄网站色成年片大免费高清 | 亚洲午夜精品一区二区公牛电影院| 成人av片无码免费天天看| 国产亚洲人成网站在线观看| 影音先锋在线免费观看| 国产精品免费网站|