【问题标题】:EclipseLink Static Weaving with IntellijEclipseLink 静态编织与 Intellij
【发布时间】:2013-08-31 22:59:44
【问题描述】:

我正在使用 IntelliJ,我希望通过静态编织运行或调试我的单元测试,以实现延迟加载等。我知道与 Eclipse 不同,IntelliJ 没有静态编织步骤,但我想有人必须在运行或调试测试之前将 IntelliJ 设置为静态编织。

到目前为止,我已经尝试使用 -javaagent:./path/eclipselink-2.5.0.jar 的 JVM 参数进行动态编织,但这似乎不起作用。我仍然收到这些警告:

[EL Warning]: metadata: 2013-08-28 11:00:51.091--ServerSession(1610028911)--Reverting the lazy setting on the OneToOne or ManyToOne attribute [owner] for the entity class [class com.my.Contact] since weaving was not enabled or did not occur.

我的 IntelliJ 兄弟姐妹们只是在这方面投入了精力并跳过了 IDE 中的编织吗?我们只是不使用 EclipseLink 还是我们已经弄清楚如何处理静态编织并仍然使用 IntelliJ?

谢谢!

【问题讨论】:

  • 静织怎么样?
  • 麻烦的是,即使我们有静态编织,IDEA 也会这样做。完成 maven 构建后,编织类,可以使用 javap 检查,但 IDEA 以某种方式选择(或重新创建?)vanilla 类并出现此错误。更糟糕的是,有时它可以正常工作,有时却不行。不知道是什么让我想到触摸这些课程......

标签: intellij-idea eclipselink


【解决方案1】:

IntelliJ Idea 可以运行其他目标来构建应用程序。

如果您有一个配置了 staticweave 插件的 maven 项目,则可以添加一个 maven "process-classes" 目标以在创意构建运行时自动执行 staticweave 操作。

【讨论】:

    【解决方案2】:

    您可以在启动运行配置之前创建额外的构建步骤。

    • 运行 > 编辑配置...
    • 选择所需的运行配置
    • 在“启动前”下添加静态编织器编译器作为附加构建步骤:
      • 例如添加一个像eclipselink:weave这样的Maven目标
      • 或者像java org.eclipse.persistence.tools.weaving.jpa.StaticWeave…这样执行java进程
      • 位置应该在Build 和`Build artifact``之间
    • 见截图:

    另一种解决方案是在 Maven 工具窗口中将 Maven 目标定义为 After Build 的挂钩。只需右键单击相应的 Maven 目标并选择 Execute After Build。这将在每次执行Build 后通过 Maven 执行 EclipseLink Weaver。您将看到 Maven 目标后面括号中的钩子:

    【讨论】:

      猜你喜欢
      • 2011-10-25
      • 2012-05-30
      • 1970-01-01
      • 2015-04-13
      • 1970-01-01
      • 2011-06-27
      • 2019-07-22
      • 2011-10-08
      • 1970-01-01
      相关资源
      最近更新 更多