Comment configurer le compilateur maven pour utiliser java 5 pour mon code de test et java 1.4 pour mon code principal?Différentes versions de compilateur maven pour test et main
Répondre
Si vous souhaitez définir la conformité à la version Java appropriée, vous pouvez configurer le plug-in du compilateur pour chaque exécution. En supposant que Maven utilise un JDK au moins aussi courant que la version la plus élevée que vous spécifiez. En utilisant les propriétés que vous pouvez modifier cette configuration sur la ligne de commande ou un enfant en cas de besoin:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>${compileSource}</source>
<target>${compileSource}</target>
</configuration>
<executions>
<execution>
<id>test-compile</id>
<phase>process-test-sources</phase>
<goals>
<goal>testCompile</goal>
</goals>
<configuration>
<source>${testCompileSource}</source>
<target>${testCompileSource}</target>
</configuration>
</execution>
</executions>
</plugin>
...
<properties>
<compileSource>1.4</compileSource>
<testCompileSource>1.5</testCompileSource>
</properties>
Si vous voulez dire en utilisant différents compilateurs, qui est un peu plus impliqué. Comme vous devez spécifier le chemin vers le JDK et la version du compilateur que vous utilisez. Encore une fois, ceux-ci peuvent être définis dans les propriétés. Bien que vous pouvez les définir dans votre settings.xml
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>${compileSource}</source>
<target>${compileSource}</target>
<executable>${compileJdkPath}/bin/javac</executable>
<compilerVersion>${compileSource}</compilerVersion>
</configuration>
<executions>
<execution>
<id>test-compile</id>
<phase>process-test-sources</phase>
<goals>
<goal>testCompile</goal>
</goals>
<configuration>
<source>${testCompileSource}</source>
<target>${testCompileSource}</target>
<executable>${testCompileJdkPath}/bin/javac</executable>
<compilerVersion>${testCompileSource}</compilerVersion>
</configuration>
</execution>
</executions>
</plugin>
...
<properties>
<compileSource>1.4</compileSource>
<testCompileSource>1.5</testCompileSource>
<compileJdkPath>path/to/jdk</compileJdkPath>
<testCompileJdkPath>path/to/test/jdk<testCompileJdkPath>
</properties>
Notez qu'il peut être judicieux de définir les configurations du compilateur dans les profils, un pour chaque JDK que vous soutenez, afin que votre normale builds ne comptez pas sur les propriétés étant mis en
En outre, 3.x Maven, vous devez inclure le paramètre fork
lors de la spécification de l'exécutable, par exemple:
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<executions>
<execution>
<id>default-testCompile</id>
<phase>test-compile</phase>
<goals>
<goal>testCompile</goal>
</goals>
<configuration>
<fork>true</fork>
<executable>${testCompileJdkPath}/bin/javac</executable>
<source>1.8</source>
<target>1.8</target>
</configuration>
</execution>
</executions>
</plugin>
J'ai eu pas de chance avec la réponse acceptée compilation java 7 source et java 8 sources de test utilisant le maven-compiler-plugin
, version 3.5.1. Parce que le plugin de compilation utilisait le paramètre source/target pour les sources principale et de test.
Mais j'ai découvert qu'il existe des paramètres de configuration distincts pour la source de test et la cible.
Donc, pour moi, la solution qui a fonctionné était
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.5.1</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
<testSource>1.8</testSource>
<testTarget>1.8</testTarget>
</configuration>
</plugin>
</plugins>
</build>
- 1. Boost :: Test - génération de Main()?
- 2. Différentes versions de bibliothèques C++
- 3. Synchronisation de différentes versions d'objets
- 4. versions Maven, branches de subversion et dépôt local
- 5. Eclipse: Créer et se conformer à différentes versions de JRE
- 6. Icône de raccourci différent InstallShield 2009 pour différentes versions
- 7. Compatibilité du système d'exploitation pour différentes versions de .NET Framework
- 8. Différentes dépendances pour différents profils de construction dans maven
- 9. Chargement de différentes versions du même assemblage
- 10. Test unitaire: Maven ou Eclipse?
- 11. Rapport de test en double unité avec hudson et maven
- 12. Comment se débarrasser des versions maven snapshot
- 13. Benchmarks du code généré par différentes versions de g ++
- 14. Le compilateur C# ne reconnaît pas surchargé Main
- 15. Java construit avec différentes versions de JDK: mêmes artefacts?
- 16. Test avec les anciennes versions de .Net
- 17. répertoire source de l'exécution personnalisée du compilateur Maven2 et répertoire cible
- 18. Images pour assembleur, interpréteur et compilateur?
- 19. Comment créer un paquet de versions avec maven?
- 20. Utilisation de différentes versions de DLL dans une application
- 21. Meilleures pratiques pour le développement de SQL Server entre différentes versions
- 22. Différentes versions de msvcrt dans les types ctypes
- 23. Affectation de différentes versions Java à différentes applications Web sur le client wkst
- 24. Python Pypi: quel est votre processus pour libérer des paquets pour différentes versions de Python? (Linux)
- 25. Utilisation de différentes versions de python pour différents projets dans Eclipse
- 26. Oracle: Utiliser deux versions différentes d'EXP sur la même machine?
- 27. Meilleure pratique pour les téléchargements de sous-versions et d'images
- 28. Puis-je avoir différentes versions de php installées et exécutées sur mon serveur?
- 29. Conflits trouvés entre les différentes versions du même assemblage dépendant
- 30. Quelle est la part de marché pour les différentes versions de framework .Net?
Lorsque je tente le premier exemple avec la source et la version cible '1.8' pour les tests et' 1.7' pour le code principal, la compilation réussit quand 'mvn compile' est exécuté séparément de 'mvn test-compile', mais dans des commandes telles que' mvn compile test-compile' ou, plus simplement, 'mvn test-compile' (où' compile' est tiré) la configuration principale avec ' 'semble avoir préséance, et il échoue. –
La solution est que c'est ' default-testCompile ' qui remplace le comportement par défaut. La réponse ci-dessus ajoute une exécution supplémentaire. –
Pardonnez mon manque de compréhension à propos des exécutions. Cela entraînera-t-il la compilation du code de l'application principale dans la même version cible que le code de test si vous exécutez des tests maven? Ou les sources principales et de test auront-elles différentes versions de bytecode cibles? –