Details
-
Type:
Bug
-
Status:
Closed
-
Priority:
Major
-
Resolution: Fixed
-
Affects Version/s: 2.0.2
-
Fix Version/s: 3.0-alpha-6
-
Component/s: Artifacts and Repositories
-
Labels:None
-
Complexity:Intermediate
-
Number of attachments :
Description
I'm writing a plugin that (among other tasks) provides a new ArtifactRepositoryLayout suitable for Eclipse repositories. In my META-INF/plexus/components.xml, I have:
<component>
<role>org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout</role>
<role-hint>eclipse</role-hint>
<implementation>org.apache.maven.artifact.repository.layout.EclipseArtifactRepositoryLayout</implementation>
</component>
This plugin is listed in the POM with <extensions>true</extensions>. I would expect that a <repository/> with <layout>eclipse</eclipse> would discover and load this layout provider. Instead, it simply results in an exception. Note that this same components.xml file also defines some lifecycle mappings, which work perfectly.
[INFO] Trace
org.apache.maven.reactor.MavenExecutionException: Cannot find layout implementation corresponding to: 'eclipse' for remote repository with id: 'Eclipse Update Site'.
at org.apache.maven.DefaultMaven.getProjects(DefaultMaven.java:365)
...
Caused by: org.codehaus.plexus.component.repository.exception.ComponentLookupException: Component descriptor cannot be found in the component repository: org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayouteclipse.
at org.codehaus.plexus.DefaultPlexusContainer.lookup(DefaultPlexusContainer.java:323)
Issue Links
- depends upon
-
PLX-109
Implement live Collections (proxying to the container for collections)
-
Hm, it won't let me change the name of the issue, but a better summary line might be: "Only certain components are extensible from a plugin". Lifecycles and packaging yes, but repository layouts no? It seems arbitrary.
I can make it work if I put the code directly into MAVEN_HOME\lib, but there's no (obvious) reason it shouldn't work from a <plugin/> with <extensions>true</extensions>.