[ 
https://issues.apache.org/jira/browse/MPLUGIN-302?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15346991#comment-15346991
 ] 

Robert Scholte commented on MPLUGIN-302:
----------------------------------------

The Map is for rare occasions, in general the Collection will be good enough. 
In case of the multirelease jar I cannot predict if a dependency is the Java7 
implementation or the Java8 implementation. With the {{release:}}-scope I know 
these are all specific implementations, with the value I am able to map it to 
the correct folder.

This patch contains the annotation I had in mind. Next step would be to support 
this in the plugin descriptor. Third step is to make Maven understand it and 
inject the right dependencies. So the next project to adjust would be 
'maven-plugin-tools-generators'. I can make a branch for it if you want.

thanks for the help!


> Dependencies Annotation
> -----------------------
>
>                 Key: MPLUGIN-302
>                 URL: https://issues.apache.org/jira/browse/MPLUGIN-302
>             Project: Maven Plugin Tools
>          Issue Type: New Feature
>          Components: API
>            Reporter: Robert Scholte
>         Attachments: dependencies-annotation.patch
>
>
> The goal of this Annotation is to remove all dependencies from the plugin 
> configuration and to have custom scopes so they become part of the dependency 
> resolution when Maven is creating a buildplan.
> {code:xml}
> <plugin>
>         <groupId>org.apache.maven.plugins</groupId>
>         <artifactId>maven-javadoc-plugin</artifactId>
>         <version>2.10.3</version>
>         <configuration>
>           <taglet>package.to.YourTagletClass</taglet>
>           <tagletArtifact>
>             <groupId>group-Taglet</groupId>
>             <artifactId>artifact-Taglet</artifactId>
>             <version>version-Taglet</version>
>           </tagletArtifact>
>         </configuration>
>       </plugin>
> {code}
> This will become
> {code:xml}
> <plugin>
>         <groupId>org.apache.maven.plugins</groupId>
>         <artifactId>maven-javadoc-plugin</artifactId>
>         <version>2.10.3</version>
>         <configuration>
>           <taglet>package.to.YourTagletClass</taglet>
>         </configuration>
>         <dependencies>
>           <dependeny>
>             <groupId>group-Taglet</groupId>
>             <artifactId>artifact-Taglet</artifactId>
>             <version>version-Taglet</version>
>             <scope>taglet</taglet>
>           </dependency>
>         </dependencies>
>       </plugin>
> {code}
> Going further: there can be project dependencies which are not part of the 
> classpath. One concrete example is the multirelease jar, where the newer 
> implementation classes can be added to base jar. Current solution is to have 
> a separate (distribution) Maven module which assembles the final jar, but 
> with the solution above it is possible to embed them already when creating 
> the base jar.
> This project would have the following dependencies:
> {code:xml}
> <dependencies>
>   <dependency>
>     <groupId>GROUPID</groupId>
>    <artifactId>ARTIFACTID-7</artifactId>
>    <scope>release:7</scope>
>   </dependency>
>   <dependency>
>     <groupId>GROUPID</groupId>
>    <artifactId>ARTIFACTID-8</artifactId>
>    <scope>release:8</scope>
>   </dependency>
> </dependencies>
> {code}
> In the maven-jar-plugin one would have something like:
> {code}
> @Dependecies( label="release" )
> Map<String,Artifact> releaseArtifacts;
> // somewhere in the code
> foreach( Map.Entry releaseEntry : releaseArtifacts.entrySet() )
> {
>   // copy content of release.value() to META-INF/versions/release.key()
> }
> {code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to