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

时间:2015-03-24 17:15:20

标签: maven java-ee build oracle-adf jdeveloper

有很多答案,但如果你知道,请试一试

标准ADF融合中间件应用程序具有以下结构:

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

我遇到了Maven和ojmake,ojdeploy插件的问题。我正在将大量Oracle ADF应用程序从scripts / ant迁移到maven构建。我最终得到的打包文件大小是其两倍,这是因为依赖性。更糟糕的是,我满足Maven依赖项并在ojmake / okdeploy阶段构建失败,这是我完全不理解的:库(或类)已经解析,.java文件使用标准maven编译插件编译但在ojdeploy中例如,我会得到先前已解决的包找不到错误。

[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

这个依赖有这个类:

    <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上的网络信息也很少,尤其是融合中间件应用程序中的Maven。

更多想法和问题:

  1. 运行mvn包目标会使ojmake和ojdeploy都执行
  2. 这导致在Maven中创建model.jar,vc.war和application.pom
  3. 这也组装了(刚刚看起来像魔术)web应用程序模块和.ear文件,虽然没有带有打包耳的pom文件。
  4. Maven生成的jar和war文件只是垃圾吗?
  5. Maven编译代码有什么意义吗?我可以跳过吗?使用maven-compile和ojmake?
  6. 编译代码两次
  7. 要在VC上运行Maven,我需要将已编译的Model项目作为工件,这是否意味着我必须将Model.jar安装到repo? Maven不会在没有它的情况下运行,但是Ojdeploy知道这些课程在哪里,完全混乱......
  8. Ojdeploy部署到.ear文件。我可以部署到远程服务器吗?
  9. .jws和.jpr文件的作用是什么?他们自己的classpathes和库的作用是什么?部署配置文件在执行maven时如何发挥作用?
  10. 空VC,模型和应用程序poms所需的实际库是什么?为什么?

1 个答案:

答案 0 :(得分:1)

我将通过回答你的一些问题来解决这个问题。

  1. 根据maven生命周期(maven lifecycle),运行maven包目标需要经过验证,编译,测试和打包阶段。因此,如果你的pom中有一个ojdeploy / ojmake插件,它会在封装阶段运行,它会执行。
  2. 确定。
  3. 我想ojdeploy会照顾它。
  4. 不,根据答案1,它们经过验证,编译,测试和打包。
  5. 当你运行包目标maven负责编译等。也许你可以跳过ojmake插件。
  6. 运行maven安装目标会将Model.jar安装到repo中,但您可以在VC上运行任何maven目标之前手动执行此操作。
  7. 您可以将生成的耳朵部署到远程服务器(即weblogic)。
  8. .jws文件是特定于您的应用程序的JDeveloper; .jpr文件是特定于您的Model和VC项目的JDeveloper。我最好的猜测是JDeveloper保存其类路径条目和其他项目细节,以便ojmake和ojdeploy可以完成各自的工作。
  9. 这是特定于项目的。也许一个好的建议是让JDeveloper为你的应用程序创建一个pom(File - &gt; New - &gt; Application pom)和项目,这样你就可以看到JDeveloper认为你需要依赖的东西了。