用ant進行項目無憂部署

我們的項目比較特殊,基本上每天都要發佈一次。爲了不影響系統的正常使用,我們的做法是在下班之前把打包好的war放到服務器的一個目錄下面(eg:d:\bak)。然後用windows的計劃任務在晚上12點自動部署系統,也就是net stop tomcat,刪除xx.war,刪除xx,然後把d:\bak\xx.war拷貝到webapps下面。然後再net start tomcat。這樣在第二天來的上班的時候就可以使用升級過的系統了。也不會影響其他人的使用,不需要中斷操作。
    關於項目的一個配置我的前幾篇文章我也提到過,那個upload的問題就不會發生了。還有就是關於項目開發中的一些問題。比如數據庫的連接地址,upload directory的配置等,這些在團隊中的每個人都是不一樣的,那麼在發佈的時候都要改成服務器上的正確配置,如果一個月部署一次這到沒有什麼。但是像我們這樣每天部署就不是那麼輕鬆了。而且如果一時不注意很容易造成配置的不正確。所以對於很多配置文件我們都有兩份。一份是用戶自己開發用的,一份是部署到服務器的配置,這樣在開發的時候團隊中的每個人都不一樣,關於服務器的配置都是一樣的,在發佈的時候是用的服務器的配置而不是用開發用的配置。eg:web.xml(個人的配置)web-dest.xml 而關鍵的配置也就是下面這段。
web.xml
    <context-param>
        
<param-name>contextConfigLocation</param-name>
        
<param-value>
            classpath:spring/*_context.xml,
            classpath:spring/global.xml 

        
</param-value>
    
</context-param>
web-dest.xml
    <context-param>
        
<param-name>contextConfigLocation</param-name>
        
<param-value>
            classpath:spring/*_context.xml,
            classpath:spring/global-dest.xml,
            classpath:spring/scheduler.xml
        
</param-value>
    
</context-param>
注意到其中不一樣的。dest裏少了scheduler.xml這個主要是定時執行的一些任務,一般在開發的時候都不需要,去掉也可以提升速度,也不會出現那麼多的log。還有就是發佈的web.xml用了global-dest.xml這個是關於spring的總的配置。
global.xml
    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
        
<property name="driverClassName"><value>net.sourceforge.jtds.jdbc.Driver</value></property>
        
<property name="url">
            
<value>jdbc:jtds:sqlserver://192.168.0.240:1433/fivefortunes;SelectMethod=cursor</value>
            
</property>
        
<property name="username"><value>sa</value></property>
        
<property name="password"><value></value></property>
    
</bean>
    
    
<bean id="dataSource2" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
        
<property name="driverClassName"><value>net.sourceforge.jtds.jdbc.Driver</value></property>
        
<property name="url">
            
<value>jdbc:jtds:sqlserver://192.168.0.240:1433/outmail;SelectMethod=cursor</value>
            
</property>
        
<property name="username"><value>sa</value></property>
        
<property name="password"><value></value></property>
    
</bean>
    
    
<bean id="customDataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
        
<property name="driverClassName"><value>net.sourceforge.jtds.jdbc.Driver</value></property>
        
<property name="url">
            
<value>jdbc:jtds:sqlserver://192.168.0.240:1433/custom;SelectMethod=cursor</value>
            
</property>
        
<property name="username"><value>sa</value></property>
        
<property name="password"><value></value></property>
    
</bean>
global-dest.xml
    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
        
<property name="driverClassName"><value>net.sourceforge.jtds.jdbc.Driver</value></property>
        
<property name="url">
            
<value>jdbc:jtds:sqlserver://192.168.0.5:1433/fivefortunes;SelectMethod=cursor</value>
            
</property>
        
<property name="username"><value>sa</value></property>
        
<property name="password"><value></value></property>
    
</bean>
    
    
<bean id="dataSource2" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
        
<property name="driverClassName"><value>net.sourceforge.jtds.jdbc.Driver</value></property>
        
<property name="url">
            
<value>jdbc:jtds:sqlserver://192.168.0.5:1433/outmail;SelectMethod=cursor</value>
            
</property>
        
<property name="username"><value>sa</value></property>
        
<property name="password"><value></value></property>
    
</bean>
    
    
<bean id="customDataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
        
<property name="driverClassName"><value>net.sourceforge.jtds.jdbc.Driver</value></property>
        
<property name="url">
            
<value>jdbc:jtds:sqlserver://192.168.0.5:1433/custom;SelectMethod=cursor</value>
            
</property>
        
<property name="username"><value>sa</value></property>
        
<property name="password"><value></value></property>
    
</bean>
還有關於一些properties文件我們採用了用ant部署的時候改名字來達到目的。
build.xml
        <move file="${dist.dir}/mail.properties" tofile="${dist.dir}/mail-dev.properties" />
        
<copy file="${dist.dir}/mail-dest.properties" tofile="${dist.dir}/mail.properties" />
        
<move file="${dist.dir}/upload.properties" tofile="${dist.dir}/upload-dev.properties" />
        
<copy file="${dist.dir}/upload-dest.properties" tofile="${dist.dir}/upload.properties" />

這個是在war之前做的,大家眼看也就明白吧,就是把xx-dest.properties,改名成xx.propeties。在打完包之後
        <move file="${dist.dir}/mail-dev.properties" tofile="${dist.dir}/mail.properties" />
        
<move file="${dist.dir}/upload-dev.properties" tofile="${dist.dir}/upload.properties" />
這樣就達到了我們無憂的目的了。只要每天部署的時候保證程序能正常運行,ant war一下就安心部署吧。
以上就是全部內容,如果有什麼不正確歡迎砸板磚。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章