Question

Je suis en cours d'exécution d'un projet qui a une dépendance à l'égard groovy 1,7-bêta-1. Le greffon gmaven utilise la version 1.6 routinier comme une dépendance. Dans mon pom, je précise dans la section de gestion de la dépendance du grooyv-toutes les versions que:

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.codehaus.groovy</groupId>
            <artifactId>groovy-all</artifactId>
            <version>1.7-beta-1</version>
        </dependency>
    </dependencies>
</dependencyManagement>

Pourtant, quand je lance Maven en mode débogage je vois que Groovy 1.6 est utilisé pour une dépendance au plugin gmaven. Je pensais que ma section de gestion de la dépendance emporterait sur ce afin qu'ils utilisent tous les 1,7-bêta-1, mais je reçois des erreurs en raison des différentes versions groovy. toute aide ici serait apprécié.

merci,

Jeff

Était-ce utile?

La solution

Voici une version raffinée de la réponse de Pascal. Je mis à jour la principale version du plugin 1.2, la dépendance aux Groovy 1.7 et enveloppa tout dans une balise pluginManagement afin qu'il exploitera bien le modèle d'héritage.

Gardez à l'esprit que le 1.3-SNAPSHOT du plugin GMaven a déjà commencé à utiliser le fournisseur Groovy 1.7-RC2.

<!-- I wrapped everything in a plugin management section so that this can be neatly inherited across all your poms -->
<pluginManagement>
  <plugins>
    <plugin>
      <groupId>org.codehaus.gmaven</groupId>
      <artifactId>gmaven-plugin</artifactId>
      <!-- Notice I upgraded it to 1.2 -->
      <!-- Details here http://repo1.maven.org/maven2/org/codehaus/gmaven/gmaven-plugin/1.2/gmaven-plugin-1.2.pom -->
      <version>1.2</version>
      <dependencies>
        <dependency>
          <groupId>org.codehaus.gmaven.runtime</groupId>
          <artifactId>gmaven-runtime-1.7</artifactId>
          <version>1.2</version>
        </dependency>
      </dependencies>
    </plugin>
  </plugins>
</pluginManagement>

Autres conseils

Redéfinition une dépendance utilisé par un plug-in est une capacité qui a été bien fait introduite par Maven 2.0.9.

Pour ce faire, au moins avec un plugin que vous utilisez comme un plug-in de construction normale - par opposition à un rapport qui est pas le cas avec le l'gmaven-plugin donc je ne vais pas couvrir ce cas ici - il suffit d'ajouter une dépendance bloc à l'intérieur du bloc de plugin, comme celui-ci (ce qui est un échantillon si les versions peuvent être inexacts):

<plugin>
  <groupId>org.codehaus.groovy.maven</groupId>
  <artifactId>gmaven-plugin</artifactId>
  <version>1.0</version>
  <executions>
    <execution>
      <goals>
        <goal>generateStubs</goal>
        <goal>compile</goal>
        <goal>generateTestStubs</goal>
        <goal>testCompile</goal>
      </goals>
    </execution>
  </executions>
  <dependencies>
    <dependency>
      <groupId>org.codehaus.groovy</groupId>
      <artifactId>groovy-all</artifactId>
      <version>1.7-beta-1</version>
    </dependency>
  </dependencies>
</plugin>

Tant que la nouvelle version de la dépendance est « API compatible » avec la version du plug-in était lié avec, vous devriez être ok. Sinon, vous aurez évidemment de passer à une version plus récente du plug-in compatible avec la nouvelle API (à savoir en utilisant probablement comme la dépendance), qui est ce que vous avez fait.

Pour gmaven avec précision prend le temps d'exécution est bonne en configurant la valeur « providerSelection », par exemple.

<plugin>
    <groupId>org.codehaus.gmaven</groupId>
    <artifactId>gmaven-plugin</artifactId>
             <configuration>
                 <providerSelection>1.7</providerSelection>
             </configuration>

Pour votre information, pour la groovy:providers mojo, ce sont les configurations il s'attend (je les Obtenue par le débogage à org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(List, Stack, MavenSession, MavenProject) (cherchez XmlPlexusConfiguration):

<configuration>
 <remoteRepositories implementation="java.util.List">${project.pluginArtifactRepositories}</remoteRepositories>
 <project implementation="org.apache.maven.project.MavenProject">${project}</project>
 <artifactRepository implementation="org.apache.maven.artifact.repository.ArtifactRepository">${localRepository}</artifactRepository>
 <pluginArtifactMap implementation="java.util.Map">${plugin.artifactMap}</pluginArtifactMap>
 <providerSelection implementation="java.lang.String">${gmaven.runtime}</providerSelection>
</configuration>

Vous devez ajouter une dépendance 1,7 similaire aux dépendances du plug-in dans une section <plugin> ou <pluginManagement> de structure similaire. Votre section de gestion de la dépendance que vous ajoutez est bonne, mais ne modifie pas les dépendances de plug-in. Je vais essayer d'examiner cette réponse et après un exemple plus tard, quand je suis de retour à mon bureau.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top