2017-07-04 1 views
0

J'ai un projet avec une bibliothèque de base Scala, un plugin Maven, un plug-in Gradle et un tas d'autres bits qui ne sont pas nécessaires pour cette question. Il est construit en utilisant gradle. (Il semble plus facile de construire un plugin maven en utilisant gradle qu'un plug-in graduel en utilisant maven)équivalent classificateur sur les plugins maven personnalisés

En raison des versions et de la compatibilité de Scala, différents projets utilisant le plug-in maven nécessitent différentes versions de la bibliothèque principale. Actuellement, je dois construire contre 2.11.7 et 2.12.1. La bibliothèque de base peut être résolue avec des classificateurs assez facilement. EG:

<dependency> 
    <groupId>org.catapult.sa</groupId> 
    <artifactId>tribble-core</artifactId> 
    <version>0.5-SNAPSHOT</version> 
    <classifier>2.11.7</classifier> 
    <scope>test</scope> 
</dependency> 

Cependant config plugin Maven ne pas classificateurs donc nous ne pouvons pas faire:

<plugin> 
    <groupId>org.catapult.sa</groupId> 
    <artifactId>tribble-maven-plugin</artifactId> 
    <version>0.5-SNAPSHOT</version> 
    <classifier>2.11.7</classifier> <!-- this errors with Unrecognised tag: 'classifier'--> 
    <configuration>...</configuration> 
</plugin> 

Le code pour les deux versions du plugin Maven est exactement le même, il a juste un peu dépendances différentes. Le code dans le noyau est également exactement le même mais construit contre différents compilateurs.

Je peux gérer cela manuellement avec un réglage dans la construction, en changeant l'artifactId du plugin maven, et en construisant deux fois, mais est-ce la bonne façon de résoudre ce problème? Y a-t-il un meilleur moyen ou un moyen plus automatisable?

Répondre

0

classificateurs peuvent être ajoutés au niveau de la configuration d'exécution, un exemple:

<plugins> 
    <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-jar-plugin</artifactId> 
     <version>2.6</version> 
     <executions> 
     <execution> 
      <id>pre-process-classes</id> 
      <phase>compile</phase> 
      <goals> 
      <goal>jar</goal> 
      </goals> 
      <configuration> 
      <classifier>pre-process</classifier> <!-- here --> 
      </configuration> 
     </execution> 
     </executions> 
    </plugin> 
    </plugins> 

c'est un peu enterré dans le détail de l'POM reference en fait l'exemple ci-dessus est de la section PluginManagement mais les principes sont les mêmes . Cela devrait vous permettre de cibler pour chaque version de construction dont vous avez besoin sans avoir à définir l'artifactid manuellement.