如何在Eclipse项目中排除产生警告/错误的文件夹?

65

好的,我受够了这个问题了。这肯定有一个简单的解决方法!我希望SO能够帮助我一劳永逸地解决它!

问题

如何使Eclipse停止尝试处理/编译特定项目目录下的所有文件?目标是如果错误/警告与此文件夹或其子文件夹中的某些内容相关,则在问题视图中不存在。

背景

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

因此,当我们运行deploy时,此版本的tomcat会被复制到服务器上,并且我们的项目会放置在其中。Tomcat和我们的RIA应用程序可以工作,一切都很好。

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

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

尝试的失败解决方案

我正在尝试推动正确的解决方案:完全删除示例,并将blazeds移出我们的版本控制。但这不会很快发生。

我遵循了这里的SO答案,但这只是一个临时解决方案。我已经尝试在所有我能想到的地方添加排除项,我的团队中的其他成员也做了同样的事情。我已经将src/main/resources删除为源目录(在首选项> Java Build Path>源选项卡中),我已经在资源目录下添加了blazeds的排除项。我尝试了每种形式的blazeds ** ,如* blazeds * ** / blazeds / ** 等。

我甚至尝试包括编译器正在抱怨的库和源文件,但是我无法在过度篡改我们的项目配置的情况下正确地处理它。

概要

这必须是简单的。在eclipse项目中排除产生警告/错误的文件夹的传统方法是什么?


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

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


更新#2:

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

红色X无法消失


1
构建路径 > 排除似乎是一个不错的解决方案。在Eclipse Juno中,它可以完美地修改Java构建路径。 - IgorGanapolsky
8个回答

63

我遇到了类似的问题,并通过将文件夹移动到我的项目文件夹中解决了它。然后我执行以下步骤:

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

唉...我有一个类似的问题。我的项目有(虚拟)文件夹和源代码,即这些源代码位于其他位置。我需要从构建中排除其中一些文件夹。我使用了上述的资源过滤器,并且我还为同一文件夹设置了“从构建中排除”。该文件夹现在显示为灰色,但是其中的所有源代码仍然被构建。 - Petr Vepřek
现在它已经可以工作了。问题是该项目被设置为 C 项目,而一些链接的源文件是 C++。将项目切换为 C++ 后,启用和禁用链接文件夹似乎可以正常工作。 - Petr Vepřek
2
不适用于我的情况 - 这会防止文件夹被包含在构建中。 - simon
有时候出于未知原因,项目中的某些功能无法正常工作。但是如果从父文件夹中打开,则可以正常运行。因此,请右键单击父文件夹 -> 属性 -> 资源 -> 等等。 - amdev
2
这也隐藏了文件夹。我想让那个有糟糕遗留代码的文件夹存在,只是不要警告我所有的错误。 - Ray

31
你可以在“问题”面板的菜单上使用“配置内容...”选项。在那里,你可以创建新的配置并将范围设置为“在工作集上:”。点击“选择...”并创建一个新的工作集,其中排除你不想要的文件夹。

4
谢谢您的回复!这比我们之前做的要好,但还存在两个问题。最重要的是,这不是一个检查版本控制的更改。因此,我必须走动到我的其他同事那里,并让他们这样做。其次,它仍然尝试编译类。所以在左侧,我仍然可以看到位于src/main/resource/blazeds目录上面的顶级项目文件夹上的红色X。除了这些问题,这真是太棒了!问题不再出现在问题视图中了!!我以前不知道Eclipse有这个功能。 - gMale
4
7年过去了,仍然不知道如何消除红色的X:/。 - Ray

8

有一个Eclipse功能请求,要求忽略指定源文件夹中的警告。已经有几个补丁发布到评论线程中,提供了该功能的实现。看起来最终的补丁正在接近审核阶段,即将包含在即将发布的版本中。

更新6/19/2012:Eclipse Juno 4.2M6支持忽略特定源文件夹中的问题。该功能可在Java Build Path对话框中使用。请参见发行说明


2
对我来说,你只能从错误/警告中排除“source”文件夹。最缺少/有用的似乎是能够忽略目标文件夹中的警告,因为它们包含生成的代码,你无法修复这些警告(我目前在一些项目中有几个这样的警告)。 - Svend Hansen

3
如果您想从自动构建中排除某些类/包,可以右键单击它们,然后选择“构建路径” -> “排除”。

alt text


很遗憾,那个方法没有起作用。但是感谢您的回复!我很兴奋地想尝试一下。然而,在src/main/resources下,“排除”不是一个选项。我已经在我的问题中更新了一张图片。在我的源文件夹下,“排除”是一个选项。我不明白为什么这个愚蠢的东西还在尝试编译!! - gMale
没有排除,因为您已经将其排除 :). 您能否尝试从此文件夹复制一个错误?我能否更清楚地了解弹出菜单背后的内容? - nanda
没有任何借口!我开始怀疑这是一个 bug,因为去年这不是问题。所有的错误都是与缺少 jar 等相关的合法错误,如“Feed 无法解析为类型”。愚蠢的 Eclipse:由于这个源代码没有被使用,当然这些 jar 文件也不会存在!我可以通过在项目设置中添加各种 lib 文件夹和源文件夹引用来清除错误,但这并不是期望的解决方案。它会让其他人感到困惑,并过度复杂化项目设置 :( - gMale

0

前往Java Build Path -> Source -> Add Folder

选择需要成为Build Path一部分的正确文件夹

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

我尝试了Build Path -> Exclude。这实际上并没有解决问题。即使Eclipse中的红色X标记已清除,它也不再是正确的Java项目。即用户可能无法运行JUnit测试用例/调试等。

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


0

在项目设置中(Project/Properties/Java Build Path/Source),将顶级src文件夹的排除项修改为仅包含您想要编译的文件夹列表。

以下是在Eclipse Helios中的步骤:

  • 关闭自动构建(Project/Build Automatically)。
  • 确保初始设置为空。
  • 通过右键点击删除错误(以确保操作正确)。
  • 逐个添加真实源文件夹(Project/Properties/Java Build Path/Source/Add Folder)。
  • 执行显式构建(Project/Build Project)。

如果一切正常,您应该可以重新启用自动构建。如果出现问题,则可能存在异常情况。也许该项目并非使用标准的Java Builder,而是使用了类似Ant Builder的工具(Project/Properties/Builders)。


谢谢您的建议。不幸的是,它没有使用标准的Java Builder。这是一个Maven项目,由于某些奇怪的原因,它正在尝试构建非源文件的项目。 - gMale
大量的配置选项仅适用于Java构建器,因此您需要查看Maven配置设置。可能是这里的东西: - soru
http://maven.apache.org/plugins/maven-eclipse-plugin/examples/specifying-source-path-inclusions-and-exclusions.html - soru

-1

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


感谢您的建议,正如我所说:“我正在努力推动正确的解决方案:彻底删除样本,并将BlazeDS从我们的版本控制中移除。但这不会很快发生。”由于某些原因超出我的控制范围,我无法实施您的解决方案,但我喜欢使用其他项目来实现这些目的的想法。 - gMale
你可以使用我的答案来支持你的论点,以改变项目的这个方面(例如,“一个外部出口建议这是最好的解决方案”)。 - Aaron Digulla
这就决定了。我要在周一的会议上大声宣布:“如果对Digulla有好处,那对我们也足够好!” :) - gMale
嗯,这就是顾问的工作方式:他们告诉你每个人都已经知道的事情,但由于这是“外部”的意见,当他们同意之前一直在阻止的事情时,没有人会失面子。 - Aaron Digulla

-2

最好的方法是使用Java Build Path中的包含和排除模式选项。
例如,如果您想要排除一个项目自动构建:
1- 进入其属性->Java Build Path->Source。
2- 在“构建路径上的源文件夹”区域展开文件夹。
3- 选择排除->编辑。
4- 在排除模式中添加**。
注意:有关这些模式的更多信息,请参阅包含和排除模式


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接