Loading...

          java .net

          2010年6月13日

          最近在學(xué)習(xí)如何使用maven,做了一個demo(基于S2S整合),總結(jié)一下與大家分享,期待與大家討論以期快速進(jìn)步。

          一、maven介紹

          1、maven是什么

          http://maven.apache.org/
          官方解釋:Maven是一個項(xiàng)目管理工具,它包含了一個項(xiàng)目對象模型 (Project Object Model),一組標(biāo)準(zhǔn)集合,一個項(xiàng)目生命周期(Project Lifecycle),一個依賴管理系統(tǒng)(Dependency Management System),和用來運(yùn)行定義在生命周期階段(phase)中插件(plugin)目標(biāo)(goal)的邏輯。

          2、使用maven有什么好處,解決什么問題

          jar統(tǒng)一管理了:

          如果建立了一個本地的jar倉庫,那么所有人都是從倉庫里面下載jar,拷貝項(xiàng)目時只需要copy幾K的源碼即可!其次,依然是倉庫,使得每個人的jar版本都是一致的,不會出現(xiàn)因?yàn)榘姹静煌鸬哪涿畹腻e誤。
          項(xiàng)目的自動化:

          只需要mvn package命令,在eclipse里面,看run里面,只需要選擇就行了!它會自動的從編譯,測試開始,一直到打包,自動的運(yùn)行,保證你的包沒有問題。

          我們在做多個不同的Java項(xiàng)目時,每個項(xiàng)目所用到的庫文件基本都是大同小異的,通常的做法是每個項(xiàng)目下面都會復(fù)制一份這些庫文件,甚至?xí)堰@些庫文件都提交到vss上去,這樣帶來的問題不僅是增大了項(xiàng)目占用的硬盤空間,而且也使包管理很混亂。

          我們可以這樣查看jar包的依賴關(guān)系,是不是很爽?!
          image

          還可以單元測試覆蓋率報表:

          image

          2、helloword

          1、下載Maven 附件中的maven3.jar 解壓到任意目錄

          2、安裝eclipse插件m2eclipse

          方式一:在線安裝 更新地址是:http://m2eclipse.sonatype.org/sites/m2e
          方式二:本地安裝 help-->install new softeware-->add-->name填寫maven-->archive..-->jar:file:/../m2e.zip!/-->ok
          安裝完成重啟eclipse,在Window-->Preferences-->Maven下配置

          image

          禁用eclipse啟動時更新maven index 主要是每次eclipse啟動時都更新很煩人

          image

          添加自己的maven

          3、新建maven項(xiàng)目

          按照下圖步驟

          image

          • groupId定義了項(xiàng)目屬于哪個組,這個組往往和項(xiàng)目所在的組織或公司存在關(guān)聯(lián)。譬如在googlecode上建立了一個名為myapp的項(xiàng)目,那么groupId就應(yīng)該是com.googlecode.myapp.
          • artifactId定義了當(dāng)前Maven項(xiàng)目在組中唯一的ID,groupId為com.googlecode.myapp的例子中,你可能會為不同的子項(xiàng)目(模塊)分配artifactId,如myapputil、myappdomain、myappweb等。
          • version指定了項(xiàng)目當(dāng)前的版本——1.0SNAPSHOT。SNAPSHOT意為快照,說明該項(xiàng)目還處于開發(fā)中,是不穩(wěn)定的版本。隨著項(xiàng)目的發(fā)展,version會不斷更新,如升級為1.0、1.1SNAPSHOT、1.1、2.0等。
          • name元素聲明了一個對于用戶更為友好的項(xiàng)目名稱

          點(diǎn)擊Finish完成

          4、maven項(xiàng)目結(jié)構(gòu)

          下圖為基于maven項(xiàng)目結(jié)構(gòu),這里跟我們以前的項(xiàng)目結(jié)構(gòu)很不一樣,以前的項(xiàng)目結(jié)構(gòu)約定俗成的只有兩塊 一個src 一個webRoot,當(dāng)然這些都可以隨意配置,比如WebRoot有的叫WebContent

          image
          這里maven倡導(dǎo)約定優(yōu)于配置,maven的約定就是以下目錄結(jié)構(gòu)
          src/main/java 下存放java類
          src/main/webapp 下存放頁面文件(需要手動創(chuàng)建)
          src/main/resources 下存放資源文件
          src/test/java 下存放單元測試代碼
          src/test/resources 下存放測試資源文件

          5、添加jar包

          只需維護(hù)pom.xml
          比如添加struts2-core
          <dependency>
          <groupId>org.apache.struts</groupId>
          <artifactId>struts2-core</artifactId>
          <version>2.0.11.2</version>
          </dependency>

          我在172.20.66.230上部署了一個maven倉庫,訪問地址http://172.20.66.230:8081/nexus/

          maven會根據(jù)pom.xml中的配置訪問230的倉庫下載對應(yīng)的jar source 以及doc,下載到哪?這要看maven3/conf/settings.xml 55:

          <localRepository>F:/Maven3/repository</localRepository>

          6、編寫代碼

          附件中有一個struts2+spring 的demo,解壓然后import eclipse

          在項(xiàng)目名上右鍵 run as -->Run Configurations

          image

          按圖配置,點(diǎn)擊Run即可。瀏覽器中訪問http://localhost:8080/MavenSSH/

          Maven運(yùn)行的生命周期

          • 復(fù)制src/main/resources資源文件到輸出目錄

          • 編譯src/main/java下的源代碼

          • 復(fù)制src/test/resources下的測試用資源文件到測試輸出目錄

          • 編譯src/test/java下的測試用例

          • 運(yùn)行測試用例

          • 打包生成

          ===========================

          • 以上是一個簡單的例子,只是用它獲取依賴的jar包 。maven還有很多諸如項(xiàng)目管理方面的功能,比如文檔編制、發(fā)布管理、配置管理...

          • 第一個次運(yùn)行項(xiàng)目會比較慢,因?yàn)橐螺djar包。

          • MavenSSH.rar是一個struts2與spring集成的例子,頁面用到了sitemesh div+css 也值得學(xué)習(xí)

          • 項(xiàng)目debug是運(yùn)行在jetty(類似于tomcat的容器)中。

          posted @ 2011-04-18 16:09 豬 閱讀(1332) | 評論 (5)編輯 收藏

          如果部署GAE時正在upload files時退出,下次部署時會報錯

          Another transaction by user is already in progress for this app and major version. That user can undo the transaction with appcfg.py's "rollback" command

           

          找到eclipse中的GAE SDK目錄

          如:D:\eclipse\plugins\com.google.appengine.eclipse.sdkbundle.1.3.8_1.3.8.v201010161055\appengine-java-sdk-1.3.8\bin

           

          執(zhí)行命令

          appcfg.cmd rollback 后面跟gae項(xiàng)目war所在目錄

          如 appcfg.cmd rollback D:/spring/eclipse_workspace/taobaoke/war

           

          執(zhí)行:

          ********************************************************
          Warning: Future versions of the Dev App Server will require Java 1.6 or later. P
          lease upgrade your JRE.
          ********************************************************
          Reading application configuration data...
          2010-11-15 9:34:23 com.google.apphosting.utils.config.AppEngineWebXmlReader read
          AppEngineWebXml
          信息: Successfully processed D:/spring/eclipse_workspace/taobaoke/war\WEB-INF/ap
          pengine-web.xml
          2010-11-15 9:34:23 com.google.apphosting.utils.config.AbstractConfigXmlReader re
          adConfigXml
          信息: Successfully processed D:/spring/eclipse_workspace/taobaoke/war\WEB-INF/we
          b.xml
          2010-11-15 9:34:23 com.google.apphosting.utils.config.AbstractConfigXmlReader re
          adConfigXml
          信息: Successfully processed D:/spring/eclipse_workspace/taobaoke/war\WEB-INF/cr
          on.xml
          Beginning server interaction for taokeapp...
          0% Rolling back the update.
          Success.
          Cleaning up temporary files...

          posted @ 2010-11-15 09:55 豬 閱讀(425) | 評論 (0)編輯 收藏

          在網(wǎng)上無意搜到一個用Ext實(shí)現(xiàn)的淘寶客,恩 ,咱用GWT做一個車輪

          下了淘寶的 SDK for java就開干 參考API文檔按部就班

          在淘寶的沙箱里測試,很順利,乘勝前進(jìn),到正式環(huán)境下測試

          問題來了

          invalid signature

          網(wǎng)上搜了一通,有說時間戳不對,果不其然,GAE使用的是標(biāo)準(zhǔn)時間,整整差了8小時,遂在獲得的當(dāng)前時間上加了8小時,OK

          invalid signature 可能的另一個原因是APP_KEY 或 APP_SERCET不正確,仔細(xì)檢查

           

          調(diào)用 taobao.item.get

           

          1 TaobaoClient client=new DefaultTaobaoClient(TaobaokeConstant.SANDBOX_URL, TaobaokeConstant.APP_KEY, TaobaokeConstant.APP_SERCET);
          2 ItemcatsGetRequest req=new ItemcatsGetRequest();
          3 java.util.Calendar c=java.util.Calendar.getInstance(TimeZone.getTimeZone("GMT+8"));
          4 c.add(Calendar.HOUR, 8);
          5 req.setTimestamp(c.getTime().getTime()) ;
          6 req.setParentCid(new Long(0));
          7 ItemcatsGetResponse response=client.execute(req);
          8 return response.getItemCats();

           

          調(diào)用 taobao.taobaoke.items.get

           
          1 TaobaoClient client=new DefaultTaobaoClient(TaobaokeConstant.SANDBOX_URL, TaobaokeConstant.APP_KEY,TaobaokeConstant.APP_SERCET);
          2 TaobaokeItemsGetRequest req=new TaobaokeItemsGetRequest();
          3 req.setFields("num_iid,title,nick,pic_url,price,click_url,commission,commission_rate,commission_num,commission_volume,shop_click_url,seller_credit_score,item_location,volume,taobaoke_cat_click_url,keyword_click_url");
          4 req.setCid(Long.parseLong(cid));
          5 req.setNick(TaobaokeConstant.NICK);
          6 req.setSort("commissionRate_desc");
          7 TaobaokeItemsGetResponse response=client.execute(req);
          8 return response.getTaobaokeItems();
           
          想用GAE JCache API 加入緩存以減輕壓力,但屢試不行,從緩存中取 的時候報錯
          沒找到原因
           
          改用自己寫的緩存,然后用App Engine Cron 服務(wù)管理緩存
           
          corn.xml
           
          1 <?xml version="1.0" encoding="UTF-8"?>
          2 <cronentries>
          3   <cron>
          4     <url>/cron/recache</url>
          5     <description>Repopulate the cache every 1 hours</description>
          6     <schedule>every 1 hours</schedule>
          7   </cron>
          8 </cronentries>
          posted @ 2010-10-21 11:33 豬 閱讀(743) | 評論 (0)編輯 收藏
          posted @ 2010-06-13 09:54 豬 閱讀(434) | 評論 (0)編輯 收藏
               摘要: 01 var $j = jQuery.noConflict(); 02 //使用此方法驗(yàn)證所有text textarea 是否含有非法字符 03 $j(document).ready(function(){ 04    $j("input[type='text']").each(functio...  閱讀全文
          posted @ 2010-06-13 09:53 豬 閱讀(2047) | 評論 (1)編輯 收藏

          公告

          希望有一天

          我能用鼠標(biāo)雙擊我的錢包

          然后選中一張100元

          按住“ctrl+c”

          接著不停的“ctrl+v”

          嘻嘻~~~笑醒~~~



          導(dǎo)航

          <2010年6月>
          303112345
          6789101112
          13141516171819
          20212223242526
          27282930123
          45678910

          統(tǒng)計

          常用鏈接

          留言簿(6)

          隨筆分類(102)

          隨筆檔案(398)

          文章分類

          文章檔案(10)

          有趣網(wǎng)絡(luò)

          搜索

          積分與排名

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 宜丰县| 合肥市| 巍山| 巴彦淖尔市| 涞水县| 当阳市| 黔西县| 道孚县| 天镇县| 油尖旺区| 湄潭县| 柳江县| 太康县| 夏津县| 天镇县| 华容县| 扶余县| 黔江区| 灌南县| 古蔺县| 苏州市| 汕尾市| 叶城县| 绥芬河市| 年辖:市辖区| 万源市| 山丹县| 布尔津县| 泰来县| 章丘市| 信阳市| 安西县| 陇川县| 大荔县| 通道| 云浮市| 金溪县| 景谷| 三亚市| 阜南县| 米林县|