【问题标题】:Deploy Maven artifacts to <container>/shared/lib for Eclipse debugging?将 Maven 工件部署到 <container>/shared/lib 以进行 Eclipse 调试?
【发布时间】:2012-04-23 15:17:08
【问题描述】:

我正在使用一些非常古老的单体软件,这些软件基本上是高度定制的 JBoss 部署。不幸的是,这意味着 JBoss 不能从 Eclipse 中的“服务器”视图启动,它必须作为 Windows 服务或通过命令行启动。有多个 WAR/EAR,但很少使用 WAR 类加载器,并且大多数实际的类文件都位于 jboss/shared/lib 作为 .jars。

我们需要一种在 Eclipse 中运行 Maven 构建(通过 m2e)并将生成的 .jar 中的类文件部署到 C:/product/jboss/shared/lib 的方法,这样当我们启动 JBoss 时,我们就可以使用 Eclipse调试(作为远程 Java 应用程序)。理想情况下,Maven 推送的工件不会覆盖最初安装的现有 .jar 文件。例如,如果 Maven 项目构建了一个名为 myjar-1.0.0.jar 的工件,我们需要一种将 myjar-1.0.0.jar 中的类部署到 C:/product/jboss/shared/lib/classes 的方法,这样它们是在与产品一起安装的 C:/product/jboss/shared/lib/myjar-1.0.0.jar 之前由类加载器拾取的。

目前,我们(非常 hacky)的解决方案是这样的:

  1. 在项目配置的Java Build Path > Source 选项卡下,我们使用Advanced 下的“符号链接”功能将Default Output Directory(例如项目/目标/类)映射到类文件夹(例如C:/产品/jboss/shared/lib/classFolder)。这会修改 .project 文件,该文件已签入源代码管理。

  2. 我们通常使用 m2e 启动器构建项目(例如全新安装)。
  3. 假设 Maven 构建成功,我们运行 Eclipse 项目构建。这会将类文件推送到 C:/product/jboss/shared/lib/classFolder:

  4. 我们重新启动 JBoss。由于 classFolders 优先于 jar,JBoss 将加载 C:/product/jboss/shared/lib/classFolder 中的类,这与我们的 Eclipse 工作区中的类相同。
  5. 我们附加到 JBoss 并将项目作为远程 Java 应用程序进行调试。

优点:

  • 我们能够将新类推送到 JBoss 并对其进行测试,而无需备份原始 jar 并手动复制/粘贴新的 jar(jar 地狱)。

缺点:

  • 我们进行了两次编译——一次使用 maven-compiler-plugin,然后 一次使用 Eclipse 项目构建(Java Builder)。
  • 根据我的经验,符号链接功能受到影响。有时我们需要 做刷新项目/关闭项目/构建项目舞来让它 工作。

有没有更好的方法来做到这一点?我不能强迫他们对项目进行大量重组,以至于所有可部署的 WAR 都是与容器无关的 WAR,但我们的开发人员需要能够快速做出更改无需手动复制/粘贴 .jar 即可对其进行测试。

【问题讨论】:

    标签: java eclipse maven jboss m2e


    【解决方案1】:

    几岁?

    你看过 Cargo 插件吗? http://cargo.codehaus.org/Quick+start

    它可以部署到 JBoss 3.x。 它有一个 Java API,所以你应该能够写一些东西来扩展它来做你想做的事情。

    您为什么尝试部署类而不是 jar 文件? 您仍然可以通过 Eclipse 使用 jar 文件进行远程调试。

    最坏的情况 - 使用 Ant。 Maven 不是为这种东西设计的,试图强迫它工作只会让你痛苦。
    一旦你让 Maven 生成了正确的工件,就可以手动计算出你会做什么,然后通过 Ant 编写脚本。

    【讨论】:

    • 你最终选择了哪一个?
    【解决方案2】:

    我会尝试查看maven-dependency-plugin,它有可能将工件复制到不同的位置。

    【讨论】:

      【解决方案3】:

      请检查您的部署程序集(项目 -> 属性 -> 部署程序集)并验证您的 maven 库是否存在。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-10-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-12-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多