国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

J2EE項(xiàng)目執(zhí)行:若干最佳實(shí)踐

2019-11-18 12:25:08
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

  雖然在幾乎所有的項(xiàng)目中一些相同的問(wèn)題不斷重復(fù)出現(xiàn),但是我們?nèi)匀蝗鄙倜鞔_的方法來(lái)解決它們。 在軟件開(kāi)發(fā)的職業(yè)生涯中, 我使用了一些方法來(lái)解決這些重復(fù)出現(xiàn)的困擾我的大部分開(kāi)發(fā)項(xiàng)目的問(wèn)題,這些方法真正有助于項(xiàng)目執(zhí)行效率的提升。本文中,我將與各位分享3項(xiàng)項(xiàng)目執(zhí)行的最佳實(shí)踐,其中的某幾個(gè)方法有充分的資格可以被認(rèn)定為模式(pattern)。
·        使用模板代碼
·        編寫(xiě)高效的開(kāi)發(fā)手冊(cè)
·        執(zhí)行自動(dòng)化代碼檢查

使用模板代碼

  開(kāi)發(fā)者可以從參考簡(jiǎn)單的業(yè)務(wù)用例和復(fù)雜的業(yè)務(wù)用例的示例代碼實(shí)現(xiàn)中獲得幫助,編寫(xiě)出有效、高效率的代碼。考慮下面的一些經(jīng)常困擾軟件開(kāi)發(fā)項(xiàng)目的因素:
·        技術(shù)始終在變化,要找到對(duì)于新技術(shù)具有使用經(jīng)驗(yàn)的有競(jìng)爭(zhēng)力的技術(shù)人員是很困難的事情(譯注: 去做獵頭吧!)。另一方面,開(kāi)發(fā)新手可能不具備編寫(xiě)有效正確代碼的經(jīng)驗(yàn)。模板代碼為開(kāi)發(fā)者的工作提供了良好的參考,使得學(xué)習(xí)新技術(shù)變的相對(duì)簡(jiǎn)單。
·        學(xué)習(xí)利用新技術(shù)需要時(shí)間,而且假如使用不當(dāng)可能導(dǎo)致一團(tuán)混亂,因此強(qiáng)迫開(kāi)發(fā)者自己學(xué)習(xí)新技術(shù)不是很好的途徑。 作為替代方法,提供模板代碼作為開(kāi)發(fā)者編碼的參考使得開(kāi)發(fā)者在開(kāi)發(fā)過(guò)程中獲得了學(xué)習(xí)新技術(shù)的良好起點(diǎn)。
·        許多項(xiàng)目必須由有限的人員在緊迫的期限內(nèi)完成。項(xiàng)目團(tuán)隊(duì)中的每個(gè)人都不應(yīng)該重新造輪子。高級(jí)技術(shù)人員可能在設(shè)計(jì)階段提供幫助,不過(guò)項(xiàng)目進(jìn)行到實(shí)現(xiàn)階段可能就要求程序員自助了。一不留意的小問(wèn)題,到了發(fā)現(xiàn)的時(shí)候可能已經(jīng)造成了混亂。問(wèn)問(wèn)自己,使用javadoc工具的時(shí)候,有幾次遵循了標(biāo)準(zhǔn)的格式和文檔生成指導(dǎo)方針呢?代碼是否遵循了定義良好的習(xí)慣用法和最佳實(shí)踐呢?那么如何貫徹這些良好實(shí)踐呢?此處,可視的模板代碼能夠提供比技術(shù)書(shū)籍或者參考手冊(cè)更有效的幫助,因此,應(yīng)該使用模板代碼。
·        許多軟件項(xiàng)目不僅體積龐大,而且分布式地進(jìn)行開(kāi)發(fā)。有時(shí),項(xiàng)目的執(zhí)行是同時(shí)在世界上的不同地點(diǎn)展開(kāi)的。作為開(kāi)發(fā)人員你不想看到——當(dāng)你的項(xiàng)目部分接近完成時(shí),你的代碼的客戶驚異的發(fā)現(xiàn)你的代碼沒(méi)有滿足他們的需求。應(yīng)該在開(kāi)始編寫(xiě)代碼實(shí)現(xiàn)功能前,將示例代碼送給你的客戶評(píng)審,并記錄反饋。這些示例代碼不應(yīng)該僅僅是類似”世界,你好”的程序,應(yīng)該具有代表性,與實(shí)際編寫(xiě)的代碼很接近。
·        通常開(kāi)發(fā)者都有一堆參考手冊(cè)、標(biāo)準(zhǔn)、程序框架等資料,可以在項(xiàng)目中通過(guò)它們來(lái)獲得幫助。但是,即使已經(jīng)完成了設(shè)計(jì)工作,編碼的風(fēng)格也不是顯而易見(jiàn)的,難以遵守。可視的模板代碼可以提供這方面的幫助。除非開(kāi)發(fā)者可以看到真實(shí)的代碼例程,否則他們對(duì)當(dāng)前項(xiàng)目的解釋彼此間可能有些許的出入。 一個(gè)簡(jiǎn)單功能由多個(gè)開(kāi)發(fā)者來(lái)實(shí)現(xiàn),其實(shí)現(xiàn)方式可能是不同的,甚至可能沒(méi)有一個(gè)與推薦的模擬最佳實(shí)現(xiàn)的方式相同。

模板代碼的實(shí)現(xiàn)

  首先,召集一組專家(技術(shù)上的和業(yè)務(wù)上的)從目標(biāo)項(xiàng)目的問(wèn)題域中甄別出簡(jiǎn)單用例和復(fù)雜用例各一個(gè),并在現(xiàn)有設(shè)計(jì)的基礎(chǔ)上分別實(shí)現(xiàn)這兩個(gè)用例。這樣,項(xiàng)目組就擁有了自己的模板代碼。下面列出了一些編寫(xiě)模板代碼的小技巧
·        模板代碼中應(yīng)該包含立即可用的編譯和部署腳本。否則,在開(kāi)發(fā)的構(gòu)建階段解決這些問(wèn)題又要浪費(fèi)不少時(shí)間。
·        項(xiàng)目的基本目錄結(jié)構(gòu)應(yīng)該預(yù)備完畢,并且包含了欲在項(xiàng)目中使用的各種庫(kù)。
·        模板代碼應(yīng)該遵循項(xiàng)目中使用的命名規(guī)范、代碼風(fēng)格、其它標(biāo)準(zhǔn)以及應(yīng)用框架的要求。
·        模板代碼中應(yīng)該使用定義良好的Javadoc模板(比如、基于Eclipse的Javadoc模板),以幫助開(kāi)發(fā)人員編寫(xiě)javadoc注釋。編寫(xiě)良好的javadoc注釋是很重要的,通常這些注釋可能是代碼維護(hù)和再開(kāi)發(fā)團(tuán)隊(duì)的唯一可用的文檔。
·        程序語(yǔ)言中明確的編碼慣用法應(yīng)該在模板代碼中使用,這有助于開(kāi)發(fā)者編寫(xiě)有效的代碼。
·        模板代碼應(yīng)該明確定義使用開(kāi)發(fā)框架的標(biāo)準(zhǔn)方法。對(duì)于新的開(kāi)發(fā)者來(lái)說(shuō),在項(xiàng)目的初始構(gòu)建階段編寫(xiě)基于特定框架的實(shí)現(xiàn)類是很困難的任務(wù)。示例代碼有助于新的開(kāi)發(fā)者理解框架等概念。即使框架有許多文檔,利用框架進(jìn)行有效率的開(kāi)發(fā)也并不都是很輕易。
·        模板代碼應(yīng)該展示如何利用JUnit或其他測(cè)試框架編寫(xiě)測(cè)試用例(test cases)。
·        客戶的技術(shù)團(tuán)隊(duì)?wèi)?yīng)該評(píng)審這些模板代碼,這樣他們對(duì)于在項(xiàng)目構(gòu)建階段結(jié)束時(shí)的代碼質(zhì)量具有更明確的熟悉,而不會(huì)在最后時(shí)刻感到意外。
·        模板代碼應(yīng)該從頭到尾的涵蓋用例,比如從表示層到數(shù)據(jù)層。
·        對(duì)于模板代碼的各種細(xì)枝末節(jié)應(yīng)該進(jìn)行一次詳盡的介紹,使得開(kāi)發(fā)者熟悉它們。開(kāi)發(fā)者應(yīng)該理解在架構(gòu)的每個(gè)層次需要做那些工作、使用了(或者可能使用)那些編碼慣用法和最佳實(shí)踐,以及為什么使用它們。

使用模板代碼的好處
·        開(kāi)發(fā)者獲得開(kāi)始編寫(xiě)代碼的參考
·        客戶與開(kāi)發(fā)者就項(xiàng)目預(yù)期質(zhì)量達(dá)成一致,因而避免了通常由于理解差異產(chǎn)生的各種問(wèn)題。
·        開(kāi)發(fā)者擁有了開(kāi)始編碼工作的骨架。
·        開(kāi)發(fā)者更輕易把握并應(yīng)用項(xiàng)目中使用的開(kāi)發(fā)框架和各種外部API,這有助于提高開(kāi)發(fā)效率。
·        開(kāi)發(fā)者沒(méi)有重新造輪子。大部分的最佳開(kāi)發(fā)實(shí)踐和編碼慣用法都擺在了他們面前,這也可以提高開(kāi)發(fā)效率。


有效的開(kāi)發(fā)手冊(cè)

  假設(shè)我們必須完成一個(gè)日常開(kāi)發(fā)人員為30到50人的大項(xiàng)目。不是所有的開(kāi)發(fā)人員都把握了需要使用的技術(shù)以及遵循的標(biāo)準(zhǔn)。一個(gè)項(xiàng)目可能需要使用很多技術(shù)以及私有的開(kāi)發(fā)框架。這些框架可能在以后的Java企業(yè)項(xiàng)目中使用。有效的在項(xiàng)目間,開(kāi)發(fā)者之間進(jìn)行大量知識(shí)的轉(zhuǎn)移是一個(gè)大挑戰(zhàn)。知識(shí)轉(zhuǎn)移也涉及到如下的一些問(wèn)題:
·        很多大型項(xiàng)目的開(kāi)發(fā)持續(xù)很長(zhǎng)時(shí)間(1到2年)。我們必須正視這樣的事實(shí):軟件行業(yè)具有相當(dāng)高的離職率,這是基本的現(xiàn)實(shí)也是一個(gè)挑戰(zhàn)。雇用新人可能很輕易,但是教授新人項(xiàng)目知識(shí)卻又是一項(xiàng)艱巨任務(wù),非凡的,考慮到項(xiàng)目的進(jìn)展不能停滯不前。
·        一些開(kāi)發(fā)者可能不具有期望的技術(shù)水平。現(xiàn)在,適時(shí)的找到把握技術(shù)的開(kāi)發(fā)者是很困難的。當(dāng)項(xiàng)目期限很急時(shí),新的開(kāi)發(fā)者沒(méi)有時(shí)間去學(xué)習(xí)厚厚的技術(shù)書(shū)籍或者參考手冊(cè)。一部分人可能工作敏銳、高效,這樣可以騰出額外時(shí)間來(lái)學(xué)習(xí)并應(yīng)用新的技術(shù),但是不能假定所有人都會(huì)如此。
·        維護(hù)一個(gè)構(gòu)建完畢的軟件項(xiàng)目同樣也是大的挑戰(zhàn)。在開(kāi)發(fā)周期后的代碼維護(hù)工作可能是由客戶的IT團(tuán)隊(duì)執(zhí)行的。對(duì)他們來(lái)說(shuō),熟悉項(xiàng)目的技術(shù)架構(gòu)并且改動(dòng)代碼以做出改變很困難。假如沒(méi)有定義明確的方式來(lái)傳遞這些知識(shí),那么在維護(hù)階段的初期,客戶IT團(tuán)隊(duì)研讀項(xiàng)目代碼和設(shè)計(jì)文檔的工作可能會(huì)是很沮喪的經(jīng)歷。

開(kāi)發(fā)手冊(cè)應(yīng)該能夠解決上面提到的問(wèn)題,但是如何編寫(xiě)一個(gè)有效的開(kāi)發(fā)手冊(cè)呢?

編寫(xiě)開(kāi)發(fā)手冊(cè)
下面是一些如何編寫(xiě)開(kāi)發(fā)手冊(cè)的提示:
·        開(kāi)發(fā)手冊(cè)應(yīng)該包含全部與搭建開(kāi)發(fā)環(huán)境相關(guān)的必要信息
·        開(kāi)發(fā)手冊(cè)的語(yǔ)句應(yīng)該簡(jiǎn)明易讀。假如閱讀的人發(fā)現(xiàn)手冊(cè)很難閱讀,這不是閱讀者、而是手冊(cè)編寫(xiě)者的失敗。
·        開(kāi)發(fā)手冊(cè)應(yīng)該包含大量的示例。示例可以有效地表明手冊(cè)的內(nèi)容。
·        請(qǐng)求一位不熟悉項(xiàng)目中所使用的技術(shù)的開(kāi)發(fā)者檢查開(kāi)發(fā)手冊(cè)。這樣,假如手冊(cè)內(nèi)包含會(huì)造成迷惑或者不明確的內(nèi)容,可以在其它人使用本手冊(cè)前修改這些地方,以使手冊(cè)更清楚明確。
·        開(kāi)發(fā)手冊(cè)應(yīng)該在底層設(shè)計(jì)階段,作為階段任務(wù)的一部分完成。當(dāng)構(gòu)建階段開(kāi)始時(shí),開(kāi)發(fā)者可以有效利用本手冊(cè)。
·        開(kāi)發(fā)手冊(cè)需要包括多少信息呢?如何在信息的多寡中平衡呢?開(kāi)發(fā)者不喜歡厚重的手冊(cè)。但是,開(kāi)發(fā)手冊(cè)中不能遺漏可以為許多不明確之處提供語(yǔ)境的信息。需要考慮開(kāi)發(fā)者的真正需求,而不是僅僅考慮可以提供的全部信息是什么。使用簡(jiǎn)單的、直截了當(dāng)?shù)?、漸進(jìn)的方式來(lái)編寫(xiě)開(kāi)發(fā)手冊(cè)。
·        開(kāi)發(fā)手冊(cè)的信息提供方式應(yīng)該與閱讀者的閱讀直覺(jué)相符,而不該是在各處零落地散布著這樣那樣的信息。手冊(cè)內(nèi)容的組織方式應(yīng)該與現(xiàn)實(shí)中開(kāi)發(fā)項(xiàng)目時(shí)需要閱讀信息的先后步驟一致。 比如,對(duì)于Java企業(yè)項(xiàng)目,首先需要搭建開(kāi)發(fā)環(huán)境,然后開(kāi)始表現(xiàn)層和應(yīng)用數(shù)據(jù)層的編碼工作。手冊(cè)信息也應(yīng)該以同樣的順序組織。
·        需要明確的是:手冊(cè)不能迷惑開(kāi)發(fā)者。比如,開(kāi)發(fā)者在編寫(xiě)Struts框架下的Action類時(shí)需要使用特定的Xdoclet標(biāo)簽,那么開(kāi)發(fā)者應(yīng)該很清楚項(xiàng)目中使用的各種XDoclet標(biāo)簽的意義和使用方式。為了查找更詳盡的信息,開(kāi)發(fā)者總是可以參考開(kāi)發(fā)手冊(cè)。

下面我們考慮一個(gè)在Java企業(yè)項(xiàng)目中的使用的真實(shí)地開(kāi)發(fā)手冊(cè)應(yīng)該是什么樣的,它應(yīng)該包含的信息細(xì)節(jié)如下:
·        開(kāi)發(fā)環(huán)境搭建的細(xì)節(jié):當(dāng)新的開(kāi)發(fā)者加入項(xiàng)目時(shí),必須搭建開(kāi)發(fā)環(huán)境,然后才能開(kāi)始工作。不要認(rèn)為開(kāi)發(fā)者清楚項(xiàng)目的大小細(xì)節(jié)。假如項(xiàng)目一起使用了Eclipse和Weblogic開(kāi)發(fā)Web應(yīng)用,新的開(kāi)發(fā)者可能都不清楚Eclipse或者Weblogic是什么東東。因此,搭建開(kāi)發(fā)環(huán)境的細(xì)節(jié)信息應(yīng)該是開(kāi)發(fā)手冊(cè)的第一部分。具有基本Java知識(shí)的新開(kāi)發(fā)者應(yīng)該很輕易的按照手冊(cè)中的這些信息搭建開(kāi)發(fā)環(huán)境。
·        表現(xiàn)層的細(xì)節(jié):通常,開(kāi)發(fā)者對(duì)某個(gè)用例的實(shí)現(xiàn)從表現(xiàn)層開(kāi)始。開(kāi)發(fā)手冊(cè)中應(yīng)該包含如何創(chuàng)建表現(xiàn)層組件元素的具體步驟。比如,項(xiàng)目的表現(xiàn)層使用Struts框架,手冊(cè)中應(yīng)該包含如何編寫(xiě)Action類和Form類的確定步驟。假如項(xiàng)目使用XDoclet來(lái)構(gòu)建Struts配置文件struts-config.xml和其他配置文件,相應(yīng)的這些步驟也應(yīng)該包含在內(nèi)。jsp的相關(guān)技術(shù)信息也應(yīng)該如此。應(yīng)用MVC模式,無(wú)論如何不應(yīng)該在JSP頁(yè)面中包含任何Java代碼來(lái)實(shí)現(xiàn)業(yè)務(wù)邏輯。但是在實(shí)際開(kāi)發(fā)中如何使用JSTL(JSP標(biāo)準(zhǔn)標(biāo)簽庫(kù))標(biāo)簽來(lái)實(shí)現(xiàn)那樣的要求對(duì)于初學(xué)者或者是中級(jí)開(kāi)發(fā)者可能都是很大的難題。開(kāi)發(fā)手冊(cè)中包含一些展示如何在JSP頁(yè)面中使用JSTL標(biāo)簽的真實(shí)示例可能對(duì)這些開(kāi)發(fā)者有些幫助。
·        業(yè)務(wù)層的細(xì)節(jié):業(yè)務(wù)邏輯可以應(yīng)用無(wú)狀態(tài)EJB組件、基于SPRing的組件、或者簡(jiǎn)單的原始java對(duì)象(plain-old java object)來(lái)實(shí)現(xiàn)。開(kāi)發(fā)手冊(cè)中應(yīng)包含項(xiàng)目中使用的業(yè)務(wù)組件代碼的骨架以及業(yè)務(wù)邏輯實(shí)現(xiàn)的實(shí)際例程
·        數(shù)據(jù)層的細(xì)節(jié):依靠于項(xiàng)目使用的持久化機(jī)制,開(kāi)發(fā)手冊(cè)中應(yīng)該包含JDBC、Hibernate或者任何基于其它框架的DAO(數(shù)據(jù)訪問(wèn)對(duì)象)的信息,包含項(xiàng)目中如何使用此持久化機(jī)制的步驟以及最佳實(shí)踐。
·        其它信息:手冊(cè)需提供J2EE項(xiàng)目架構(gòu)各層中使用的各種內(nèi)部或者外部組件的信息。例如,應(yīng)該包括日志、郵件、代碼檢查和安全等組件的信息。同樣的,在項(xiàng)目后期,手冊(cè)中應(yīng)該包含一些如何擴(kuò)展業(yè)務(wù)需求的章節(jié)。比如,項(xiàng)目中使用了批處理框架,那么如何為新的批處理需求擴(kuò)展它呢?

自動(dòng)化代碼檢查

  代碼檢查是另外一項(xiàng)需處理的事項(xiàng)。當(dāng)代碼大量生成時(shí),持續(xù)的代碼檢查是必須的工作。即使已經(jīng)定義了一套代碼檢查的規(guī)則,還是有許多問(wèn)題沒(méi)有辦法在這些規(guī)則中描述并加以限制?;趥€(gè)人能力和經(jīng)驗(yàn),每個(gè)人都有自己的代碼檢查方式。同時(shí),有些問(wèn)題很微小,無(wú)法進(jìn)行逐行檢查。 假如需要檢查的代碼數(shù)量很大,這些微小的問(wèn)題可能會(huì)在一些地方被忽略掉。假如IDE自身產(chǎn)生了錯(cuò)誤又怎么辦?還好,有些工具可以替代人工代碼檢查來(lái)發(fā)現(xiàn)這些問(wèn)題。

Eclipse IDE的設(shè)置
有時(shí), 設(shè)置IDE的選項(xiàng)可以提供些幫助。比如,你可以配置Eclipse IDE的選項(xiàng),當(dāng)代碼中出現(xiàn)問(wèn)題時(shí)顯示警告。下圖是如何在Eclipse中設(shè)置Javadoc配置選項(xiàng)的示例。

J2EE項(xiàng)目執(zhí)行:若干最佳實(shí)踐(圖一)
圖 1. Eclipse Javadoc 設(shè)置

選項(xiàng)設(shè)置好后,Eclipse會(huì)在出現(xiàn)錯(cuò)誤時(shí)顯示警告信息,然后開(kāi)發(fā)者可以修改。假如項(xiàng)目標(biāo)準(zhǔn)很嚴(yán)格,IDE的警告將升級(jí)為錯(cuò)誤,開(kāi)發(fā)者必須處理這些問(wèn)題。

Jlint 代碼檢查工具
類似的,可以在Eclipse中使用Jlint工具以發(fā)現(xiàn)代碼中的微小問(wèn)題。下面是在Eclipse中如何使用JLint的方法和步驟:
·        下載jlint的2進(jìn)制版本以及相應(yīng)的Eclipse插件,解壓縮2進(jìn)制版本到C:/lint目錄,解壓縮插件到Eclipse插件目錄。
·        運(yùn)行Eclipse, 選擇菜單項(xiàng)Window(窗口)->Preferences(設(shè)置)->Java->Jlint,設(shè)定jlint.exe的目標(biāo)位置為C:/jlint/jlint.exe
·        在Eclipse的資源(Resource)視圖中右鍵點(diǎn)擊你的項(xiàng)目,然后選擇jlint選項(xiàng)即可。當(dāng)一次完整地工作區(qū)編譯后,Jlint會(huì)在工作區(qū)內(nèi)可能出現(xiàn)問(wèn)題的地方顯示黃色警告標(biāo)記。
下圖 顯示了如何在Eclipse中配置Jlint

J2EE項(xiàng)目執(zhí)行:若干最佳實(shí)踐(圖二)

點(diǎn)擊查看大圖

圖2 Eclipse中Jlint插件的配置

Lint4j
假如不使用IDE,那么可以結(jié)合ant使用lint4j發(fā)現(xiàn)代碼中的問(wèn)題。Ant腳本中需要聲明的參數(shù)如下:
·        lint4j.dist.dir: lint4j的分發(fā)包的安裝目錄
·        packages:需要由lint4j檢查的java包名稱
·        ignorePackages: 不需要由lint4j檢查的java包名稱

下面是使用jlint的ant腳本示例:
lint4j的Ant Build腳本
<?xml version="1.0"?>
<project name="Lint4j" default="lint4j" basedir=".">

  <property name="lint4j.dist.dir"         value="C:/tools/lint4j-0.8.2"/>  <!—lint4j包的路徑-->

  <property name="lint4j.level"            value="5"/>     <!—lint4j檢查使用的參數(shù)-->
  <property name="lint4j.exact"            value="false"/>  <!—lint4j檢查使用的參數(shù)-->

    <taskdef name="lint4j" classname="com.jutils.lint4j.ant.Lint4jAntTask">
        <classpath>
            <pathelement location="${lint4j.dist.dir}/jars/lint4j.jar" />  <!—lint4j包的信息-->
        </classpath>
    </taskdef>
    <target name="lint4j" description="Run Lint4j on your source">
<!—lint4j  忽略不處理的java包   需要檢查的包         其它參數(shù),詳見(jiàn)lint4j文檔        -->
        <lint4j     ignorePackages=""      packages="com.domain.*" level="${lint4j.level}" exact="${lint4j.exact}">
            <sourcepath>
                <dirset dir=".">
                    <include name="**/src" />
                </dirset>
            </sourcepath>
            <classpath>
                <pathelement location="C:/bea/weblogic81/server/lib/weblogic.jar" />
                <fileset dir=".">
                    <include name="**/*.jar" />
                    <include name="**/*.zip" />
                </fileset>
                <fileset dir="ejblib">
                    <include name="**/*.jar" />
                </fileset>
                <fileset dir="lib">
                    <include name="**/*.jar" />
                </fileset>
            </classpath>
            <formatters>
                <formatter type="text" />
                <formatter type="text" toFile="./target/lint4j.log"/>  <!—lint4j報(bào)告文件-->
            </formatters>
        </lint4j>
    </target>
</project>



發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 海口市| 九龙坡区| 许昌县| 民县| 通城县| 德兴市| 杭州市| 扶余县| 安新县| 濮阳市| 旬阳县| 太湖县| 十堰市| 临桂县| 舞钢市| 盐边县| 始兴县| 武定县| 福海县| 灯塔市| 循化| 衡南县| 英德市| 盐亭县| 温泉县| 长子县| 原阳县| 柳州市| 新宁县| 永宁县| 常熟市| 维西| 万安县| 宕昌县| 宜黄县| 章丘市| 邵武市| 凤城市| 宽城| 兴业县| 双城市|