使用 Maven 将 OSB 项目部署到服务器

Posted

技术标签:

【中文标题】使用 Maven 将 OSB 项目部署到服务器【英文标题】:OSB project deployment to server with Maven 【发布时间】:2019-08-02 13:31:48 【问题描述】:

这是我第一次使用 Maven。我正在尝试使用 Maven 将 OSB 项目打包并部署到 weblogic 服务器。但我面临问题。 以下是完成的步骤:

    使用代理设置和服务器设置更新了 settings.xml。

    我已使用以下命令设置 OSB (12.2.1.3) maven 插件:

mvn install:install-file -DpomFile=oracle-maven-sync-12.2.1.pom -Dfile=oracle-maven-sync-12.2.1.jar

mvn com.oracle.maven:oracle-maven-sync:push -DoracleHome=ORACLE_HOME

    我在 jdeveloper 中使用 OSB 项目(用于打印“Hello World”的项目)创建了一个简单的 OSB 应用程序。

    我用属性标签修改了项目 pom.xml 以部署到服务器。请在项目 pom.xml 下方找到:

    <project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
    http://maven.apache.org/maven-v4_0_0.xsd"
    xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
        <modelVersion>4.0.0</modelVersion>
        <parent>
            <groupId>com.oracle.servicebus</groupId>
            <artifactId>sbar-project-common</artifactId>
            <version>12.2.1-3-0</version>
        </parent>
        <groupId>MavenTest</groupId>
        <artifactId>MavenTest1</artifactId>
        <version>1.0-SNAPSHOT</version>
        <packaging>sbar</packaging>
        <build>
            <plugins>
                <plugin>
                    <groupId>com.oracle.adf.plugin</groupId>
                    <artifactId>ojdeploy</artifactId>
                    <version>12.2.1-3-0</version>
                    <configuration>
                        <ojdeploy>$oracleHome/jdeveloper/jdev/bin/ojdeploy.exe</ojdeploy>
                        <workspace>$basedir/../MavenTest.jws</workspace>
                        <project>MavenTest1</project>
                        <profile>MavenTest1</profile>
                        <outputfile>$project.build.directory/$project.build.finalName.$project.packaging</outputfile>
                    </configuration>
                    <executions>
                        <execution>
                            <phase>package</phase>
                            <goals>
                                <goal>deploy</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </build>
        <properties>
            <oracleUsername>weblogicUN</oracleUsername>
            <oraclePassword>weblogicPW</oraclePassword>
            <oracleHome>Oracle_HomePath</oracleHome>
            <oracleServerUrl>http://localhost:7001</oracleServerUrl>
        </properties>
    </project>
    

    然后我在项目 pom 文件所在的项目目录下的命令行中运行了以下命令:

mvn -e -X 包

但我收到以下错误:

主要错误: [错误] 未能执行目标 com.oracle.servicebus.plugin:oracle-servicebus-plugin:12.2.1-3-0:package 项目 MavenTest1 上的(默认包):创建服务总线 配置存档失败。查看构建目录中的日志 更多信息。 -> [帮助 1] org.apache.maven.lifecycle.LifecycleExecutionException: 失败 执行目标 com.oracle.servicebus.plugin:oracle-servicebus-plugin:12.2.1-3-0:package 项目 MavenTest1 上的(默认包):创建服务总线 配置存档失败。查看构建目录中的日志 更多信息。

全栈:

[信息] 构建失败 [信息] -------------------------------------------------- ---------------------- [INFO] 总时间:31.835 s [INFO] 完成时间: 2019-03-12T10:05:17+05:30 [信息] -------------------------------------------------- ---------------------- [错误] 未能执行目标 com.oracle.servicebus.plugin:oracle-servicebus-plugin:12.2.1-3-0:package 项目 MavenTest1 上的(默认包):创建服务总线 配置存档失败。查看构建目录中的日志 更多信息。 -> [帮助 1] org.apache.maven.lifecycle.LifecycleExecutionException: 失败 执行目标 com.oracle.servicebus.plugin:oracle-servicebus-plugin:12.2.1-3-0:package 项目 MavenTest1 上的(默认包):创建服务总线 配置存档失败。查看构建目录中的日志 更多信息。 在 org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:213) 在 org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:154) 在 org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:146) 在 org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117) 在 org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81) 在 org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56) 在 org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128) 在 org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:305) 在 org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192) 在 org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105) 在 org.apache.maven.cli.MavenCli.execute (MavenCli.java:954) 在 org.apache.maven.cli.MavenCli.doMain (MavenCli.java:288) 在 org.apache.maven.cli.MavenCli.main (MavenCli.java:192) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法) 在 sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke (Method.java:498) 在 org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (启动器.java:289) 在 org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:229) 在 org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:415) 在 org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:356) 引起: org.apache.maven.plugin.MojoFailureException:创建服务 总线配置存档失败。查看构建目录中的日志 了解更多信息。 在 oracle.sb.maven.plugin.PackageMojo.execute (PackageMojo.java:102) 在 org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:137) 在 org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:208) 在 org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:154) 在 org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:146) 在 org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117) 在 org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81) 在 org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56) 在 org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128) 在 org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:305) 在 org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192) 在 org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105) 在 org.apache.maven.cli.MavenCli.execute (MavenCli.java:954) 在 org.apache.maven.cli.MavenCli.doMain (MavenCli.java:288) 在 org.apache.maven.cli.MavenCli.main (MavenCli.java:192) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法) 在 sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke (Method.java:498) 在 org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (启动器.java:289) 在 org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:229) 在 org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (启动器.java:415) 在 org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:356) [ERROR] [ERROR] [ERROR] 有关更多信息 错误和可能的解决方案,请阅读以下文章: [错误] [帮助 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException

    此外,在 MavenTest1.data\maven\configjar 中,它正在记录为 C:\Users\userId\AppData\Local\Microsoft\WindowsApps 此时出乎意料。

    我已经在 USER variables 中设置了 M2_HOME=C:\Oracle\Middleware\Oracle_Home\oracle_common\modules\org.apache.maven_3.2.5 , ORACLE_HOME=C:\Oracle\Middleware \Oracle_Home, M2=%M2_HOME%\bin , PATH=%path%;%M2%

系统变量中 JAVA_HOME=C:\Program Files\Java\jdk1.8.0_202\ , ORACLE_HOME=C:\Oracle\Middleware\Oracle_Home , 路径=%JAVA_HOME%\bin , %ORACLE_HOME%\oracle_common\bin

我哪里出错了?

【问题讨论】:

你能检查一下错误信息中提到的构建目录中的日志吗? 【参考方案1】:

按照以下步骤解决了该问题,针对 OSB 提供的带有本地存储库的 Maven 插件: • 在用户变量中:

M2_HOME=C:\Oracle\Middleware\Oracle_Home\oracle_common\modules\org.apache.maven_3.2.5 M2=%M2_HOME%\bin PATH=%path%;%M2%

• 在系统变量中:

JAVA_HOME=C:\PROGRA~1\Java\jdk1.8.0_202\ ORACLE_HOME=C:\Oracle\Middleware\Oracle_Home 路径=%JAVA_HOME%\bin

• 在 C:\Users\.m2\ 的 settings.xml 中,

<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.1.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.1.0 http://maven.apache.org/xsd/settings-1.1.0.xsd">
  <localRepository>C:\Users\(USERId)\.m2\repository</localRepository>
  <interactiveMode>true</interactiveMode>
  <usePluginRegistry>false</usePluginRegistry>
  <offline />
  <proxies>
    <proxy>
      <host>HostIP</host>
      <nonProxyHosts></nonProxyHosts>
    </proxy>
  </proxies>
</settings>

• 转到 C:\Oracle\Middleware\Oracle_Home\oracle_common\plugins\maven\com\oracle\maven\oracle-maven-sync\12.2.1 并运行以下命令:

    mvn install:install-file -DpomFile=oracle-maven-sync-12.2.1.pom -Dfile=oracle-maven-sync-12.2.1.jar [安装 Maven 同步插件] mvn com.oracle.maven:oracle-maven-sync:push -DoracleHome=C:\Oracle\Middleware\Oracle_Home [将 Oracle Service Bus 开发 Maven 插件植入 Maven 存储库] mvn help:describe -DgroupId=com.oracle.servicebus.plugin -DartifactId=oracle-servicebus-plugin -Dversion=12.2.1-3-0 [查看是否安装成功]

通过执行第三个命令。它应该给出以下输出:

名称:Oracle Service Bus - 插件描述:Oracle Service Bus 开发 Maven 插件提供特定于 服务总线项目和应用程序的要求。你可以使用它 执行打包服务总线项目或资源等任务 并将包部署到正在运行的服务器。组号: com.oracle.servicebus.plugin 工件 ID:oracle-servicebus-plugin 版本:12.2.1-3-0 目标前缀:servicebus

这个插件有 2 个目标: servicebus:deploy 描述:部署 目标将服务总线项目部署到正在运行的服务器。这个目标 支持服务总线部署格式 SBAR。它不需要 本地服务器安装。默认情况下,部署项目不会 对环境值应用任何更新。如果你想更新 环境值,您可以使用新的 环境值并在运行时指定该配置文件 部署。

servicebus:package 描述:包目标创建一个 来自与 POM 文件关联的资源的配置 JAR 文件, 并将资源打包到特定于服务总线的存档文件中 称为 .sbar 文件。默认情况下,Maven 插件假定 被打包的资源是项目资源,但是一个服务总线 应用程序还可以包含系统资源,这些资源在 项目。系统资源的打包方式与项目不同 资源,所以在打包系统资源时,需要设置 系统标志为真。

安装成功

要使用 OSB 项目进行测试,请创建一个简单的 OSB 项目,例如 hello world。从命令提示符转到应用程序目录并运行以下命令以构建项目并将其部署到 osb 服务器:

mvn install -DoracleServerUrl=http://localhost:7001 -DoracleUsername=username -DoraclePassword=password -DoracleHome=C:/Oracle/Middleware/Oracle_Home

项目将以 .sbar 格式构建。 .sbar 可以在 (D:(application)\(project)\.data\maven\ sbconfig.sbar) 中找到。 .sbar 将部署到 OSB 服务器。

在 D:(application)\(project)\.data\maven\configjar 下,会有一个 configjar 文本文档,其中包含构建过程中的日志。如果有任何错误,需要检查这个文件。

要清除之前的构建阶段,请执行 mvn clean,这将删除构建目录的 .data\maven 目录。

快照和 .sbar 工件也将存储在本地存储库 (C:\Users\(userId)\.m2\repository)。

【讨论】:

以上是关于使用 Maven 将 OSB 项目部署到服务器的主要内容,如果未能解决你的问题,请参考以下文章

使用Maven自动部署Java Web项目到Tomcat问题小记

如何从 Eclipse 将 Maven 项目的 WAR 部署到 JBoss 服务器?

项目使用maven打包

将maven项目部署到tomcat服务器(可能遇到的bug: 启动tomcat后,Maven项目做的ava Web时无WEB-INF/classes)

将javaweb项目部署到服务器中

tomcat部署maven项目需要安装maven环境吗