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

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

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

    邋遢居

    我的Java天堂

      BlogJava :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
      61 Posts :: 2 Stories :: 90 Comments :: 0 Trackbacks

    問題

    這兩天在寫一個小東西。這個小東西是一個大東西的一部分。其實也就是其中的一兩個類。而這個大東西需要部署到一個特定的環(huán)境中去運行。所以有一堆的限制條 件,比如什么配置文件啊,包名,版本之類的什么東西。稍微有點差錯就沒有辦法運行。需要正確得到這些東西需要一個很龐大且冗長的構(gòu)建過程。而我寫的也就是 兩三個類,所以最直接的方式就是把我寫的java 文件編譯或的class 文件直接復(fù)制到j(luò)ar文件中。 完成這樣工作有好幾中方式,最直接的方式就是純手工打造


    GraphViz image

    PS: 這種方式費時費力,需要在不同的窗體間進(jìn)行切換。例如我現(xiàn)在就在Eclipse、WinRaR和Windows資源管理器間切換。

    解決過程

    如何避免這個過程呢,盡量不用人來參與其中。這個肯定就是讓一個小程序來把這幾個動作連接起來。而且還要能夠方便變動。比如我現(xiàn)在不想往a.jar 里面copy了。我想向b.jar 中復(fù)制了。所以就想到了腳本。對讓腳本來完成這樣的事情。第一反應(yīng)想到的是ant

    Ant 我的主角

      Ant 是 何須人,就不用我多說了。其實我了解也不多,只是知道這個小螞蟻蠻力超大。下面就著手解決問題。第一反應(yīng)就是找到一個直接copy的任務(wù),把 fileset中的文件復(fù)制到j(luò)ar文件中。但是遺憾的是我沒有能夠找到這樣一個Task.這個時候我的思維陷入了困境。下面該怎么辦?

    困境

    沒有現(xiàn)成的東西,沒有現(xiàn)成的能一步完成的東西?如何是好? 我是程序員,所以我我自己可以寫一個task來滿足這樣的需求啊。對啊,我可以自己寫的!正當(dāng)我為這個想法興奮不已時,正卷起袖子準(zhǔn)備“大干”的時候。突然想起某人說過 不要重新造輪子! 。所以就追問了我自己一句: 角處會有什么呢?

    我的拐角

    既然Ant有蠻力,我可否利用一下他的蠻力呢?通過如下的這么一個流程來達(dá)到我的目的。


    GraphViz image

    這里用了一個temp文件夾作為中轉(zhuǎn),先解壓,copy需要的文件,最后jar一下獲得最后的更新好的jar。 最終獲得了如下的build.xml

    <target name="prepare">
                    
    <mkdir dir="${temp_dir}"/>
            
    </target>
            
            
    <target name="build" depends="prepare">
                    
    <echo message="unzip">Uzip Jar file</echo>
                    
    <unjar dest="${temp_dir}" src="${comp_plugin}/${contain_plugin}">
                    
    </unjar>
                    
    <copy todir="${temp_dir}">
                            
    <fileset dir="./bin">
                                    
                            
    </fileset>
                    
    </copy>
                    
    <jar update="true"
                            destfile
    ="c:/${contain_plugin}" 
                            basedir
    ="${temp_dir}" >
                    
    </jar>
            
    </target>
      

    調(diào)整的過程

    看上去,所有問題都解決了。但是偏偏在使用的時候遇到了小問題。我的jar包是要在osgi環(huán)境下工作的。所以特別依賴MANIFEST.MF文件。偏偏jar 這個任務(wù)默認(rèn)情況下會生成一個默認(rèn)的MANIFEST.MF文件。如果任由他胡來的話,就全蝦米了。所以要稍微調(diào)整一下。


    <jar update="true"
                            destfile
    ="c:/${contain_plugin}" 
                            basedir
    ="${temp_dir}" 
                            manifest
    ="${temp_dir}/META-INF/MANIFEST.MF">
    </jar>
     

    這樣就可以了。大功告成!!

    posted on 2009-11-26 18:07 Jet Geng 閱讀(2448) 評論(3)  編輯  收藏 所屬分類: 生活點滴

    Feedback

    # re: 復(fù)制文件到已存在的Jar[未登錄] 2009-11-26 21:01 小毅
    直接用winrar打開jar文件,把要復(fù)制的文件直接拖到里面去就可以了 沒必要那么麻煩  回復(fù)  更多評論
      

    # re: 復(fù)制文件到已存在的Jar 2009-11-27 12:32 Jet Geng
    @小毅
    是的,你說的這種方式是最直接的。但是如果我后續(xù)的還需要把這個文件copy到另外一個地方,在去啟動一個中間件服務(wù),再對這個中間服務(wù)進(jìn)行一堆操作的時候。在多個窗體之間切換,文件選擇錯誤,目錄考錯等問題還是有的。
    加入我所有東西都是通過ant來做。就會好很多了。  回復(fù)  更多評論
      

    # re: 復(fù)制文件到已存在的Jar 2010-01-18 15:33 MiaUI
    Thank you for the smashing topic referring to this good topic. I could not determine such kind of thesis proposal online and wanted to purchase the <a href="http://www.topthesis.com">thesis</a>. Thus, I really have a required material at this time.   回復(fù)  更多評論
      

    主站蜘蛛池模板: 亚洲国产成人手机在线观看| 亚洲欧美日韩久久精品| rh男男车车的车车免费网站 | 免费一区二区无码视频在线播放 | 久久久WWW免费人成精品| 国产日韩成人亚洲丁香婷婷| 亚洲免费无码在线| 亚洲va久久久噜噜噜久久男同 | 亚洲国产成人精品无码久久久久久综合 | 久久久久亚洲av成人无码电影 | 亚洲字幕在线观看| 女性自慰aⅴ片高清免费| 精品在线视频免费| 久久亚洲高清综合| 无码日韩精品一区二区免费暖暖| 亚洲美女激情视频| 在线观看免费为成年视频| 阿v免费在线观看| 精品亚洲永久免费精品| 国产国产人免费视频成69堂| 亚洲人成人无码.www石榴| 亚洲?V无码乱码国产精品| 久久精品无码精品免费专区| 亚洲美女人黄网成人女| 真实乱视频国产免费观看| www成人免费视频| 亚洲无人区视频大全| 免费精品国产自产拍观看| 免费看黄的成人APP| 亚洲三级中文字幕| 亚洲爽爽一区二区三区| 91高清免费国产自产拍2021| 亚洲av中文无码乱人伦在线观看| 免费中文字幕在线| 免费A级毛片无码视频| 亚洲日韩在线中文字幕综合 | 亚洲成av人在线视| 女人毛片a级大学毛片免费| 日本三级在线观看免费| 亚洲人成电影网站色www| 亚洲国产一成人久久精品|