2

我们正处于一个大型 Java EE 项目/程序的中间。到目前为止,我们一直在使用 Eclipse 和 Maven 进行开发。我们的目标应用服务器是 WebLogic(现在是 Oracle)。
我们已经决定开始使用 Oracle 业务规则(Oracle SOA Suite 11g 的一部分)。Soa Suite 的开发仅限于 JDeveloper。它有一些很好的 ant 脚本来构建和部署 SOA 组合(这是打包和部署规则的方式)。
我的任务是让这些 ant 脚本使用 antrun 从 maven 运行,我已经取得了一些进展,但不是全部......
我的主要问题是:有没有人成功地做到了这一点?(有没有人尝试过......?真的找不到任何谷歌搜索......)

以下是我的 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/中间件树之外。这几乎可以工作......
实际上,它给出了以下结果:

[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 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 来处理 oramds-URL:s,它们在 JDeveloper 生成的 WSDS/XSD:s 中使用。

任何帮助表示赞赏...

4

3 回答 3

2

好的,所以我最终有机会与一位王牌甲骨文顾问坐下来,让这个工作发挥作用。

这是我们想出的:

<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>

请注意,与我最初尝试的不同,ant-tag 的属性和参数集都不同。

要在 CI 服务器上运行,您显然需要在本地安装 JDeveloper 或 SOA Suite。weblogic.serverURL,weblogic.user并且weblogic.password需要设置成你相应的环境(我使用本地/dev/tst/etc的配置文件...)。

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

于 2011-12-22T13:54:23.577 回答
1

我没有使用过 Maven + Oracle SOA 构建脚本,但通常在使用任何 Oracle 部署工具(ADF、SOA 等)时,您需要在运行构建的同一台机器。您需要正确设置 Ant 环境变量,例如 oracle.home 和 common.components.home 等

于 2011-09-20T08:12:35.933 回答
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>
于 2013-02-24T10:37:45.567 回答