*/
@Override
public void setModuleDependencies(IProject project, MavenProject mavenProject, IProgressMonitor monitor)
throws CoreException {
IVirtualComponent rarComponent = ComponentCore.createComponent(project);
Set<IVirtualReference> newRefs = new LinkedHashSet<IVirtualReference>();
Set<Artifact> artifacts = mavenProject.getArtifacts();
//Adding artifact references in .component. See https://bugs.eclipse.org/bugs/show_bug.cgi?id=297777#c1
for(Artifact artifact : artifacts) {
ArtifactHelper.fixArtifactHandler(artifact.getArtifactHandler());
//Don't deploy pom, non runtime or optional dependencies
if("pom".equals(artifact.getType()) || !SCOPE_FILTER_RUNTIME.include(artifact) || artifact.isOptional()) { //$NON-NLS-1$
continue;
}
IMavenProjectFacade workspaceDependency = projectManager.getMavenProject(artifact.getGroupId(), artifact
.getArtifactId(), artifact.getVersion());
if(workspaceDependency != null && !workspaceDependency.getProject().equals(project)
&& workspaceDependency.getFullPath(artifact.getFile()) != null) {
//artifact dependency is a workspace project
IProject depProject = preConfigureDependencyProject(workspaceDependency, monitor);
if (ModuleCoreNature.isFlexibleProject(depProject)) {
newRefs.add(createReference(rarComponent, depProject, artifact));
}
} else {
//artifact dependency should be added as a JEE module, referenced with M2_REPO variable
newRefs.add(createReference(rarComponent, artifact));
}
}
IVirtualReference[] newRefsArray = new IVirtualReference[newRefs.size()];
newRefs.toArray(newRefsArray);
//Only change the project references if they've changed
IVirtualReference[] references = WTPProjectsUtil.extractHardReferences(rarComponent, false);
if (WTPProjectsUtil.hasChanged(references, newRefsArray)) {
rarComponent.setReferences(newRefsArray);
}
}