【问题标题】:How can I get m2e plugin to ignore resource filtering when writing eclipse .classpath编写eclipse .classpath时如何让m2e插件忽略资源过滤
【发布时间】:2012-07-25 06:40:27
【问题描述】:

当 eclipse(indigo) 中的 m2e(1.1.0) 更新项目配置时,它会更改我的资源文件夹的条目以排除所有。

<classpathentry excluding="**" kind="src" output="target/classes" path="conf"/>

但我需要以下内容才能成功运行测试:

<classpathentry kind="src" output="target/classes" path="conf"/>

我想从我的 jar 中排除一些资源(例如 license.foo),但我需要将其中许多文件放在 eclipse 类路径中以启用测试执行。

解决此问题的正确方法是什么?

  • 我的 pom 中是否有 org.eclipse.m2e 设置来改变行为?
  • 我可以在 .project/.classpath 中添加文本以通知 m2e 这必须保留吗?
  • 我应该使用配置文件来更改存储在 jar 中的内容吗?

您是如何解决此类问题的? (仅供参考,这类似于MNGECLIPSE-864)

谢谢

彼得

【问题讨论】:

    标签: maven classpath m2eclipse m2e


    【解决方案1】:

    你应该把运行时需要的资源放到

    src/main/resources
    

    以及您只需要进行测试的资源

    src/test/resources
    

    这是Maven Standard Directory layout,资源将在类路径中。

    如果您没有标准目录,您应该使用Maven Build Helper Plugin 到add additional (test) resource directories。

    【讨论】:

    • 那么,我是否需要安装 m2e buildhelper 连接器,然后只在我的 pluginManagement 部分列出构建助手插件,以确保它被 m2e 使用但不是我的标准构建?
    • 您的标准版本是什么?如果您在测试期间需要不在src/test/resources 中的资源,您的 Maven 构建将失败。这不是日食问题。为了让它工作,你可以在你的 build/plugin 部分配置你需要的配置 build-helper-plugin - 为了在 eclipse 中让它没有错误,你必须关心lifecycle mapping (安装连接器是最好的)。
    • 我在没有“conf”子目录的情况下将 conf/resources 添加到 jar 的顶层的命令行构建和使用资源的“conf/”前缀的 eclipse 之间存在差异。因此,eclipse 无法定位资源。我需要将这两个对齐或允许 Eclipse 制作第二个副本。第一个选项似乎更好
    【解决方案2】:

    如果你遇到这个问题,那么你可能想问“为什么我希望 eclipse 和命令行 maven 以不同的方式处理资源。”

    我认为这个问题源于希望将不需要的物品(例如许可证文件)从运输罐中取出。然而,正如 FrVaBe 所指出的,测试资源很好地满足了这一需求。

    我对汇编文件和 pom 进行了一些挖掘,以发现它们之间的竞争规范将 conf 目录移动到 target/classes 中,忽略它并将原始源位置导入到 pom.xml 中。我解开了复杂性,并有一个更简单的 pom,它以更标准的方式处理资源。

    感谢您的帮助

    彼得

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-04-05
      • 2017-10-27
      • 1970-01-01
      • 1970-01-01
      • 2013-01-16
      • 2013-08-11
      • 2016-02-14
      • 2011-11-20
      相关资源
      最近更新 更多