2010-03-28 6 views
29

À l'heure actuelle, j'écris une petite application Java par moi-même, avec quelques fichiers maven pom.xml. Je veux faire tous mes paquets maven pour compiler avec jdk 1.6, et je ne peux pas trouver un bon moyen de le faire sans le régler manuellement sur chaque POMs - j'en ai marre de copier-collerParamètre du compilateur maven par défaut

<groupId>org.apache.maven.plugins</groupId> 
<artifactId>maven-compiler-plugin</artifactId> 
<configuration> 
<source>1.6</source> 
<target>1.6</target> 
</configuration> 

dans chaque fichier pom.xml que je génère.

Existe-t-il un moyen plus simple de résoudre ce problème?

Répondre

16

Créez un projet pom-only (<packaging>pom</packaging>) disposant des paramètres du compilateur (et de tout autre paramètre par défaut) souhaité. Vous le traitez comme n'importe quel autre projet (relâchez-le, déployez-le dans votre repo Maven, etc.).

Mettez une déclaration parent en haut de vos fichiers pom:

<parent> 
    <groupId><!-- parent's group id --></groupId> 
    <artifactId><!-- parent's artifact id --></artifactId> 
    <version><!-- parent's version --></version> 
</parent> 

Il ne nous aide pas beaucoup si tout ce que vous voulez régler les paramètres du compilateur. Mais si vous vous trouvez en train de configurer de nombreux plugins, rapports et dépendances de la même manière à travers le projet, vous pouvez créer un parent pour tous les gérer. BTW - faites attention à déclarer dependencies et plugins dans votre fichier pom parent. Habituellement, vous voulez privilégier dependencyManagement et pluginManagement. Voir thedocumentation pour plus de détails.

+0

Jusqu'à présent, seule la solution que j'ai pu trouver pour irriter le comportement de l'éclipse m2e.Même après 5 ans depuis ce poste.Peut-être qu'il me manque quelque chose dans Eclipse (Mars)? –

8

Vous pouvez spécifier ce plugin et cette configuration dans votre ~/.m2/settings.xml, qui l'appliquera ensuite à tous les projets. Cependant, cela a l'inconvénient de rendre vos projets plus portables. Essayer de construire le même code avec le même fichier pom.xml échouera sur d'autres machines qui n'ont pas les mêmes valeurs que vous.

+1

La référence maven pour le fichier settings.xml ne permet pas de configurer les plugins (http://maven.apache.org/settings.html). Est-ce que je manque quelque chose? En outre, j'ai déjà un peu d'entrées dans le fichier settings.xml (comme la propriété "project.build.sourceEncoding" et d'autres référentiels non standard, donc ce n'est pas un problème pour moi d'ajouter plus de choses dans settings.xml.) –

+0

You peut configurer un profil (avec actif par défaut) où le plugin javac a cette valeur.Il n'est pas répertorié ou mentionné sur cette page de paramètres mais il est pris en charge.Voir les paramètres globaux sous m2_home/conf/settings.xml pour référence (vous pouvez aussi spécifier les paramètres ici) –

5

Je suis malade de copier-coller

Oui, et vous devez utiliser POM inheritance pour éviter cela et configurer le maven-compiler-plugin dans le POM parent.

Une autre option serait d'utiliser la solution suggérée par @matt (et il a cloué les avantages et les inconvénients de l'utilisation de settings.xml).

Dans les deux cas, cela est généralement un paramètre que je tiens à vérifier à l'aide du maven-enforcer-plugin et sa règle requireJavaVersion que vous configurez comme ceci:

<project> 
    [...] 
    <build> 
    <plugins> 
    <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-enforcer-plugin</artifactId> 
     <executions> 
      <execution> 
      <id>enforce-versions</id> 
      <goals> 
       <goal>enforce</goal> 
      </goals> 
      <configuration> 
       <rules> 
       <requireJavaVersion> 
        <version>1.6</version> 
       </requireJavaVersion> 
       </rules> 
      </configuration> 
      </execution> 
     </executions> 
     </plugin> 
    </plugins> 
    </build> 
    [...] 
</project> 

Mais il peut faire plus (comme la vérification de la version de Maven). Très utile.

3

Je veux faire tous mes paquets de Maven pour compiler avec jdk 1,6

Si ce projet est multi-modules il suffit de mettre ces paramètres en haut niveau POM sous pluginManagement.

Si vous avez beaucoup de projets indépendants, copiez-collez cette configuration. Méfiez-vous des solutions «intelligentes» comme la mise en place quelque part dans le monde. Un jour vous voulez utiliser différents paramètres du compilateur pour un ou deux de vos projets et le cauchemar commence :-)

Rappelez-vous ...

garder les choses aussi simples que possible, mais pas plus simple .

Questions connexes