2010-11-12 49 views
2

我們正處於大型Java EE項目/程序的中間。到目前爲止,我們一直在使用Eclipse和Maven進行開發。我們面向的應用服務器是WebLogic(現在的Oracle)。
我們已經決定開始使用Oracle業務規則(Oracle SOA Suite 11g的一部分)。 Soa Suite的開發僅限於JDeveloper。它有一些很好的ant腳本來構建和部署SOA Composites(這是如何打包和部署規則)。
我的任務是讓這些ant腳本使用antrun從maven運行,並且我已經獲得了一些方法,但並非全部...
我的主要問題是:有沒有人成功做到這一點? (?有沒有人甚至企圖..真的不能找到任何谷歌搜索......)Ant,Maven和Jdeveloper SOA擴展

下面是我的聚甲醛的相關部分:

<plugin> 
    <artifactId>maven-antrun-plugin</artifactId> 
    <version>1.6</version> 
    <executions> 
     <execution> 
     <phase>compile</phase> 
     <configuration> 
      <target> 
      <property name="oracle.home" value="C:\Oracle\Middleware\jdeveloper"/> 
      <property name="oracle.soa.mgmt.home" value="C:\Oracle\Middleware\jdeveloper"/> 
      <property name="common.components.home" value="C:\Oracle\Middleware\oracle_common"/> 
      <property name="env.JAVA_HOME" value="${java.home}"/> 
      <property name="env.PWD" value="."/> 
      <ant antfile="${oracle.home}\bin\ant-sca-compile.xml"/> 
      </target> 
     </configuration> 
     <goals> 
      <goal>run</goal> 
     </goals> 
     </execution> 
    </executions> 
    </plugin> 
</plugins> 

Maven是從項目目錄運行,甲骨文外/中間件樹。這幾乎工程...
實際上,它提供了以下結果:

[INFO] Scanning for projects... 
[INFO] ------------------------------------------------------------------------ 
[INFO] Building BilagorReglerSCA 
[INFO] task-segment: [compile] 
[INFO] ------------------------------------------------------------------------ 
[INFO] [resources:resources] 
[INFO] Using 'UTF-8' encoding to copy filtered resources. 
[INFO] Copying 0 resource 
[INFO] [compiler:compile] 
[INFO] Nothing to compile - all classes are up to date 
[INFO] [antrun:run {execution: default}] 
[INFO] Executing tasks 

main: 

scac: 
Validating composite "C:\JDeveloper\mywork\BilagorReglerSCA\BilagorRegler\composite.xml" 
    [scac] oracle.fabric.common.wsdl.XSDException: Error loading schema from file:/C:/JDeveloper/mywork/BilagorReglerSCA/BilagorRegler/BilagorRegler_DecisionService.wsdl [Cause=Error in getting XML input stream: oramds:/soa/shared/rules/BpelProcess.xsd: oracle.mds.exception.MDSException: MDS-00054: Filen som ska laddas oramds:/soa/shared/rules/BpelProcess.xsd finns inte.] 
    [scac]  at oracle.fabric.common.wsdl.SchemaBuilder.loadEmbeddedSchemas(SchemaBuilder.java:496) 
    [scac]  at oracle.fabric.common.wsdl.SchemaBuilder.loadSchemasFromWSDL(SchemaBuilder.java:365) 
... 

短語 「Filen SOM斯卡laddas oramds:/soa/shared/rules/BpelProcess.xsd芬蘭人INTE。」意味着「您要加載的文件不存在」(爲什麼我的客戶堅持要安裝瑞典語Windows版本,而不是國際版?)。
螞蟻SCA-compile.xml包含類似於此衆多的import語句:

 <fileset dir="${common.components.home}/modules"> 
     ... 
     <include name="oracle.mds_11.1.1/oramds.jar"/> 

我認爲oramds.jar需要處理oramds-URL:s,這是在WSD的/ XSD使用方法:S的JDeveloper產生。

任何幫助表示讚賞...

+0

錯字 - crowne 2010-11-12 10:09:15

+0

也是一個較少有害和更幽默的弗洛伊德錯字 - 實際上,它給出了以下reslut:...其實,它給出了以下結果: – crowne 2010-11-12 10:24:36

+0

有趣的是,JDeveloper將它作爲正確的pom.xml傳遞給它,突出顯示和all - didn不解決問題,但仍然得到第二個構建錯誤... – Larsing 2010-11-16 10:11:12

回答

1

我沒有用任何使用了Oracle部署工具(ADF,SOA等)當Maven +甲骨文SOA構建腳本,但通常你需要要麼一個Oracle SOA Home或JDev主頁(使用SCA擴展)與運行構建的計算機相同。您需要正確設置Ant環境變量,例如oracle.home和common.components.home等

2

好的,所以我最終有機會和甲骨文的Oracle顧問坐下來,讓這個工作。

這是我們想出了:

<properties> 
    <oracle.fmw.soa.home>C:/Oracle/Middleware</oracle.fmw.soa.home> 
    <!-- this is relative reference to JDK/Jrockit from ant-sca-compile|*.xml. For jdev it is ../../, for Soa Suite: TBD. --> 
    <env.JAVA_HOME>../../jdk160_24</env.JAVA_HOME> 
    <!-- For real server with Soa Suite installed use: Oracle_SOA1, for devenv use jdeveloper --> 
    <oracle.fmw.productName>jdeveloper</oracle.fmw.productName> 
    <antOutputDir>deploy</antOutputDir> 
    <mvnOutputDir>target</mvnOutputDir> 
</properties> 
<build> 
    <plugins> 
     <plugin> 
      <artifactId>maven-antrun-plugin</artifactId> 
      <version>1.6</version> 
      <executions> 
       <execution> 
        <id>sca-compile</id> 
        <phase>compile</phase> 
        <goals> 
         <goal>run</goal> 
        </goals> 
        <configuration> 
         <target> 
          <property name="scac.input" value="${basedir}/composite.xml" /> 
          <property name="scac.application.home" value="${basedir}/.." /> 
          <property name="oracle.home" value="${oracle.fmw.soa.home}/${oracle.fmw.productName}" /> 
          <ant 
           antfile="${oracle.fmw.soa.home}/${oracle.fmw.productName}/bin/ant-sca-compile.xml" 
           dir="${oracle.fmw.soa.home}/${oracle.fmw.productName}/bin/" 
           target="scac" /> 
         </target> 
        </configuration> 
       </execution> 
       <execution> 
        <id>sca-package</id> 
        <phase>package</phase> 
        <goals> 
         <goal>run</goal> 
        </goals> 
        <configuration> 
         <target name="package"> 
          <property name="build.compiler" value="extJavac" /> 
          <property name="compositeName" value="${project.artifactId}" /> 
          <property name="compositeDir" value="${basedir}" /> 
          <property name="revision" value="${project.version}" /> 
          <property name="scac.application.home" value="${basedir}/.." /> 
          <property name="oracle.home" value="${oracle.fmw.soa.home}/${oracle.fmw.productName}" /> 
          <property name="antOutputFile" value="sca_${project.artifactId}_rev${project.version}.jar" /> 
          <property name="mvnOutputFile" value="${project.artifactId}-${project.version}.jar" /> 
          <ant 
           antfile="${oracle.fmw.soa.home}/${oracle.fmw.productName}/bin/ant-sca-package.xml" 
           dir="${oracle.fmw.soa.home}/${oracle.fmw.productName}/bin" 
           target="package" /> 
          <copy tofile="${mvnOutputDir}/${mvnOutputFile}" file="${antOutputDir}/${antOutputFile}" /> 
         </target> 
        </configuration> 
       </execution> 
       <execution> 
        <id>sca-deploy</id> 
        <phase>deploy</phase> 
        <goals> 
         <goal>run</goal> 
        </goals> 
        <configuration> 
         <target name="deploy"> 
          <property name="serverURL" value="${weblogic.serverURL}" /> 
          <property name="user" value="${weblogic.user}" /> 
          <property name="password" value="${weblogic.password}" /> 
          <property name="sarLocation" value="${basedir}/deploy/sca_${project.artifactId}_rev${project.version}.jar" /> 
          <property name="overwrite" value="true" /> 
          <property name="forceDefault" value="true" /> 
          <property name="partition" value="default" /> 
          <property name="oracle.home" value="${oracle.fmw.soa.home}/${oracle.fmw.productName}" /> 
          <ant 
           antfile="${oracle.fmw.soa.home}/${oracle.fmw.productName}/bin/ant-sca-deploy.xml" 
           dir="${oracle.fmw.soa.home}/${oracle.fmw.productName}/bin" 
           target="deploy" /> 
         </target> 
        </configuration> 
       </execution> 
       <execution> 
        <id>sca-test</id> 
        <phase>deploy</phase> 
        <goals> 
         <goal>run</goal> 
        </goals> 
        <configuration> 
         <target> 
          <property name="jndi.properties.input" value="${basedir}/sca-test.jndi.properties" /> 
          <property name="scatest.input" value="scatestinput" /> 
          <property name="scatest.format" value="junit" /> 
          <property name="scatest.result" value="reports" /> 
          <property name="oracle.home" value="${oracle.fmw.soa.home}/${oracle.fmw.productName}" /> 
          <ant 
           antfile="${oracle.fmw.soa.home}/${oracle.fmw.productName}/bin/ant-sca-test.xml" 
           dir="${oracle.fmw.soa.home}/${oracle.fmw.productName}/bin" 
           target="test" /> 
         </target> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 
    </plugins> 
</build> 

注意,這兩個不同組的屬性和參數螞蟻標籤比我最初是在嘗試的。

要在CI服務器上運行,您顯然需要本地安裝JDeveloper或SOA Suite。需要將weblogic.serverURLweblogic.userweblogic.password設置爲您對應的環境(我使用本地/ dev/tst/etc的配置文件...)。

除此之外,它就像一個魅力...

0

使用ANT-SCA-package.xml中(不ANT-SCA-compile.xml):

<ant antfile="ant-sca-package.xml" dir="${env.BEA_HOME}/jdeveloper/bin"> 
    <property name="compositeDir" value="@{compositeDir}" /> 
    <property name="compositeName" value="@{compositeName}" /> 
    <property name="revision" value="${deploy.revision}" /> 
</ant>