【问题标题】:How to exclude a folder that is producing warnings/errors in an Eclipse project?如何排除在 Eclipse 项目中产生警告/错误的文件夹?
【发布时间】:2011-04-13 18:24:29
【问题描述】:

好的。我厌倦了这个问题。这必须有一个简单的解决方法,我敢肯定!!我希望 SO 可以帮助我一劳永逸地摆脱它!

问题

我们如何让 Eclipse 停止尝试 处理/编译下的所有文件 特定的项目目录?这 目标是没有错误/警告 如果它们存在于问题视图中 与此文件夹或其子文件夹中的内容相关。

背景

我们运行 Eclipse 3.6,m2eclipse 插件 v0.10.2.20100623 管理我们的自动构建。由于我无法控制的原因,我们在src/main/resources/blazeds 下的 SVN 项目目录中拥有整个 BlazeDS 发行版。本质上,此目录包含运行 blazeds 的 tomcat 的 vanilla 发行版,当我们通过 SCP 部署到我们的服务器时,我们所有的配置和项目文件都会添加到该发行版中。

所以,当我们运行deploy时,这个版本的tomcat被复制到服务器,我们的项目被放置在里面。 Tomcat 和我们的 RIA 应用程序正常工作,一切都很好。

问题是,Eclipse 在运行 AutoBuild 时会尝试编译 src/main/resources/blazeds 下的所有内容,这会在我们的问题视图中生成大约 300 个错误/警告。因此,当真正的错误浮出水面时,它就会消失在噪音之中。

错误源于/blazeds/tomcat/webapps/samples/testdrive-datapush 中的代码以及testdrive-httpservicetraderdesktop 示例网络应用程序。它们具有不在类路径中的依赖源代码和未包含在库中的 jar。

尝试失败的解决方案

我正在尝试推出正确的解决方案:完全删除样本,同时让我们的版本控制中的 blazeds 消失。这不会很快发生。

我已关注SO answer here,但这只是一个非常临时的解决方案。我已经尝试在我能想到的任何地方添加排除项,我团队的其他成员也做了同样的事情。我已将src/main/resources 作为源目录删除(在首选项> Java 构建路径> 源选项卡中)我在资源目录下添加了blazeds 的排除项。我已经尝试了blazeds** 的所有排列,如*blazeds***/blazeds/** 等。

我什至尝试过包含编译器抱怨的库和源文件,但如果不过度修改我们的项目配置,我就无法做到正确。

总结

这必须很简单。是什么 排除文件夹的常规方法 这会产生警告/错误 一个eclipse项目?


更新 #1:
下面 gedim 的解决方案很不错,但它
1) 不清除项目中的红色 X
2) 是我们团队中的每个人都需要手动进行的更改
(即,它不在项目属性文件中;因此,它没有被检入 subversion)

我希望有一种方法可以通过告诉 Eclipse 该目录不包含该目录来解决核心问题
要编译/验证的项目。这样的更改可能会出现在其中一个项目设置文件中。


更新 #2:

下图显示了我正在尝试清除的红色 X,而这
Build Path > Exclude
不是一个选项...

【问题讨论】:

  • Build Path > Exclude 似乎是一个不错的解决方案。它可以在 Eclipse Juno 中完美地修改 Java 构建路径。

标签: eclipse ide build-process m2eclipse


【解决方案1】:

我遇到了类似的问题,并通过将文件夹移动到我的项目文件夹中来解决它。然后我去了:

  1. 项目 > 属性 > 资源 > 资源过滤器 > 添加...
  2. 设置过滤器类型=排除所有
  3. 设置应用于=文件夹
  4. 设置 文件和文件夹属性 = { 名称,匹配项, }

【讨论】:

  • 叹息...我也有类似的问题。我的项目有(虚拟)包含源的文件夹,即源位于其他地方。我需要从构建中排除其中一些文件夹。我使用了上面的 resource filter and 我还为同一个文件夹设置了“exclude from build”。该文件夹现在显示为灰色,但其中的所有源仍在构建中。
  • 现在可以使用了。问题是该项目被设置为 C 项目,而一些链接源是 C++。将项目切换到 C++ 后,启用和禁用链接文件夹似乎工作正常。
  • 在我的情况下没有帮助 - 这会阻止文件夹包含在构建中。
  • 有时由于未知的原因它在项目中不起作用。但它适用于父文件夹,因此右键单击父文件夹 -> 属性 -> 资源 -> 等。
  • 这也隐藏了文件夹。我希望包含糟糕的遗留代码的文件夹在那里,只是不要警告我所有的错误。
【解决方案2】:

您可以使用Problems 面板菜单上的Configure Contents...。您可以在那里创建新配置并将范围设置为On Working Set:。单击Select... 并创建一个新的工作集,将您不想要的文件夹排除在外。

【讨论】:

  • 感谢您的回复!这比我们以前做的更好,但它有两个问题。最重要的是,它不是检查版本控制的更改。所以我必须走到我的其他同事那里,让他们这样做。其次,它仍然尝试编译类。所以在左侧,我仍然在 src/main/resource/blazeds 目录上方的顶级项目文件夹中看到红色 X。除了这些问题,这太棒了!问题不再出现在问题视图中!!我对 Eclipse 的这个特性一无所知。
  • 7 年后,仍然无法弄清楚如何抑制红色 x:/
【解决方案3】:

有一个针对ignoring warnings from specified source folders. 的Eclipse 功能请求。有几个补丁发布到评论线程,提供了该功能的实现。最终补丁似乎已接近审核阶段,以包含在即将发布的版本中。

2012 年 6 月 19 日更新:Eclipse Juno 4.2M6 支持忽略特定源文件夹的问题。 Java Build Path 对话框中提供了该功能。请参阅release note

【讨论】:

  • 在我看来,您只能从错误/警告中排除 source 文件夹。似乎最缺少/最有用的是能够忽略target 文件夹中的警告,因为它们包含生成的代码,无论如何您都无法修复警告(我在某些项目中收到了几个这样的警告)时刻)。
【解决方案4】:

如果您真的想从自动构建中排除某些类/包,您只需右键单击它们并选择构建路径 -> 排除

【讨论】:

  • 不幸的是,这不起作用。但是感谢您的回复!我很高兴尝试一下。但是,在src/main/resources 下,“排除”不是一个选项。我用一张图片更新了我的问题。在我的源文件夹下排除是一个选项。我不明白为什么这个愚蠢的东西要编译!
  • 没有排除因为你已经排除了它:)。您可以尝试复制从此处的文件夹中得到的一个错误吗?我可以更清楚地了解该弹出菜单背后的内容吗?
  • 没错,没有任何借口!我开始怀疑这是否是一个错误,因为去年它不是问题。所有错误都是与缺少 jar 等相关的合法错误,如Feed cannot be resolved to a type。愚蠢的 Eclipse:因为没有使用这个源代码,所以当然没有罐子!我可以通过将各种 lib 文件夹和源文件夹引用添加到我的项目设置来清除错误,但这不是所需的解决方案。它使其他人感到困惑并使项目设置过于复杂:(
【解决方案5】:

将您的项目(Project/Properties/Java Build Path/Source)配置为包含您想要编译的文件夹列表,而不是包含排除项的顶级 src 文件夹。

假设 Eclipse Helios,一步一步:

  • 关闭自动构建(项目/构建 自动)。
  • 从空白开始。
  • 右键单击删除错误 如链接中所示(只是为了确定)。
  • 逐一添加正版源文件夹 (项目/属性/Java 构建 路径/来源/添加文件夹)
  • 执行显式构建(项目/构建项目)。

如果可行,您应该能够重新打开自动构建。如果没有,那么奇怪的事情正在发生。也许该项目没有使用标准的 Java Builder,而是使用了 Ant Builder(Project/Properties/Builders)之类的东西。

【讨论】:

  • 感谢您的建议。不幸的是,它不使用标准的 java builder。这是一个 Maven 项目,出于某种奇怪的原因,它试图构建不是源文件夹的项目。
  • 很多配置选项仅适用于 java builder。因此,您需要查看 Maven 配置设置。大概是这里的东西:
【解决方案6】:

转到 Java 构建路径 -> 源代码 -> 添加文件夹

选择需要成为构建路径一部分的正确文件夹

在上面的屏幕截图中,需要从构建中删除 src/main/resources,因为它会导致编译错误 [错误的包 ID]。因此包括文件夹直到 src/main/resources 。

我确实尝试过构建路径 -> 排除。这实际上并不能解决问题。即尽管 RedX 标记已从 Eclipse 中清除,但它不再是正确的 Java 项目。即用户可能无法运行 JUnit 测试用例/调试等。

但是通过包含正确的文件夹,我们可以继续作为 Java 项目。

【讨论】:

    【解决方案7】:

    由于资源文件夹中的文件很少更改,我建议将它们放入第二个项目(您可以在其中设置不同的警告选项),然后通过相对路径(如${basedir}/../special-tomcat)访问它。

    【讨论】:

    • 感谢您的建议,正如我所说:I'm trying to push the proper solution: to remove the samples completely and also to get blazeds out of our version control. That's not happening anytime soon. 由于我无法控制的原因,我无法制定您的解决方案,但我喜欢将其他项目用于此类目的的想法。跨度>
    • 您可以使用我的回答来支持您的论点以更改项目的这一方面(例如“外部导出建议这是最佳解决方案”)。
    • 就是这样。我在周一的会议上冲进了会议并要求,“如果这对 Digulla 有好处,那对我们来说就足够了!” :)
    • 好吧,这就是顾问的工作方式:他们会告诉你每个人都已经知道的事情,但由于它来自“外部”,所以当他们同意他们之前一直阻止的事情时,没有人会丢脸。
    【解决方案8】:

    最好的方法是使用 Java 构建路径中的包含和排除模式选项。
    例如,如果您想排除一个正在自动构建的项目:
    1- 转到其属性-> Java 构建路径-> 源。
    2- 展开“构建路径上的源文件夹:”区域中的文件夹
    3-选择排除->编辑
    4- 在排除模式中添加 **
    注意:有关此模式的更多信息:Include and Exclusion Patterns

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-08
      • 2012-07-30
      • 1970-01-01
      • 2012-07-28
      • 2020-09-13
      相关资源
      最近更新 更多