2010-11-12 50 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>