views:

168

answers:

5

Okay. I'm sick of this problem. This has to have an easy fix, I'm sure of it!! I hope SO can help me to get rid of this once and for all!

Question

How do we get Eclipse to stop trying to process/compile all files under a particular project directory? The goal is for no errors/warnings to exist in the problems view if they relate to something in this folder or it's subfolders.

Background

We run Eclipse 3.6 and the m2eclipse plugin v0.10.2.20100623 manages our autobuild. For reasons beyond my control, we have the entire BlazeDS distribution in our SVN project directory under src/main/resources/blazeds. Essentially, this directory contains a vanilla distribution of tomcat running blazeds to which all our configuration and project files are added when we deploy to our server via SCP.

So, when we run deploy, this version of tomcat is copied to the server and our project is placed inside. Tomcat and our RIA application work and everything is fine.

The problem is, Eclipse tries to compile everything under src/main/resources/blazeds when running AutoBuild and this generates about 300 errors/warnings in our problem view. So when a real error surfaces, it gets lost among the noise.

The errors stem from code in /blazeds/tomcat/webapps/samples/testdrive-datapush and also the testdrive-httpservice, traderdesktop example webapps. They have dependent source code that's not on the classpath and jars that aren't included in the libraries.

Failed Attempted Solutions

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.

I've followed the SO answer here but it's only a very temporary solution. I've tried adding exclusions everywhere I can think of and other members of my team have done the same. I've removed src/main/resources as a source directory (in preferences > Java Build Path > Source Tab) I've added exclusions for blazeds under the resource directory. I've tried every permutation of blazeds and ** as in *blazeds*, **/blazeds/**, etc.

I've even tried including the libraries and source files the compiler is complaining about but I couldn't get it right without excessively mangling our project configuration.

Summary

This has to be simple. What is the conventional way to exclude a folder that is producing warnings/errors in an eclipse project?


Update #1:
gedim's solution below is decent but it
1) doesn't clear red X's from the project
2) is a change everyone on our team needs to do, manually
(i.e., it's not in a project property file; thereby, it isn't checked into subversion)

I hope there's a way to address the core problem by telling Eclipse that this directory doesn't contain
items to compile/validate. Such a change would likely show up in one of the project setting files.


Update #2:

The picture below shows the red X's I'm trying to clear and that
Build Path > Exclude
isn't an option...

Red X's won't go away

+3  A: 

You can use the Configure Contents... on the menu of Problems panel. There you can create a new configuration and set the scope to On Working Set:. Click on Select... and create a new working set that excludes the folders you don't want.

gedim
@gedim: Thanks for your response! This works better than what we were doing before but it suffers two problems. Most importantly, it's not a change that checks into version control. So I have to walk around to my other co-workers and have them do this. Second, it still tries to compile the classes. So on the left-hand side, I still see red X's on my top level project folders above the src/main/resource/blazeds directory. Other than those issues, this is fantastic! The problems no longer show up in problem view!! I didn't know anything about this feature of Eclipse.
gmale
+1  A: 

If you really want to exclude certain classes/packages from autobuild you can just right click on them and select Build Path -> Exclude

alt text

nanda
@nanda: Unfortunately, that didn't work. But thanks for your response! I was excited to try it out. However "Exclude" isn't an option here under `src/main/resources`. I've updated my question with a picture. Exclude *is an option* under my source folders. I don't understand why this stupid thing is trying to compile!!
gmale
There is no Exclude because you have excluded it :). Can you try to copy one error you get from the folder here? And can I get clearer view of what behind that popup menu?
nanda
@nanda: exactly, there's no excuse! I'm starting to wonder if this is a bug because it wasn't a problem last year. All the errors are legitimate errors related to missing jars, etc. as in `Feed cannot be resolved to a type`. Silly Eclipse: since this source code isn't used, of course the jars aren't around! I can clear the errors by adding all kinds of lib folder and source folder references to my project settings but that's not the desired solution. It confuses others and overly complicates the project settings :(
gmale
+1  A: 

Since the files in the resource folder rarely change, I suggest to put them into a second project (where you can set different warning options) and then access that via a relative path (like ${basedir}/../special-tomcat).

Aaron Digulla
Thanks for your suggestion, as I stated: `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.` For reasons beyond my control, I can't enact your solution but I like the idea of using other projects for those kinds of purposes.
gmale
You can use my answer to support your argument to change this aspect of the project (like "an external export suggested this as the best solution").
Aaron Digulla
That does it. I'm storming in on Monday's meeting and demanding, "If it's good for Digulla, it's good enough for us!" :)
gmale
Well, that's how consultants work: They tell you what everyone already knows but since it's from "outside", no one looses face when they agree to something that they had been blocking before.
Aaron Digulla
A: 

Configure your project (Project/Properties/Java Build Path/Source) to have, instead of the top level src folder with exclusions, just a list of the folders you do want to compile.

Assuming Eclipse Helios, step by step:

  • Turn off autobuild (Project/Build Automatically).
  • Start with it empty.
  • Delete the errors by right clicking as in the link (just to be sure).
  • Add genuine source folders 1 by 1 (Project/Properties/Java Build Path/Source/Add Folder)
  • Do an explicit build (Project/Build Project).

If that works, you should be able to turn autobuild back on. If it doesn't, something strange is going on. Perhaps the project is not using the standard Java Builder, but something like an Ant Builder (Project/Properties/Builders).

soru
thanks for your suggestion. It does not use the standard java builder, unfortunately. This is a Maven project and for some odd reason it's attempting to build items that are not source folders.
gmale
A lot of the configuration options are for the java builder only. So you need to look into the Maven configuration settings. Probably this stuff here:
soru
http://maven.apache.org/plugins/maven-eclipse-plugin/examples/specifying-source-path-inclusions-and-exclusions.html
soru
A: 

Remove the folder physically from the build path and have your build script place it there when you pass it a certain switch.

MahdeTo
Thanks for your suggestion, as I stated, "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." In this case, I agree with you but I cannot do what you're suggesting.
gmale