SOA-расширение для Ant, Maven и Jdeveloper - PullRequest
2 голосов
/ 12 ноября 2010

Мы находимся в середине большого проекта / программы Java EE.До этого момента мы использовали Eclipse и Maven для нашей разработки.Сервер приложений, на который мы нацеливаемся, - WebLogic (Oracle, в наши дни).
Было решено, что мы собираемся начать использовать Oracle Business Rules (часть Oracle SOA Suite 11g).Разработка для Soa Suite ограничена JDeveloper.У него есть несколько хороших ant-сценариев для создания и развертывания SOA-композитов (именно так правила упаковываются и разворачиваются).
Мне было поручено заставить эти ant-сценарии запускаться из maven с помощью antrun, и я получил некоторые изКстати, но не все ...
Мой главный вопрос: кому-нибудь удалось это сделать?(Кто-нибудь даже пытался ..? Не могу найти что-нибудь, гуглявшее ...)

Ниже приведена соответствующая часть моего pom:

<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 запускается из каталога проектавне дерева Oracle / Middleware.Это почти работает ...
На самом деле это дает следующий результат:

[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)
...

Фраза "File som ska laddas oramds: /soa/shared/rules/BpelProcess.xsd finns inte."означает, что «файл, который вы пытаетесь загрузить, не существует» (почему мой клиент настаивает на установке шведской языковой версии Windows, а не международной?).
ant-sca-compile.xml содержит многочисленные операторы импорта, подобные этому:

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

Я предполагаю, что oramds.jar необходим для обработки URL-адресов oramds, которые используются в WSDS / XSD: s, генерируемых JDeveloper.

Любая помощь приветствуется ...

Ответы [ 3 ]

2 голосов
/ 22 декабря 2011

ОК, так что в конце концов у меня появилась возможность сесть с консультантом 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.serverURL, weblogic.user и weblogic.password должны быть установлены в соответствии с вашей средой (я использую профили для локального / dev / tst / etc ...).

Кроме этого, он работает как шарм ...

1 голос
/ 20 сентября 2011

Я не использовал сценарии сборки Maven + Oracle SOA, но обычно при использовании любого из инструментов развертывания Oracle (ADF, SOA и т. Д.) Вам потребуется либо Oracle SOA Home, либо JDev home (с расширением SCA). ) на той же машине, на которой выполняется сборка. Вам нужно будет правильно установить переменные среды Ant, например, oracle.home и common.components.home и т. д.

0 голосов
/ 24 февраля 2013

Используйте 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>
...