views:

1104

answers:

5

I use m2eclipse to import Maven Java projects in Eclipse.

It fails to recognize src/main/webapp as a source directory.

Graphically in the package explorer (or when I look into Java-Build-Path in the project's properties),
this directory isn't in the list of sources folder (while src/main/java or src/main/resources do).

To access it, I have to look directly into the src/ directory, and start unfolding... Not very convenient!

However, if I run maven install, the resources are copied to the correct directory.
(example : src/main/webapp/index.jsp to target/mywar/index.jsp)

Questions

  1. Is this a correct behavior ? (I was thinking it could be treated as other resources ...)
  2. Could I fix it?
  3. I wonder if there are other drawbacks for this situation, that I would not be aware of right now?
+1  A: 

Well you just have to mark the src/main/webapp as an Eclipse src folder:

right click webapp folder --> build path --> use as source folder

Don't think you can easily change this behavior without any ugly hacks, the src marking is just something Eclipse specific that it uses to configure its classpath etc.

NickDK
If it would be that simple, then I wonder why the m2eclipse plugin doesn't do this. It would fit exactly into his responsibility for me!
KLE
If I do this by hand, then I have problems when importing again the same project on a different machine...
KLE
You're right, maybe the m2eclipse plugin should have been smart enough to mark all subfolders of src as eclipse source folders..
NickDK
@Nick Maybe not all subfolders ... But m2eclipse is smart enough to read the 'war' nature of the project, then add the appropriate builders and java natures. So there should be no problem to know about this standard directory src/main/webapp !
KLE
You don't want to do that, there is no reason to add `src/main/webapp` to the source folders.
Pascal Thivent
+4  A: 

As far as maven is concerned, src/main/webapp isn't a source folder in the sense that it's contents aren't compiled / copied to target/classes, so from m2eclipse's point of view, this is correct behaviour. Is there a particular reason you need src/main/webapp to be marked as an Eclipse source folder?

Jim Downing
I think the src/main/webapp folder is designed to contain jsp files for examples. That's why it has to be marked as source folder.
reef
Yes, but the JSPs are (usually) compiled by the container after deployment rather than by the build system.
Jim Downing
Indeed you're right ;)
reef
I see your point. Concerning your last question, that was my third question too! :-)
KLE
+3  A: 
  1. Is this a correct behavior ? (I was thinking it could be treated as other resources ...)
  2. Could I fix it?
  3. I wonder if there are other drawbacks for this situation, that I would not be aware of right now?
  1. Yes, to me this is the correct behavior.
  2. It doesn't really make sense for src/main/webapp to be a source folder, it doesn't contain compilable source files.
  3. I don't know. I guess it depends on your expectations :)

That said, m2eclipse made a contribution that allows to make src/main/webapp available at the top level with a specific "Web Resources" label, something like this:

alt text

This could be a solution for your concern (the not convenient folding).

Pascal Thivent
+1 Thanks for this useful contribution. I'll check this 'Web Resources' folder, as we're using Ganymede.
KLE
This looks really useful but I cannot work out how to do it
Daniel Vaughan
A: 

I can think of a reason.

I'm using Maven for developing a GWT project in Eclipse. In my configuration, the src/main/webapp directory contains the HTML and CSS files that I have to refer to as part of my development effort, even though they're not "compilable" files.

Being able to get to them directly as opposed to diving into the src/ folder is a plus. And defining it in the POM so that it gets set up that way means I don't have to manually keep adding the folder every time I run eclipse:eclipse.

Nestor Rodriguez
A: 

To Nestor's point, no kidding. It's an end-to-end development environment and not just a compiler. It's intended as an interface for all source artifacts contributing to a build from JSP's to build configuration such as POM files. Why would eclipse even bother having XML and JSP editors if these aren't compile-able? --Which by the way, are super-useful.

The maven plugin for eclipse (or vice-versa) is terrific because it builds the .classpath, .project, and other configuration needed to immediately begin working with maven projects in eclipse. However, each time the eclipse config is generated (i.e. mvn eclipse:eclipse), unsupported directories must be added manually. That's a major suck.

The fact that these plugins neglect the ability to easily add new source folders viewable from within the IDE is a mystery to me. One maven/eclipse plugin project page even cites work-arounds for making these sources temporarily available by switching the project types and fooling the plugin--of course, you need to change it back immediately or corrupt the build.

Why don't they just create the ability to independently control the source declarations in .classpath???

campbell