Robert Scholte created MPLUGIN-302:
--------------------------------------

             Summary: 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


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