[ https://issues.apache.org/jira/browse/MPLUGIN-302?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15368095#comment-15368095 ]
Robert Scholte commented on MPLUGIN-302: ---------------------------------------- Both plugin annotations and doclettags result in a plugin.xml during packaging for speed at runtime. The [desciptor|https://maven.apache.org/ref/3.3.9/maven-plugin-api/plugin.html] shows how parameters are resolved as well as requirements (à la the @Inject), but here we need some kind of mapping for the dependencies too. Next step is for Maven to read this and decide how to fill those Dependencies annotated fields. > 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)