目前分類:Maven (28)

瀏覽方式: 標題列表 簡短摘要

  在想移blog後,是不是要依抽象類別來分,如Maven、Ant甚至Git放到CM,Regex也包括Shell Script。臨時支援他人寫的程式,跳過Ant直接接觸Maven的我,注記一下Ant在manifest.mf生成dependency jar list的方法。

原來的Ant Script摘錄如下:

Jemmy 發表在 痞客邦 留言(0) 人氣()

  這事發生在我用PC自svn下載之前開發的東東所遇,而到Maven Repository URL去看,其實都有這些jar,但在local裡卻沒下載到,以aspectj-1.6.9為例,只有aspectj-1.6.9.jar.lastUpdated和aspectj-1.6.9.pom.lastUpdated而已.後來直接刪除這個1.6.9目錄再對project clean就下載成功.後來去看了lastUpdated內容,如下:

#Last modified on: Fri Sep 03 14:24:24 CST 2010

Jemmy 發表在 痞客邦 留言(0) 人氣()

  看來我對Maven的<build>的<plugin>的來龍去脈還不甚了解,它應該是源自這個repository:http://repo2.maven.org/maven2/org/apache/maven/plugins/。所以maven-compiler-plugin、maven-jar-plugin等都可以應對到這repostiry的出處。

  在包成Jar釋給客戶端時,想把不會用到的java檔予以排除編譯之外。其實一開始我就想錯了,真正目的想把不要用到的class不包成jar。所以maven-compiler-plugin是針對*.java的處理,本來預設包成jar時就不會把原始檔放進去,若在<configuration>裡放了<excludes>來排除特定的原始檔,反而把未排除的原始檔包進jar裡,或者在<resources>設定亦同。所以要用maven-jar-plugin來排除特定的class:

Jemmy 發表在 痞客邦 留言(0) 人氣()

  在包成Jar或war檔時,如何指定加入或排除額外的檔案,如配置檔、圖檔等。在pom.xml設定如下:

<build>

Jemmy 發表在 痞客邦 留言(0) 人氣()

  這是個有時效期限的資訊。最新版Eclipse 3.6,代號Helios-希臘神話的太陽神,無法啟動M2Eclipse插件。經由http://permalink.gmane.org/gmane.comp.ide.eclipse.plugins.m2eclipse.user/5898查知,Sonatype會釋出相容於Eclipse 3.6的0.10.2版,目前只釋出核心插件,在安裝好0.10.0後,再安裝https://repository.sonatype.org/content/repositories/forge-sites/m2e/0.10.2/S/0.10.2.20100623-1649/,就能正常在Helio下執行M2Eclipse了。

Jemmy 發表在 痞客邦 留言(0) 人氣()

  在用第三方的jar時,之前很笨在.m2的repository目錄下手動建置groupId子目錄,其實有現成的語法可以把local的jar檔更新至repository。語法如下:

mvn install:install-file -Dfile=<path-to-file> -DgroupId=<group-id> -DartifactId=<artifact-id> -Dversion=<version> -Dpackaging=<packaging>

  這樣在mvn package或mvn install時就不會找不到3rd的jar而無法打包。接著如何設定Jar的MANIFEST.MF,指定Main Class以及把reference的jar全部copy出來。可參考如下pom.xml設定:

Jemmy 發表在 痞客邦 留言(0) 人氣()

  想不到因為專案關係,接觸可能會派上用場的CORBA。CORBA是跨語言的元件模型,底蘊還摸不清楚,先記下如何使用Maven操作CORBA。

module ChinaApp 

Jemmy 發表在 痞客邦 留言(0) 人氣()

  在Eclipse執行Maven的jetty:run過程,總出現以下這行討厭的訊息:

[WARNING] Using platform encoding (MS950 actually) to copy filtered resources, i.e. build is platform dependent!

Jemmy 發表在 痞客邦 留言(1) 人氣()

  參觀了http://www.javaworld.com.tw/roller/piaoyi/entry/usefuleclipseplugins,下載幾個plugin來玩玩。本來想找Maven在Native2Ascii的支援,沒想到就有現成的plugin,可以做到編輯時看到的是中文,存檔變成Unicode格式,而且還是兩個:Properties EditorJInto。前者可以按右鍵選擇看Unicode內容,後者是採Table式編輯。

  稍為符合一定程度的開發,像CoverageCheck Style都會有。而我比較在意的是JDepend,日前前老板問過我一事,有無工具可以推導一個Jar的dependency,我印象中沒有,最多從其中最常用的一個找出它在Maven的artifact id。而JDepend似乎就補足這樣的需求,它的Eclipse Plugin的網址是http://andrei.gmxhome.de/eclipse,安裝後,在package按右鍵,點選[Run JDepend analysis](早一點版本只寫JDepend),就會切換到JDepend Perspective,如下:

Jemmy 發表在 痞客邦 留言(0) 人氣()

Product artifact Group ID Artifact ID
Java Activation Framework javax.activation activation
J2EE javax.j2ee j2ee
Java Data Object (JDO) javax.jdo jdo
Java Message Service (JMS) javax.jms jms
JavaMail javax.mail mail
Java Persistence API (JPA) / EJB 3 javax.persistence persistence-api
J2EE Connector Architecture javax.resource connector
J2EE Connector Architecture API javax.resource connector-api
Java Authentication and Authorization Service (JAAS) javax.security jaas
Java Authorization Contract for Containers javax.security jacc
Servlet API javax.servlet servlet-api
Servlet JavaServer Pages (JSP) javax.servlet jsp-api
Servlet JavaServer Pages Standard Tag Library (JSTL) javax.servlet jstl
JDBC 2.0 Optional Package javax.sql jdbc-stdext
Java Transaction API (JTA) javax.transaction jta
Java XML RPC javax.xml jaxrpc
Portlet javax.portlet portlet-api
Java Naming and Directory Interface (JNDI) javax.naming jndi

參考自http://maven.apache.org/guides/mini/guide-coping-with-sun-jars.html

Jemmy 發表在 痞客邦 留言(0) 人氣()

  晚上游完泳,NB放公司,家裡用PC,把Eclipse該掛的plugin掛上。爭議最大的還是M2Eclipse。一樣還是用Struts2作為練習,結果發現M2Eclipse提供的archtype清單把struts2 archtype starter拿掉了。M2Eclipse還是有保留[Add Archtype]按鈕的功能,變成要手動加上去。M2Eclipse現在是0.10.0版,估計出現1.0版可能要收錢了。

  過程中想到M2Eclipse以外的替代品,結果只適合Maven 1.x版。倒是找到如何在M2Eclipse 0.10.0自訂Maven Build另一個方式,一樣以mvn jetty:run為例,我參考這個網址:http://wiki.eclipse.org/Jetty/Feature/Jetty_Maven_Plugin,在pom.xml的<build>/<plugins>下加了這麼一段:

Jemmy 發表在 痞客邦 留言(0) 人氣()

  JBoss想把原本免錢的Hibernate改成商業框架謀利,在官方網站聲明Free凍結到3.2.6.ga版本,作法上無可厚非。而發行Eclipse的Maven plugin-M2Eclipse的廠商Sonatype手段不光明到讓我首次對IT爆粗口。

  M2Eclipse到最新的0.10.0版還是Free,但從Run Configuration自訂Maven Build功能卻失去作用了。在0.9.9、0.98版,可以自訂mvn jetty:run的command,而到0.10.0不管怎麼訂都失去作用,而且連舊版plugin站台都拿掉了。而且還有以下功能也失去。

Jemmy 發表在 痞客邦 留言(2) 人氣()

  麻煩(Maven)又來了,Hibernate真的比iBATIS難Survey,而它預設用Ant作為建構工具,雖然使用Maven-Ant-Task在DOS下遷移到Maven沒問題,可是在Eclipse上玩Maven-Ant-Task就麻煩了,好在這事發生也早,Google也指示一些改進作法:

  以Maven Ant Task初體驗為例在Eclipse上玩,打開build.xml檔,通常右側視窗列出幾個Task讓你按右鍵點選[Run As]/[Ant build.xml](如下圖),一執行ant db這個Task,就會出下列錯誤訊息:

Jemmy 發表在 痞客邦 留言(0) 人氣()

  疏樓更迭,技術也更迭。才想把新版的Eclipse 3.5 SR1版上Maven,才知道Maven的Eclipse Plugin搬家了,M2Eclipse的新居是http://m2eclipse.sonatype.org/sites/m2e,版本為0.10.0。還提供一個Extra Plugin:http://m2eclipse.sonatype.org/sites/m2e-extras,官方網站是寫:

  • Maven SCM Integration
  • Maven SCM handler for Team/CVS
  • Maven SCM handler for Subclipse
  • Maven issue tracking configurator for Mylyn 3.x
  • Maven Integration for WTP
  • M2Eclipse Extensions Development Support
  •   結果Extra plugin不起來,原因是要先安裝Subclipse,而Subclipse也升級到1.6,其路徑為http://subclipse.tigris.org/update_1.6.x,據稱是支援到圖形介面了。

Jemmy 發表在 痞客邦 留言(0) 人氣()

  Maven可以包含Ant Script,反過來說,Ant可否使用Maven的dependency repostories呢?It's right。使用Maven Ant Task。

  1. 先自官方網站http://maven.apache.org/ant-tasks/下載最新的maven-ant-tasks-x.y.z.jar檔,x.y.z目前版本是2.1.0。
  2. 將這個Jar檔放進Ant Home目錄下的lib目錄。
  3. 可以在DOS下執行ant -diagnostics查看Ant是否把這個jar納入在class path裡。

  使用Maven Ant Task,其Ant版本需在1.7版以上,藉由maven-ant-tasks-x.y.z.jar,其dependency jar檔所放置的repository位置及設定應與Maven2相同,而在Ant的build.xml如何設定dependency jar,寫法如下(取自O'Reilly的Harnessing Hibernate):

Jemmy 發表在 痞客邦 留言(0) 人氣()

  試著用OSGi建構工具Pax的pax-create-project去建立一個新Project,它是以Maven為基礎建立。然後在Eclipse import這個Maven Project,結果除了原來那個artifact ID的project以外,還在Project Explorer另外建立4個project:compiled-bundle-settings、provision、shared-plugin-settings、wrapper-bundle-settings,徒增困擾之餘,只好先研究Maven的modules是怎麼回事,使用pax-create-project建出來的目錄結構如下,artifact id是my:

\my

├ pom.xml  (artifact id parent project)

├ \poms 

︱├ pom.xml  (artifact id = shared-plugin-settings)

︱├ \compiled

︱︱ └ pom.xml (artifact id = compiled-bundle-settings)

︱└ \wrappers

︱   └ pom.xml  (artifact id = wrapper-bundle-settings)

└ \provision

    └ pom.xml (artifact id = provision)

  以上五個pom.xml的artifact id會在Eclipse一共建立五個project,parent project的pom.xml裡所引用dependencies、properties等會被子pom.xml繼承引用,父子關係在pom.xml建立方向如下:

父pom.xml設定:

<project>

Jemmy 發表在 痞客邦 留言(0) 人氣()

  專案處境:某客戶長期使用JDK 1.4開發,預計未來(不知要等多久)升級JDK 5.0,而JUnit 4.x版需要用到JDK 5.0的注釋。需求是如何使用Maven在測試時使用JDK 5.0,交付war檔或jar檔是使用JDK 1.4編譯。

  經分析,開發時仍需使用JDK 5.0,才能引入JUnit 4.x,開發過程就避免使用JDK 5.0的語法。是故可以設定不同的Profile。在<Project>根節點加以下內容:

Jemmy 發表在 痞客邦 留言(0) 人氣()

  其用意有二:

  1. 存取Local的Repository減少HTTP Request,降低頻寬負荷。
  2. 針對駐點開發環境不能連上Internet情況。

  第一步:下載Nexus,至http://nexus.sonatype.org/downloads/下載nexus-webapp-version-bundle.zip,目前最新版是1.3.6,也可以下載nexus-webapp-version.war自己佈到Tomcat或其它的Web Server。而我用的是Nexus預備的Jetty,把zip檔解壓縮後,切換到Nexus Home目錄下的nexus-webapp-1.3.6\bin\jsw\windows-x86-32,執行Nexus.bat就啟動了。

Jemmy 發表在 痞客邦 留言(0) 人氣()

  受命瞭解測試裡的Code Coverage,發現一個不錯的目錄網站http://java-source.net,和http://www.open-open.com一樣,是絕世武功的目錄。

  這是題外話,Google大多推薦Cobertura,另外也有推薦Emma,皆以JUnit為基礎。而Emma卻未名列java-source.net裡。這兩個都有下載來踹,各有千秋,也各有適用範圍,我會建議兩個都用。

Jemmy 發表在 痞客邦 留言(0) 人氣()

  拜筆記型電腦送修所賜,從NB的Vista改用乾淨PC的XP。也看到Maven在XP work時一些trouble如標題。還有一個情況是,我把在Vista的Maven專案移到XP來,原本Maven預設的remote repository是http://repo1.maven.org/maven2,連到這網址時會自動導到http://repo2.maven.org/maven2,而在Vista使用M2Eclipse,也會自動從repo1導到repo2,可是移到XP來卻不行,得手動建一個repository url指向repo2。直到我做了一個修改,同時把這兩個問題給解決了:

  在安裝Maven,需要在Path環境變數加載Maven home/bin目錄,而後來我google要解tools.jar解法,就把Java home/bin目錄加在Maven home/bin目錄之前,結果上述的問題就不再發生了。

Jemmy 發表在 痞客邦 留言(0) 人氣()

1 2