應(yīng)用結(jié)構(gòu)圖
深入分析結(jié)構(gòu)圖
mina的基本應(yīng)用可以分為3層:
1、I/O Serivce:實(shí)際執(zhí)行I/O層
2、I/OFilter chain:數(shù)據(jù)過(guò)濾和轉(zhuǎn)換層,主要是把字節(jié)轉(zhuǎn)換為需要的數(shù)據(jù)格式或者反過(guò)來(lái)處理
3、I/OHandler:業(yè)務(wù)處理層
創(chuàng)建Mina應(yīng)用分為3部分:
1、創(chuàng)建I/O 2、創(chuàng)建過(guò)濾鏈
3、創(chuàng)建I/O業(yè)務(wù)處理
Dojo通過(guò)很少的代碼完成了以上的功能。(以后可能我詳細(xì)說(shuō)說(shuō)dojo的package system ,只需要三個(gè)js文件)。當(dāng)你寫(xiě)腳本時(shí),只需要包含很少的js文件(大?。?。也可以選擇的(包含)下載dojo提供的龐大的功能。Dojo provides MultiplePointsOfEntry, InterpreterIndependence, ForwardLookingAPIs, and focuses on ReducingBarriersToAdoption.
dojo試圖建立一種新的標(biāo)簽語(yǔ)言DojoML。目標(biāo)是,在DojoML和javascript腳本語(yǔ)言不變的情況下,用不同的render方式展示數(shù)據(jù), Renderings may be made available in several rendering contexts (such as SVG, or perhaps even the desktop or Flash)。(比較美好?。└M(jìn)一步,the DojoML 剖析器可以接受html和svg為輸入,容易的建立DegradeableResponsiveApplications。
第一部分 安裝
第一個(gè)小節(jié) 怎么安裝Dojo Toolkit
Dojo在磁盤(pán)上只是一堆文件,它不需要特殊的設(shè)置,它可以通過(guò)以下三種途徑獲得:
1、可以從google的內(nèi)容分布網(wǎng)絡(luò)獲得
加載的方法可以參考http://code.google.com/intl/zh-CN/apis/ajaxlibs/documentation/index.html#dojo
2、.在你自己的服務(wù)器上使用Dojo
a、下載最新的dojo包,地址:http://dojotoolkit.org/downloads;目前最新的包為1.3.1
b、解壓下載的壓縮文件
--dojo-release-1.3.1-src
----dijit
----dojo
----dojox
----util
c、可以通過(guò)D:\Apache-Source\dojo\1.3.1\dojo-release-1.3.1-src\dojo-release-1.3.1-src\dijit\themes\themeTester.html 這樣的路徑來(lái)查看相關(guān)的JS例子
3、每日構(gòu)建代碼
你可以通過(guò)SVN地址獲得
For instance, Dojo Core repository is:
http://svn.dojotoolkit.org/src/dojo/trunk
There are two versions of this view: anonymous and committer.
For users (readonly):
http://svn.dojotoolkit.org/src/view/anon/all/trunk
For committers (read/write):
https://svn.dojotoolkit.org/src/view/committer/all/trunk
第二部分 Ajax
第一個(gè)小節(jié) ajax
a、ajax and Dojo
1)XHR選項(xiàng)
例子:
// post some data, ignore the response: dojo.xhrPost({ form: "someFormId", // read the url: from the action="" of the <form> timeout: 3000, // give up after 3 seconds content: { part:"one", another:"part" } // creates ?part=one&another=part with GET, Sent as POST data when using xhrPost }); // get some data, convert to JSON dojo.xhrGet({ url:"data.json", handleAs:"json", load: function(data){ for(var i in data){ console.log("key", i, "value", data[i]); } } });
2)XHR回調(diào)
有三種方法可以附加到XHR選擇對(duì)象,以確定當(dāng)數(shù)據(jù)回調(diào)時(shí)該怎么做。
JSF1.1 、 1.2 都是 JSF 的標(biāo)準(zhǔn),定義例如接口、規(guī)范( JSF 是面向接口編程的),必須通過(guò)實(shí)現(xiàn)才能被我們所使用,而實(shí)現(xiàn)包括有 JSF RI(Reference Implementation) ,還有 myfaces core1.1.4 的實(shí)現(xiàn)等。 JSF RI 是 SUN 對(duì) JSF 的實(shí)現(xiàn),相對(duì)來(lái)說(shuō)兼容性比較好,也比較穩(wěn)定(因?yàn)?/span> 1.1 已經(jīng)很久沒(méi)更新過(guò)了,已經(jīng)轉(zhuǎn)向 1.2 去了),而 myfaces
myfaces
Oracle ADF 是 oracle 為 jsf 做的一個(gè)大型的組件庫(kù),以前是收費(fèi)的,現(xiàn)在開(kāi)源了,我沒(méi)用過(guò),不好說(shuō)。
Ajax4jsf 是為 jsf 提供 AJAX 支持的一個(gè)標(biāo)簽庫(kù),使用它提供的標(biāo)簽,就能在原有的 JSF 程序上輕易的加上 AJAX 的功能,而且不用寫(xiě)任何 Javascript 。
Facelets 這個(gè)是很激動(dòng)人心的一個(gè)框架,有了這個(gè)框架才把 JSF 的組件化發(fā)揮出來(lái),通過(guò)模板的方式來(lái)組合成我們所需要的組件,而且可以不使用 <h:input> 這樣的標(biāo)簽庫(kù),而用 <input type=”text” jsfc=”h:input”> 這樣的方式來(lái)使用組件,這樣就可以方便的使用 UI 可視化工具去開(kāi)發(fā)我們的 WEB 程序。這個(gè)框架我會(huì)在以后的文章中詳細(xì)的說(shuō),以及和 jsp2.0 的模板功能作對(duì)比。
--------------------------------------------------------------------------------
JSF的session超時(shí)問(wèn)題會(huì)在頁(yè)面上拋出如下異常:
javax.faces.application.ViewExpiredException: viewId:/pages/index.faces - View /pages/index.faces could not be restored.
at com.sun.faces.lifecycle.RestoreViewPhase.execute(RestoreViewPhase.java:185)
at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251)
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:117)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:244)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:261)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:581)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Unknown Source)
解決方案:
在web.xml中添加如下代碼:
<error-page>
<exception-type>javax.faces.application.ViewExpiredException</exception-type>
<location>/pages/SessionRefire.jsp</location>
</error-page>
----------------------------------------------------
注意:所有的JSF標(biāo)簽一定要包含在<f:view></f:view>這個(gè)節(jié)點(diǎn)中,不然會(huì)報(bào)一下問(wèn)題:
javax.servlet.ServletException: Component javax.faces.component.UIViewRoot@f1fad1 not expected type. Expected: javax.faces.component.UIOutput. Perhaps you're missing a tag? javax.faces.webapp.FacesServlet.service(FacesServlet.java:256)
作者 蔣博 發(fā)布于 2009年6月22日 上午4時(shí)52分
HTML5 是由 WHATWG (Web Hypertext Application Technology Working Group) 發(fā)起的,最開(kāi)始的名稱(chēng)叫做Web Application 1.0,而后這個(gè)標(biāo)準(zhǔn)吸納了Web Forms 2.0的標(biāo)準(zhǔn),并一同被W3C組織所采用,合并成為下一代的HTML5標(biāo)準(zhǔn)。
HTML語(yǔ)言作為如今編程最為廣泛的語(yǔ)言,具有易用、快捷、多瀏覽平臺(tái)兼容等特點(diǎn),但是隨著時(shí)代的進(jìn)步,HTML的標(biāo)準(zhǔn)卻停滯不前,這一次還在不斷開(kāi)發(fā)中的HTML5標(biāo)準(zhǔn)的更新可以說(shuō)給這門(mén)標(biāo)記語(yǔ)言帶來(lái)了新的生命力。本文將著重討論HTML5中的Web Forms 2.0, 即表單的部分。
表單是網(wǎng)頁(yè)中常見(jiàn)的控件(集)。小到網(wǎng)站注冊(cè)登錄,大到一個(gè)企業(yè)的數(shù)據(jù)管理系統(tǒng),都基本上有表單的身影。表單之所以如此重要,主要是因?yàn)樗鼡?dān)負(fù)大量的用戶(hù)和網(wǎng)頁(yè)后臺(tái)數(shù)據(jù)更新交互的任務(wù)。Web開(kāi)發(fā)人員,對(duì)于網(wǎng)頁(yè)表單可以說(shuō)又愛(ài)又恨,愛(ài)的是它方便的收集、組織數(shù)據(jù)的功能,恨的是它的功能很大程度上也就僅此而已。一些在最終網(wǎng)站用戶(hù)看起來(lái)稀松平常的功能,比如說(shuō)輸入類(lèi)型檢查、表單校驗(yàn)、錯(cuò)誤提示等等,開(kāi)發(fā)人員無(wú)不需要花費(fèi)大量精力利用 JavaScript和DOM編程來(lái)滿(mǎn)足這些天然所需的功能點(diǎn),而隨著Ajax的流行,出現(xiàn)的一些JavaScript的工具庫(kù),比如Dojo, YUI等都提供了方便的JavaScript Widget或者API來(lái)減輕開(kāi)發(fā)人員的負(fù)擔(dān)。
HTML5 Web Forms 2.0是對(duì)目前Web表單的全面提升,它在保持了簡(jiǎn)便易用的特性的同時(shí),增加了許多內(nèi)置的控件或者控件屬性來(lái)滿(mǎn)足用戶(hù)的需求,并且同時(shí)減少了開(kāi)發(fā)人員的編程。在我看來(lái),HTML5 主要在以下幾個(gè)方面對(duì)目前的Web表單做了改進(jìn):
<input type="url"></input>
<input type="email"></input>
<input type="date"></input>
<select data="http://domain/getmyoptions"></select>
<input type="text" required></input>
<input type="number" min=10 max=100></input>
<submission>
<field name="name" index="0">Peter</field>
<field name="password" index="0">password</field>
</submission>
我將利用HTML5新的表單系統(tǒng), 做一個(gè)簡(jiǎn)單的用戶(hù)注冊(cè)的界面,包括用戶(hù)名,密碼,出生日期,保密問(wèn)題等內(nèi)容,代碼如下:
<! doctype html> <html> <head> <style> p label { width: 180px; float: left; text-align: right; padding-right: 10px } table { margin-left: 80px } table td { border-bottom: 1px solid #CCCCCC } input.submit { margin-left: 80px } </style> </head> <body> <form action='/register' enctype="application/x-www-form+xml" method="post"> <p> <label for='name'>ID(請(qǐng)使用Email注冊(cè))</label> <input name='name' required type='email'></input> </p> <p> <label for='password'>密碼</label> <input name='password' required type='password'></input> </p> <p> <label for='birthday'>出生日期</label> <input type='date' name='birthday' /> </p> <p> <label for='gender'>國(guó)籍</label> <select name='country' data='countries.xml'></select> </p> <p> <label for='photo'>個(gè)性頭像</label> <input type='file' name='photo' accept='image/*' /> </p> <table> <thead> <td><button type="add" template="questionId">+</button> 保密問(wèn)題</td> <td>答案</td> <td></td> </thead> <tr id="questionId" repeat="template" repeat-start="1" repeat-min="1" repeat-max="3"> <td><input type="text" name="questions[questionId].q"></td> <td><input type="text" name="questions[questionId].a"></td> <td><button type="remove">刪除</button></td> </tr> </table> <p> <input type='submit' value='send' class='submit' /> </p> </form> </body> </html>
由于目前HTML5標(biāo)準(zhǔn)仍然在開(kāi)發(fā)中,不同的瀏覽器對(duì)HTML5特性的支持都相當(dāng)有限。其中Opera在表單方面支持得比較好,本實(shí)例在Opera9上運(yùn)行一切正常,效果圖如下:
這個(gè)實(shí)例運(yùn)用了一些HTML5的新的表單元素,比如email類(lèi)型的輸入框(ID),日期類(lèi)型的輸入框(出生日期)。并且使用了重復(fù)模型來(lái)引導(dǎo)用戶(hù)填寫(xiě)保密問(wèn)題,而在個(gè)性頭像的上傳中,通過(guò)限制文件類(lèi)型,方便用戶(hù)選擇圖片進(jìn)行合乎規(guī)范的內(nèi)容上傳。而用戶(hù)選擇國(guó)籍的下拉選擇輸入框中,采用的是外聯(lián)數(shù)據(jù)源的形式,外聯(lián)數(shù)據(jù)源使用coutries.xml,內(nèi)容如下:
<select xmlns="http://www.w3.org/1999/xhtml"> <option>China</option> <option>Japan</option> <option>Korea</option> </select>
并且form的enctype是application/x-www-form+xml,也就是HTML5的XML提交。所以一旦form校驗(yàn)通過(guò),form的內(nèi)容將會(huì)以XML的形式提交。你還會(huì)發(fā)現(xiàn),在ID輸入框如果沒(méi)有值,或者輸入了非email類(lèi)型的字符串時(shí),一旦試圖提交表單,就會(huì)有提示錯(cuò)誤的信息出現(xiàn),而這都是瀏覽器內(nèi)置的。
HTML5對(duì)表單控件的更新,無(wú)疑是很振奮人心的。本文描述了一部分表單的新特性,還有一部分新特性同樣很令人期待。相信隨著標(biāo)準(zhǔn)的深入開(kāi)發(fā)以及瀏覽器對(duì)HTML5支持程度的進(jìn)一步提升,設(shè)計(jì)一個(gè)簡(jiǎn)單易用的表單的工作,將變得非常輕松。
蔣博,主要從事Web前端技術(shù)的開(kāi)發(fā)工作,在Web開(kāi)發(fā)與性能分析以及敏捷實(shí)踐等領(lǐng)域有較豐富的經(jīng)驗(yàn)。對(duì)HTML5的發(fā)展以及各種 JavaScript類(lèi)庫(kù)有比較濃厚的興趣,經(jīng)常關(guān)注社交型的網(wǎng)站發(fā)展情況,平常喜歡聽(tīng)音樂(lè),看一些歷史類(lèi)書(shū)籍。(本文僅代表個(gè)人觀點(diǎn),與公司立場(chǎng)無(wú)關(guān)。)
給InfoQ中文站投稿或者參與內(nèi)容翻譯工作,請(qǐng)郵件至editors@cn.infoq.com。也歡迎大家加入到InfoQ中文站用戶(hù)討論組中與我們的編輯和其他讀者朋友交流。
我看的書(shū)籍是<Ant權(quán)威指南>,Ant的開(kāi)發(fā)者:James Duncan Davidson。對(duì)于一些比較重要的內(nèi)容我記錄了下來(lái):
ANT命令行參考
ant [option [option...]] [target [target...]]
option :={-help:顯示描述Ant命令及其選項(xiàng)的幫助信息
-projecthelp:顯示包含在構(gòu)建文件中的、所有用戶(hù)編寫(xiě)的幫助文檔。即為各個(gè)<target>中description屬 性的文本,以及包含在<description>元素中的任何文本。將有description屬性的目標(biāo)列為主目標(biāo)("Main target"),沒(méi)有此屬性的目標(biāo)則列為子目標(biāo)("subtarget")
-version:要求Ant顯示其版本信息,然后退出
-quiet:抑制并非由構(gòu)建文件中的echo任務(wù)所產(chǎn)生的大多數(shù)信息
-verbose:顯示構(gòu)建過(guò)程中每個(gè)操作的詳細(xì)消息。此選項(xiàng)與-debug選項(xiàng)只能選其一
-debug:顯示Ant和任務(wù)開(kāi)發(fā)人員已經(jīng)標(biāo)志為調(diào)試消息的消息。此選項(xiàng)與-verbose只能選其一
-emacs:對(duì)日志消息進(jìn)行格式化,使它們能夠很容易地由Emacs的shell模式(shell-mode)所解析;也就是說(shuō),打印任務(wù)事件,但并不縮排,在其之前也沒(méi)有[taskname]
-logfile filename:將日志輸出重定向到指定文件
-logger classname:指定一個(gè)類(lèi)來(lái)處理Ant的日志記錄。所指定的類(lèi)必須實(shí)現(xiàn)了org.apache.tools.ant.BuildLogger接口
-listener classname:為Ant聲明一個(gè)監(jiān)聽(tīng)類(lèi),并增加到其監(jiān)聽(tīng)者列表中。在Ant與IDE或其他Java程序集成時(shí),此選項(xiàng)非常有用
-buildfile filename:指定Ant需要處理的構(gòu)建文件。默認(rèn)的構(gòu)建文件為build.xml
-Dproperty=value:在命令行上定義一個(gè)特性名--值對(duì)
-find filename:指定Ant應(yīng)當(dāng)處理的構(gòu)建文件。與-buildfile選項(xiàng)不同,如果所指定文件在當(dāng)前目錄中未找到,-find就要求Ant在其父目錄中再進(jìn)行搜索。這種搜索會(huì)繼續(xù)在其祖父目錄中進(jìn)行,直至達(dá)到文件系統(tǒng)的根為止,在此如果文件還未找到,則構(gòu)建失敗
}
compile
,test
,provided,runtime,test,system
compile
是默認(rèn)的范圍;如果沒(méi)有提供一個(gè)范圍,那該依賴(lài)的范圍就是編譯范圍。編譯范圍依賴(lài)在所有的classpath中可用,同時(shí)它們也會(huì)被打包。
provided
依賴(lài)只有在當(dāng)JDK或者一個(gè)容器已提供該依賴(lài)之后才使用。例如,如果你開(kāi)發(fā)了一個(gè)web應(yīng)用,你可能在編譯classpath中需要可用的Servlet API來(lái)編譯一個(gè)servlet,但是你不會(huì)想要在打包好的WAR中包含這個(gè)Servlet API;這個(gè)Servlet API JAR由你的應(yīng)用服務(wù)器或者servlet容器提供。已提供范圍的依賴(lài)在編譯classpath(不是運(yùn)行時(shí))可用。它們不是傳遞性的,也不會(huì)被打包。
runtime
依賴(lài)在運(yùn)行和測(cè)試系統(tǒng)的時(shí)候需要,但在編譯的時(shí)候不需要。比如,你可能在編譯的時(shí)候只需要JDBC API JAR,而只有在運(yùn)行的時(shí)候才需要JDBC驅(qū)動(dòng)實(shí)現(xiàn)。
test
范圍依賴(lài)在一般的 編譯和運(yùn)行時(shí)都不需要,它們只有在測(cè)試編譯和測(cè)試運(yùn)行階段可用。
system
范圍依賴(lài)與provided
類(lèi)似,但是你必須顯式的提供一個(gè)對(duì)于本地系統(tǒng)中JAR文件的路徑。這么做是為了允許基于本地對(duì)象編譯,而這些對(duì)象是系統(tǒng)類(lèi)庫(kù)的一部分。這樣的構(gòu)件應(yīng)該是一直可用的,Maven也不會(huì)在倉(cāng)庫(kù)中去尋找它。如果你將一個(gè)依賴(lài)范圍設(shè)置成系統(tǒng)范圍,你必須同時(shí)提供一個(gè)systemPath
元素。注意該范圍是不推薦使用的(你應(yīng)該一直盡量去從公共或定制的Maven倉(cāng)庫(kù)中引用依賴(lài))。
<dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>[3.8,4.0)</version> <scope>test</scope> </dependency>
<major version>.<minor version>.<incremental version>-<qualifier>Maven提供了三個(gè)隱式的變量,可以用來(lái)訪問(wèn)環(huán)境變量,POM信息,和Maven Settings.
env
變量:暴露了你操作系統(tǒng)或者shell的環(huán)境變量
project
變量暴露了POM。
settings
變量暴露了Maven settings信息。
<properties> <foo>bar</foo> </properties>
超級(jí)POM
所有的Maven項(xiàng)目的POM都擴(kuò)展自超級(jí)POM。你可以在${M2_HOME}/lib
中的maven-2.0.9-uber.jar
文件中找到pom-4.0.0.xml
。
超級(jí)pom:
<project>
<modelVersion>4.0.0</modelVersion>
<name>Maven Default Project</name>
<repositories>
<repository>
<id>central</id>
<name>Maven Repository Switchboard</name>
<layout>default</layout>
<url>http://repo1.maven.org/maven2</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>central</id>
<name>Maven Plugin Repository</name>
<url>http://repo1.maven.org/maven2</url>
<layout>default</layout>
<snapshots>
<enabled>false</enabled>
</snapshots>
<releases>
<updatePolicy>never</updatePolicy>
</releases>
</pluginRepository>
</pluginRepositories>
<build>
<directory>target</directory>
<outputDirectory>target/classes</outputDirectory>
<finalName>content-zh-0.5</finalName>
<testOutputDirectory>target/test-classes</testOutputDirectory>
<sourceDirectory>src/main/java</sourceDirectory>
<scriptSourceDirectory>src/main/scripts</scriptSourceDirectory>
<testSourceDirectory>src/test/java</testSourceDirectory>
<resources>
<resource>
<directory>src/main/resources</directory>
</resource>
</resources>
<testResources>
<testResource>
<directory>src/test/resources</directory>
</testResource>
</testResources>
</build>
<pluginManagement>
<plugins>
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.1</version>
</plugin>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.2-beta-1</version>
</plugin>
<plugin>
<artifactId>maven-clean-plugin</artifactId>
<version>2.2</version>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.0.2</version>
</plugin>
<plugin>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.0</version>
</plugin>
<plugin>
<artifactId>maven-deploy-plugin</artifactId>
<version>2.3</version>
</plugin>
<plugin>
<artifactId>maven-ear-plugin</artifactId>
<version>2.3.1</version>
</plugin>
<plugin>
<artifactId>maven-ejb-plugin</artifactId>
<version>2.1</version>
</plugin>
<plugin>
<artifactId>maven-install-plugin</artifactId>
<version>2.2</version>
</plugin>
<plugin>
<artifactId>maven-jar-plugin</artifactId>
<version>2.2</version>
</plugin>
<plugin>
<artifactId>maven-javadoc-plugin</artifactId>
<version>2.4</version>
</plugin>
<plugin>
<artifactId>maven-plugin-plugin</artifactId>
<version>2.3</version>
</plugin>
<plugin>
<artifactId>maven-rar-plugin</artifactId>
<version>2.2</version>
</plugin>
<plugin>
<artifactId>maven-release-plugin</artifactId>
<version>2.0-beta-7</version>
</plugin>
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>2.2</version>
</plugin>
<plugin>
<artifactId>maven-site-plugin</artifactId>
<version>2.0-beta-6</version>
</plugin>
<plugin>
<artifactId>maven-source-plugin</artifactId>
<version>2.0.4</version>
</plugin>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.4.2</version>
</plugin>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>2.1-alpha-1</version>
</plugin>
</plugins>
</pluginManagement>
<reporting>
<outputDirectory>target/site</outputDirectory>
</reporting>
</project>
1).默認(rèn)的超級(jí)POM定義了一個(gè)單獨(dú)的遠(yuǎn)程Maven倉(cāng)庫(kù),ID為central,這是所有Maven客戶(hù)端默認(rèn)配置訪問(wèn)的中央Maven倉(cāng)庫(kù);該配置可以通過(guò)一個(gè)自定義的
settings.xml
文件來(lái)覆蓋,注意這個(gè)默認(rèn)的超級(jí)POM關(guān)閉了從中央Maven倉(cāng)庫(kù)下載snapshot構(gòu)件的功能。如果你需要使用一個(gè)snapshot倉(cāng)庫(kù),你就要在你的pom.xml
或者settings.xml
中自定義倉(cāng)庫(kù)設(shè)置.
2)build
元素設(shè)置Maven標(biāo)準(zhǔn)目錄布局中那些目錄的默認(rèn)值.
3)POM中定義的groupId
,artifactId
和version
:這三項(xiàng)是所有項(xiàng)目都需要的坐標(biāo)
一個(gè)groupId
歸類(lèi)了一組相關(guān)的構(gòu)件。組定義符基本上類(lèi)似于一個(gè)Java包名。例如:groupId
org.apache.maven
是所有由Apache Maven項(xiàng)目生成的構(gòu)件的基本groupId。組定義符在Maven倉(cāng)庫(kù)中被翻譯成路徑,例如,groupId
org.apache.maven
可以在repo1.maven.org的/maven2/org/apache/maven
目錄下找到。
artifactId
是項(xiàng)目的主要定義符。當(dāng)你生成一個(gè)構(gòu)件,這個(gè)構(gòu)件將由artifactId
命名。當(dāng)你引用一個(gè)項(xiàng)目,你就需要使用artifactId
來(lái)引用它。artifactId
和groupId
的組合必須是唯一的。換句話(huà)說(shuō),你不能有兩個(gè)不同的項(xiàng)目擁有同樣的artifactId
和groupId
;在某個(gè)特定的groupId
下,artifactId
也必須是唯一的。
當(dāng)一個(gè)構(gòu)件發(fā)布的時(shí)候,它是使用一個(gè)版本號(hào)發(fā)布的。該版本號(hào)是一個(gè)數(shù)字定義符如“1.0”,“1.1.1”,或“1.1.2-alpha-01”。你也可以使用所謂的快照(snapshot)版本。一個(gè)快照版是一個(gè)處于開(kāi)發(fā)過(guò)程中的組件的版本,快照版本號(hào)通常以SNAPSHOT結(jié)尾;如,“1.0-SNAPSHOT”,“1.1.1-SNAPSHOT”,和“1-SNAPSHOT”。Section 9.3.1, “項(xiàng)目版本”介紹了版本和版本界限。
項(xiàng)目管理只是時(shí)間上的管理。
MOT是告訴你自己的內(nèi)心,你應(yīng)該怎么在社會(huì)上去做人。
其實(shí)我覺(jué)得做人是由后天性格+先天意識(shí)行為組合而成,而并不能由于某種培訓(xùn)和讀書(shū)就能夠改變本身個(gè)人后天形成的性格問(wèn)題。
再者我們?cè)倩剡^(guò)頭來(lái)思考,我們先天意識(shí)行為是怎么樣產(chǎn)生的。
1、想法不結(jié)合實(shí)際的情況
2、直接插足項(xiàng)目工作的安排
3、對(duì)管理上的專(zhuān)業(yè)知識(shí)不強(qiáng)
4、想到什么做什么,沒(méi)有顧及后果或者以后產(chǎn)生的問(wèn)題
5、沒(méi)有針對(duì)問(wèn)題去解決問(wèn)題,反而火上加火
6、相互的推讓問(wèn)題的責(zé)任,嘴上說(shuō)對(duì)責(zé)任要勇于承擔(dān),但是自己卻在逃避
7、不懂得怎么去管理人和協(xié)調(diào)人員的關(guān)系