Maven 使用 Ojmake 和 Ojdeploy 插件构建 Oracle ADF 项目、jws、jpr

Maven to build Oracle ADF projects, jws, jpr, using Ojmake and Ojdeploy plugins

要回答的问题很多,如果你知道请试一试

标准 ADF Fusion Middleware 应用程序将具有以下结构:

Application (Described as aggregating pom)
├── Model (jar project)
└── ViewController (war project)

我在使用 Maven 和 ojmake、ojdeploy 插件时遇到问题。我正在将许多 Oracle ADF 应用程序从 scripts/ant 迁移到 Maven 构建。我最终打包文件的大小是原来的两倍,这是因为依赖性。更糟糕的是,我满足了 Maven 依赖关系,并且在 ojmake/okdeploy 阶段构建失败,这是我完全不理解的:库(或 Class)已被解析并且 .java 文件获取使用标准的 maven 编译插件编译,但在 ojdeploy 内部,例如我会得到 package not found error that was resolved earlier.

[INFO] [16:37:14] Successful compilation: 0 errors, 0 warnings.
[INFO] Total time: (34604 msec) 34 seconds 604 msec
......
[INFO] --- ojdeploy:12.1.2-0-0:deploy (default) @ ViewController ---
[INFO] C:\Oracle\Middleware\Oracle_Home\jdeveloper\jdev\bin\ojdeploy.exe -J-DUseMaven=true -workspace C:\git\SXDOCS_SHEDULER\ViewController/../SXDOCS_SHEDULER.jws -project ViewController -profile application_production
......
[INFO] Error(19,30): package org.apache.http.client does not exist
[INFO] Error(188,97): cannot find symbol;  symbol:   class ClientProtocolException;  location: class sch.ShedulerPackage.SchedulerWorker

并且此依赖项具有 class:

    <dependency>
        <groupId>org.apache.httpcomponents</groupId>
        <artifactId>httpclient</artifactId>
        <version>4.1.2</version>
        <type>jar</type>
        <scope>compile</scope>
    </dependency>

有人可以说明如何正确组合 Oracle ADF 应用程序和 Maven 构建吗? Oracle 文档非常无用,网络上没有太多关于 Java EE 的信息,尤其是 Fusion Middleware 应用程序中的 Maven。

更多的想法和问题:

  1. 运行 mvn package 目标将使 ojmake 和 ojdeploy 都执行
  2. 这导致在 Maven
  3. 中创建 model.jar、vc.war 和 application.pom
  4. 虽然没有打包 ear 的 pom 文件,但这也组装了(现在看起来很神奇)web 应用程序模块和 .ear 文件。
  5. Maven生成的jar和war文件是垃圾吗?
  6. 用Maven编译代码有什么意义吗?我可以跳过那个吗?代码编译两次,使用 maven-compile 和 ojmake?
  7. 到 运行 VC 上的 Maven 我需要编译的模型项目作为一个工件,这是否意味着我必须安装 Model.jar 来回购?没有它 Maven 不会 运行,但是 Ojdeploy 知道 classes 在哪里,一团糟...
  8. Ojdeploy 部署到 .ear 文件。我可以部署到远程服务器吗?
  9. .jws 和 .jpr 文件的作用是什么?他们自己的class路径和库有什么作用?执行maven时部署配置文件如何发挥作用?
  10. 空 VC、模型和应用程序 poms 所需的实际库是什么?为什么?

我会在这里回答您的一些问题。

  1. 根据 maven 生命周期 (maven lifecycle) 运行ning maven 包目标经历验证、编译、测试和打包阶段。因此,如果你的 pom 中有一个 ojdeploy/ojmake 插件,它会在包阶段执行 运行。
  2. 好的。
  3. 我想 ojdeploy 会处理这个问题。
  4. 否,根据答案 1,它们已经过验证、编译、测试和打包。
  5. 正如您 运行 包目标 maven 负责编译等。也许您可以跳过 ojmake 插件。
  6. 运行 Maven 安装目标会将您的 Model.jar 安装到存储库中,但是您当然可以在 运行 在 VC 上安装任何 Maven 目标之前手动执行此操作.
  7. 您可以将生成的 ear 部署到远程服务器(即 weblogic)。
  8. .jws 文件是特定于您的应用程序的 JDeveloper; .jpr 文件是特定于您的模型和 VC 项目的 JDeveloper。我最好的猜测是 JDeveloper 保存其类路径条目和其他项目细节的地方,以便 ojmake 和 ojdeploy 可以完成各自的工作。
  9. 这是非常具体的项目。也许一个好的提示是让 JDeveloper 为您的应用程序(文件 -> 新建 -> 应用程序 pom)和项目创建一个 pom,这样您就可以看到 JDeveloper 认为您需要的依赖项。