久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

使用Maven 2創(chuàng)建WebLogic Portal應(yīng)用程序

 larrin 2007-05-15
使用Maven 2創(chuàng)建WebLogic Portal應(yīng)用程序

時(shí)間:2007-04-10
作者:Gerald Nunn
瀏覽次數(shù): 211
本文關(guān)鍵字:mavenweblogic portalpomrepositoryantbuild systemsmaven 2dependenciesDev ToolboxBEA Workshop Product FamilyWebLogic PortalWebLogic ServerGerald Nunn門戶儲(chǔ)存庫(kù)構(gòu)建系統(tǒng)依賴項(xiàng)
文章工具
推薦給朋友 推薦給朋友
打印文章 打印文章

  本文旨在說(shuō)明如何使用Apache Maven 2項(xiàng)目來(lái)為BEA WebLogic Portal創(chuàng)建構(gòu)建系統(tǒng),。Maven是一種廣泛應(yīng)用于Apache項(xiàng)目的開(kāi)源構(gòu)建系統(tǒng),。它提供了許多Ant所不具備的功能,其中最為引人注目的當(dāng)屬依賴項(xiàng)管理功能,。關(guān)于Maven和Ant之間的爭(zhēng)論一直以來(lái)都很激烈,,本文不會(huì)探討這一問(wèn)題,而是重點(diǎn)介紹WebLogic Portal和Maven 2協(xié)同工作的問(wèn)題,。

  本文主要針對(duì)了解Maven 2以及熟悉其基本功能的用戶,。如果您之前沒(méi)有接觸過(guò)Maven,請(qǐng)首先閱讀免費(fèi)電子書(shū) Better Builds with Maven 2,。

安裝Maven

  首先,,從Maven網(wǎng)站http://maven.下載并安裝Maven 2。Maven程序可以安裝在任何文件系統(tǒng)中,,但是最好不要安裝在特定項(xiàng)目目錄下,,因?yàn)椴煌捻?xiàng)目可能都需要調(diào)用Maven程序。

  安裝好Maven后,,接下來(lái)就要?jiǎng)?chuàng)建命令文件以初始化Maven環(huán)境,。舉例如下;盡管在Linux或Solaris系統(tǒng)中創(chuàng)建同樣文件也很簡(jiǎn)單,,但該文件主要面向Windows系統(tǒng),。

set BEA_HOME=C:\bea92
set M2_HOME=C:\java\maven-2.0.4
set JAVA_HOME=%BEA_HOME%\jdk150_04
set path=%JAVA_HOME%\bin;%path%;%M2_HOME%\bin
mvn --version

  該腳本設(shè)置了某些需要應(yīng)用于構(gòu)建環(huán)境的環(huán)境變量。很明顯,,您應(yīng)該通過(guò)改變BEA_HOME,、JAVA_HOME和M2_HOME的變量值來(lái)反射特定環(huán)境,。為了確保腳本的正確性,在結(jié)束處運(yùn)行了Maven 版本命令,。這個(gè)命令顯示了當(dāng)前所使用的Maven的版本,。

創(chuàng)建Maven儲(chǔ)存庫(kù)

  Maven的一個(gè)關(guān)鍵功能就是依賴項(xiàng)管理。一個(gè)依賴于某種資源的構(gòu)件聲明了一個(gè)在Maven build文件中的依賴項(xiàng),,同時(shí)定義了依賴項(xiàng)的組,、名稱以及版本。在調(diào)用構(gòu)件時(shí),,Maven通過(guò)從庫(kù)中獲取必要的資源來(lái)處理資源依賴項(xiàng),。為了簡(jiǎn)化處理過(guò)程,Maven 在http://repo1./maven2 保留了一個(gè)大型儲(chǔ)存庫(kù),,其中包含了大多數(shù)像Spring這樣的流行開(kāi)源框架,。

  令人遺憾的是,為了避免侵犯版權(quán)和許可協(xié)議,,該儲(chǔ)存庫(kù)不能承載商業(yè)資源,,例如WebLogic庫(kù)等。因此,,接下來(lái)需要把WebLogic庫(kù)安裝在本地儲(chǔ)存庫(kù)中,。開(kāi)發(fā)者很可能在剛開(kāi)始的時(shí)候,會(huì)不假思索去嘗試使用系統(tǒng)級(jí)作用域來(lái)訪問(wèn)文件系統(tǒng)中的資源,,但是不久就會(huì)意識(shí)到在共享庫(kù)時(shí),,這樣做是徒勞的。另外需要強(qiáng)調(diào)的是,,這種做法與Maven的理念背道而馳,,所以最好不要嘗試這樣做。

  安裝單機(jī)版JAR

  在BEA主目錄下安裝單機(jī)版JAR很簡(jiǎn)單,。下面是從一段腳本中摘錄的樣本行,,它展示了如何通過(guò)使用Maven安裝插件和install-file goal來(lái)進(jìn)行安裝。出于簡(jiǎn)潔期間,,這里僅僅顯示了一行,;完整的腳本在示例代碼中。這段腳本假定為您正在使用WebLogic Portal v9.2,。如果您已經(jīng)安裝MP1或更新的版本,,建議在腳本中更新相應(yīng)的版本號(hào)。

mvn install:install-file
-Dfile=%BEA_HOME%\weblogic92\server\lib\weblogic.jar
-DgroupId=weblogic-server
-DartifactId=weblogic
-Dversion=9.2.0
-Dpackaging=jar
-DgeneratePom=true

  Maven的資源保存在一個(gè)儲(chǔ)存庫(kù)中,,這個(gè)儲(chǔ)存庫(kù)有組標(biāo)識(shí)符,、工件標(biāo)識(shí)符以及版本號(hào)。組標(biāo)識(shí)符用于組合類似的工件。在上面的例子中,,我們用 weblogic-server 來(lái)組合服務(wù)器特定的WebLogic 工件,。在下文中我們還會(huì)介紹weblogic-Portal和weblogic-common組,。工件標(biāo)識(shí)符專門用于標(biāo)識(shí)特定的工件,。為保證清晰明了,我們建議用JAR的名稱來(lái)命名工件標(biāo)識(shí)符,。

  要注意的是,,本文重點(diǎn)討論的是組和工件標(biāo)識(shí)符。開(kāi)發(fā)者可以隨意使用分層和命名約定,,但是任何變動(dòng)必須在本文論及到的所有構(gòu)建工件中反映出來(lái),。

  一旦WebLogic 資源放入庫(kù)后,在Maven項(xiàng)目目標(biāo)模型(POM) 中引用資源就變得很簡(jiǎn)單,。至于先前在儲(chǔ)存庫(kù)中安裝 weblogic.jar 的例子,,我們可以在pom.xml中創(chuàng)建一個(gè)依賴項(xiàng),如下所示:

<dependency>
<groupId>weblogic-server</groupId>
<artifactId>weblogic</artifactId>
<version>9.2.0</version>
<scope>provided</scope>
</dependency>

  要注意,,組和工件標(biāo)識(shí)符以及版本就是我們?cè)贛aven儲(chǔ)存庫(kù)中安裝weblogic.jar的內(nèi)容,。而假定作用域僅僅表明資源在運(yùn)行時(shí)提供,并且僅僅用于編譯目的,。

使用共享庫(kù)

  很遺憾,,我們現(xiàn)在面臨著一個(gè)更為艱難的挑戰(zhàn),就是要將WebLogic共享庫(kù)安裝在儲(chǔ)存庫(kù)中,。一個(gè)共享庫(kù)可以是一份Web或企業(yè)文檔,,其在運(yùn)行時(shí)內(nèi)與與應(yīng)用程序歸并。應(yīng)用程序在EAR 的weblogic-application.xml或WAR的weblogic.xml中聲明基于共享庫(kù)的依賴項(xiàng),。這些共享庫(kù)包含了諸如JAR的大量文件資源,。

  麻煩的是,Java編譯器javac不能從共享庫(kù)中提取JAR文件來(lái)完成編譯,。在WebLogic Workshop中有一個(gè)插件能夠?qū)⑺泄蚕韼?kù)擴(kuò)展到一個(gè)插件目錄下,,這樣JAR文件就能被編譯器識(shí)別處理。

  在Maven中,,要訪問(wèn)共享庫(kù),,我們需要將每個(gè)共享庫(kù)中的工件 安裝到儲(chǔ)存庫(kù)中。為了實(shí)現(xiàn)這個(gè)目標(biāo),,我在本文中編寫了一個(gè)命名為maven-weblogic-library-plugin 的maven小插件,。除了在儲(chǔ)存庫(kù)中安裝一個(gè)或多個(gè)共享庫(kù)以外,這個(gè)插件和Maven中安裝的插件功能類似,。下例說(shuō)明了它的執(zhí)行方式:

mvn weblogic-maven:maven-shared-library-plugin:install-library
-DgroupId=weblogic-portal
-Ddirectory=%BEA_HOME%/weblogic92/portal/lib/modules
-DdefaultVersion=9.2.0

  這個(gè)插件既可以通過(guò)-Dlibrary指令安裝一個(gè)單獨(dú)的共享庫(kù),,也能將所有的庫(kù)安裝在指定的目錄下,就像上面顯示的一樣。以上指定的groupId是一個(gè)根組,,共享庫(kù)就安裝在里面,。插件程序能自動(dòng)為文件庫(kù)工件創(chuàng)建一個(gè)二級(jí)組,而且?guī)斓墓ぜc庫(kù)本身同名,。在這個(gè)二級(jí)組中,,共享庫(kù)中的每一個(gè)工件將和庫(kù)本身的副本一起安裝。最后,,創(chuàng)建一個(gè)母項(xiàng)目目標(biāo)模型(POM)工件,以便創(chuàng)建庫(kù)中所有工件的依賴項(xiàng)。這樣在配置build時(shí),,就減少了為每一個(gè)工件創(chuàng)建依賴項(xiàng)的工作量。

版本控制

  maven-weblogic-library-plugin插件允許開(kāi)發(fā)人員指定共享文件庫(kù)的默認(rèn)版本。當(dāng)共享庫(kù)名稱不包含版本號(hào)時(shí),,我們就可以用插件來(lái)指定版本。如果安裝了一個(gè)例如beehive-controls-1.0.ear的共享庫(kù),版本號(hào)就可以從名稱中提?。ㄈ绫纠袨?.0),,而不是來(lái)自于默認(rèn)版本號(hào),。

創(chuàng)建 maven-weblogic-library-plugin 插件

  可以進(jìn)入示例代碼中的/maven/maven-weblogic-library-plugin文件夾并執(zhí)行mvn:install之前的mvn:package命令來(lái)創(chuàng)建新的插件文件,。切記一定要先用前文論述的內(nèi)嵌的maven.bat文件來(lái)初始化Maven環(huán)境。

安裝共享庫(kù)

  有了插件文件,,下一步就要將所有的共享庫(kù)安裝在儲(chǔ)存庫(kù)中。示例代碼中有一段腳本install-weblogic-libraries.bat,,它向我們說(shuō)明了應(yīng)該如何實(shí)現(xiàn)這一任務(wù),。

  正如先前論述的一樣,,一旦共享庫(kù)安裝完畢,,我們就可以通過(guò)已由插件創(chuàng)建好的母POM將依賴項(xiàng)添加進(jìn)來(lái),。比方說(shuō)要聲明一個(gè)p13n-app-lib.ear 共享庫(kù)中的依賴項(xiàng),我們就可以在pom.xml中使用下述依賴項(xiàng)聲明:

<dependency>
<groupId>weblogic-common.p13n-app-lib</groupId>
<artifactId>p13n-app-lib-parent</artifactId>
<version>9.2.0</version>
<type>pom</type>
<scope>provided</scope>
</dependency>

創(chuàng)建項(xiàng)目目標(biāo)模型

  準(zhǔn)備工作完成后,,就可以創(chuàng)建POM文件并且應(yīng)用Maven來(lái)構(gòu)建我們想要的門戶應(yīng)用程序了,。但是首先,關(guān)于WebLogic 工作平臺(tái)下門戶項(xiàng)目架構(gòu)還要強(qiáng)調(diào)一點(diǎn)是,,Maven是一款基于慣例優(yōu)先理念的軟件工具,;這意味著它認(rèn)為一切都是按照某種方式而布置,。至于門戶項(xiàng)目結(jié)構(gòu),Maven具有一種針對(duì)Java 和 Web項(xiàng)目的結(jié)構(gòu),,建議盡可能使用這種結(jié)構(gòu),。

  使用Maven的結(jié)構(gòu)很方便;創(chuàng)建WebLogic門戶WAR時(shí),,只要指定下圖所示的資源路徑和Web內(nèi)容目錄即可,。請(qǐng)注意這是建議結(jié)構(gòu),,如果您現(xiàn)在的項(xiàng)目正在使用默認(rèn)路徑,,您仍然可以配置Maven來(lái)創(chuàng)建該項(xiàng)目,。但是,,還需要在POM中進(jìn)行額外的配置以傳達(dá)Maven路徑的變動(dòng),。

使用Maven 2創(chuàng)建WebLogic Portal應(yīng)用程序圖-1

  圖1.. Eclipse New Portal Web Project對(duì)話框

  至于WebLogic門戶EAR,默認(rèn)結(jié)構(gòu)可以在Maven中正常運(yùn)行,,無(wú)需任何變動(dòng)。

  最后,,關(guān)于項(xiàng)目結(jié)構(gòu)我們強(qiáng)烈建議創(chuàng)建一個(gè)新的項(xiàng)目并且將該項(xiàng)目的源代碼放在工作空間以外的單獨(dú)目錄下,。由于無(wú)需檢查多余的工作空間工件,,這將使得源代碼控制管理更為容易。下方的樣本結(jié)構(gòu)圖可說(shuō)明這一點(diǎn):

使用Maven 2創(chuàng)建WebLogic Portal應(yīng)用程序圖-2

  圖2:項(xiàng)目結(jié)構(gòu)示例.

  現(xiàn)在我們就可以為應(yīng)用程序的各個(gè)部分創(chuàng)建POM文件了,。POM文件總共有三種,,在下文我們會(huì)對(duì)之進(jìn)行論述,。請(qǐng)記住示例代碼中包含每個(gè)POM的完整版本;這樣我們只需在下文重點(diǎn)講述每個(gè)POM的主要方面,,特別是與創(chuàng)建WebLogic 門戶應(yīng)用程序有關(guān)的方面,。在Maven站點(diǎn)中有很多關(guān)于如何創(chuàng)建和使用POM的文章,這里就不再贅述了,。

父POM

  第一個(gè)要?jiǎng)?chuàng)建的POM是父POM,。有了父POM,我們既可以創(chuàng)建EAR,,也可以創(chuàng)建WAR作為一個(gè)單元,,同時(shí)允許集中設(shè)置。在Maven中,,每一個(gè)工件,,比如EAR和WAR,是單獨(dú)的實(shí)體,。您可以將它構(gòu)建并部署為一個(gè)單元,。

  在這個(gè)父POM中,我們?yōu)閜ortalEAR和portalWAR項(xiàng)目聲明模塊,。如下所示:

<modules>
<module>portalEAR</module>
<module>portalWAR</module>
</modules>

  這項(xiàng)聲明使我們能夠同時(shí)創(chuàng)建兩個(gè)項(xiàng)目,。這樣做只是為了方便,而并非是必需的,,因?yàn)閜ortalEAR在POM中也聲明了一個(gè)基于portalWAR的依賴項(xiàng),。因此,如果之前沒(méi)有創(chuàng)建war文件,,Maven會(huì)自動(dòng)創(chuàng)建,。

  接下來(lái),就要設(shè)置maven-compiler-plug-in以使 target JDK 5為編譯做好準(zhǔn)備,。如下所示:

<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.5</source>
<target>1.5</target>
</configuration>
</plugin>

Web應(yīng)用程序POM

  Web應(yīng)用程序POM可用來(lái)創(chuàng)建以portalWAR項(xiàng)目為代表的WAR,。總的來(lái)說(shuō),,創(chuàng)建WebLogic portal WAR與創(chuàng)建一個(gè)標(biāo)準(zhǔn)的Java EE WAR沒(méi)什么兩樣,。但是,假若WebLogic門戶應(yīng)用程序使用頗具代表性的頁(yè)面流和Beehive注釋,,我們當(dāng)然要做到支持注釋,。

  JDK包含了一個(gè)注釋處理工具(APT),而Maven 2中的maven-apt-plugin插件也配有這樣的工具,,可以在 這里 找到它,。在撰寫本文時(shí),maven-apt-plugin插件中還存在一些小問(wèn)題,,導(dǎo)致其不能在WebLogic 門戶應(yīng)用程序中順暢運(yùn)行,。我已經(jīng)將糾正這些缺陷的補(bǔ)丁放進(jìn)了示例代碼中,,只需在maven-apt-plugin目錄下運(yùn)行mvn:package和mvn:install命令既可安裝。為了避免版本沖突,,用-BEA給該版本作了標(biāo)記,。

  出于本文發(fā)布時(shí)間的原因,maven-apt-plugin 已經(jīng)得到了糾正并且對(duì)發(fā)現(xiàn)的缺陷也進(jìn)行了修改,。這樣就可以選擇使用本文中的插件或是maven-apt-plugin的快照版本,。如果您在使用maven-apt-plugin的快照版本,那就不再需要sourcePath配置選項(xiàng),,可以從portalWAR 項(xiàng)目中的pom.xml中刪除,。

  用Maven來(lái)處理注釋很簡(jiǎn)單,POM中的該部分功能具體如下:

<plugin>
<groupId>org.apache.myfaces.tobago</groupId>
<artifactId>maven-apt-plugin</artifactId>
<version>1.0.10-BEA</version>
<executions>
<execution>
<phase>generate-sources</phase>
<goals>
<goal>execute</goal>
</goals>
<configuration>
<generated>.apt_generated</generated>
<aptOptions>
x=3,
web.content.root=${basedir}/src/main/webapp
</aptOptions>
<target>1.5</target>
<nocompile>true</nocompile>
<showWarnings>true</showWarnings>
<verbose>false</verbose>
<fork>false</fork>
<sourcePath>${basedir}/src/main/java</sourcePath>
</configuration>
</execution>
</executions>
</plugin>

  其中最關(guān)鍵的一點(diǎn)就是將web.content.root屬性指向Web內(nèi)容源目錄,,因?yàn)锽eehive注釋處理器需要調(diào)用該參數(shù),。另一個(gè)重要參數(shù)是sourcePath。因?yàn)锳PT工具需要調(diào)用sourcePath,,該參數(shù)被添加到了打過(guò)補(bǔ)丁的maven-apt-plugin插件,。

  最后一個(gè)關(guān)鍵點(diǎn)就是各種WebLogic Server和WebLogic Portal庫(kù)以及共享庫(kù)的依賴項(xiàng)。它們?cè)赑OM的最底層,,通過(guò)下載示例代碼可以進(jìn)行查看,。

企業(yè)級(jí)應(yīng)用程序POM

  portalEAR項(xiàng)目中的POM大致上是一個(gè)標(biāo)準(zhǔn)的POM,可以被任何Java EE應(yīng)用程序調(diào)用,。配置maven-ear-plugin如下:

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-ear-plugin</artifactId>
<configuration>
<displayName>
Portal Maven2 Sample Application
</displayName>
<description>
Portal Maven2 Sample Application
</description>
<version>1.4</version>
<earSourceDirectory>EarContent</earSourceDirectory>
<earSourceExcludes>**/application.xml</earSourceExcludes>
<modules>
<webModule>
<groupId>portal-maven2-sample</groupId>
<artifactId>portalWAR</artifactId>
<contextRoot>/portalWAR</contextRoot>
</webModule>
</modules>
</configuration>
</plugin>

  這里唯一要強(qiáng)調(diào)的一點(diǎn)是,,這里不包含application.xml文件,我們需要讓Maven生成該文件,。這樣做很有必要,因?yàn)橐勒誐aven的規(guī)則,,在生成一個(gè)帶附加版本號(hào)的portalWAR的同時(shí),,Maven還將生成application.xml以確保模塊名稱是正確的。

創(chuàng)建應(yīng)用程序

  既然現(xiàn)在一切都準(zhǔn)備就緒,,創(chuàng)建門戶應(yīng)用程序就變得易如反掌,,只要在/應(yīng)用程序目錄下運(yùn)行mvn:package命令即可。如果您查看portalWAR和portalEAR文件夾下的目標(biāo)目錄,,就可以分別看到WAR和EAR的副本,。

示例代碼

  本文提供了一份文檔,該文檔包含了一個(gè)示例WebLogic門戶應(yīng)用程序,。所有使用Maven 2構(gòu)建應(yīng)用程序所需的資源都包含在里面,。要使用該示例,只需打開(kāi)該文檔包并確保路徑被保留,,然后修改maven/scripts/maven.bat文件使之指向BEA以及Maven主目錄所在的位置即可,。

  教學(xué)示例代碼(zip)

概述

  只需付出一點(diǎn)努力,,用戶就可以使用Maven 2來(lái)創(chuàng)建WebLogic門戶應(yīng)用程序。Maven 2 中大量的功能使之成為眾多機(jī)構(gòu)的選擇,。相信本文能夠幫助眾多用戶來(lái)實(shí)現(xiàn)Maven 2和WebLogic的集成,。

  資源

 作者簡(jiǎn)介
Gerald Nunn 是BEA Systems Professional Services的業(yè)務(wù)首席顧問(wèn)。他已經(jīng)結(jié)婚了,,有一個(gè)4歲的兒子,,生活在加拿大多倫多北部的紐馬基特小鎮(zhèn)。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購(gòu)買等信息,,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請(qǐng)點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多