Index: C:/Documents and Settings/Rob/Eclipse Workspaces/Maven2 Plugin Workspace/org.maven.ide.eclipse/src/org/maven/ide/eclipse/Maven2Plugin.java =================================================================== --- C:/Documents and Settings/Rob/Eclipse Workspaces/Maven2 Plugin Workspace/org.maven.ide.eclipse/src/org/maven/ide/eclipse/Maven2Plugin.java (revision 145) +++ C:/Documents and Settings/Rob/Eclipse Workspaces/Maven2 Plugin Workspace/org.maven.ide.eclipse/src/org/maven/ide/eclipse/Maven2Plugin.java (working copy) @@ -5,6 +5,7 @@ import java.io.File; import java.io.StringWriter; import java.net.URL; +import java.util.ArrayList; import java.util.Collections; import java.util.Iterator; import java.util.List; @@ -361,6 +362,11 @@ } final Artifact a = ( Artifact) it.next(); + + IClasspathAttribute deployableAttr = null; + if (!a.getScope().equalsIgnoreCase("provided") && !a.getScope().equalsIgnoreCase("test")) { + deployableAttr = JavaCore.newClasspathAttribute("org.eclipse.jst.j2ee.deployableArtifact", "true"); + } monitor.subTask( "Processing " + a.getId() ); String artifactLocation = a.getFile().getAbsolutePath(); @@ -382,13 +388,19 @@ continue; } - libraryEntries.add(JavaCore.newProjectEntry(artifactProject.getFullPath(), false)); + libraryEntries.add( + JavaCore.newProjectEntry( + artifactProject.getFullPath(), + new IAccessRule[0], + true, + deployableAttr != null ? new IClasspathAttribute[]{deployableAttr} : new IClasspathAttribute[0], + false)); continue; } Path srcPath = materializeArtifactPath(mavenProject, a, "java-source", "sources", downloadSources, monitor); - IClasspathAttribute[] attributes = new IClasspathAttribute[0]; + IClasspathAttribute javadocAttr = null; if(srcPath==null) { // no need to search for javadoc if we have source code Path javadocPath = materializeArtifactPath(mavenProject, a, "java-doc", "javadoc", downloadJavadoc, monitor); String javaDocUrl = null; @@ -398,13 +410,22 @@ javaDocUrl = getJavaDocUrl(artifactLocation, monitor); } if(javaDocUrl!=null) { - attributes = new IClasspathAttribute[] { - JavaCore.newClasspathAttribute(IClasspathAttribute.JAVADOC_LOCATION_ATTRIBUTE_NAME, javaDocUrl)}; + javadocAttr = + JavaCore.newClasspathAttribute(IClasspathAttribute.JAVADOC_LOCATION_ATTRIBUTE_NAME, javaDocUrl); } } - libraryEntries.add(JavaCore.newLibraryEntry(new Path(artifactLocation), srcPath, null, - new IAccessRule[0], attributes, false /*not exported*/)); + List attributes = new ArrayList(); + if (javadocAttr != null) attributes.add(javadocAttr); + if (deployableAttr != null) attributes.add(deployableAttr); + IClasspathAttribute[] attrs = (IClasspathAttribute[]) attributes.toArray(new IClasspathAttribute[attributes.size()]); + + libraryEntries.add( + JavaCore.newLibraryEntry( + new Path(artifactLocation), srcPath, null, + new IAccessRule[0], + attrs, + false /*not exported*/)); } }