Pourquoi ne Maven m'avertir au sujet de l'encodage?
Mon but est de créer un archétype à partir d'un projet.
Quand je lance un but qui n'implique pas le maven-archetype-plugin, je ne vois pas d'avertissement:
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ maven-archetype-base ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 1 resource
[INFO]
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ maven-archetype-base ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 0 resource
[INFO]
Sur l'autre extrémité, quand je lance archetype:create-de-projet, je reçois un couple:
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ maven-archetype-base-archetype ---
[WARNING] Using platform encoding (Cp1252 actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] Copying 10 resources
[INFO]
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ maven-archetype-base-archetype ---
[WARNING] Using platform encoding (Cp1252 actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] Copying 2 resources
Je sais que le "standard" de maven est d'utiliser le project.build.sourceEncoding
de la propriété. J'ai essayé d'ajouter un peu plus de propriétés à la pom afin de répondre à cette question, mais aucun d'entre eux travaillaient.
Des idées? Merci.
J'ai le texte suivant pom.xml:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>my.group.id</groupId>
<artifactId>my-artifact</artifactId>
<version>0.0.1</version>
<packaging>maven-archetype</packaging>
<properties>
<!-- Compiler properties -->
<maven.compiler.target>1.7</maven.compiler.target>
<maven.compiler.source>1.7</maven.compiler.source>
<encoding>UTF-8</encoding>
<project.build.sourceEncoding>${encoding}</project.build.sourceEncoding>
<project.reporting.outputEncoding>${encoding}</project.reporting.outputEncoding>
<project.resources.sourceEncoding>${encoding}</project.resources.sourceEncoding>
<archetype.encoding>${encoding}</archetype.encoding>
<!-- Maven plugins version -->
<maven-archetype-plugin-version>2.2</maven-archetype-plugin-version>
<maven-resources-plugin-version>2.6</maven-resources-plugin-version>
<!-- Maven extentions version -->
<maven-archetype-packaging-extension-version>2.2</maven-archetype-packaging-extension-version>
</properties>
<dependencies>
[...]
</dependencies>
<build>
<extensions>
<extension>
<groupId>org.apache.maven.archetype</groupId>
<artifactId>archetype-packaging</artifactId>
<version>${maven-archetype-packaging-extension-version}</version>
</extension>
</extensions>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>${maven-resources-plugin-version}</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-archetype-plugin</artifactId>
<version>${maven-archetype-plugin-version}</version>
<extensions>true</extensions>
</plugin>
</plugins>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
</build>
Vous devez vous connecter pour publier un commentaire.
Lorsque vous exécutez l'objectif
archetype:create-from-project
, Maven génère un fichier POM pour la construction de l'archétype àtarget/generated-sources/archetype/pom.xml
, puis exécute l'package
objectif (par défaut) sur cette POM.Générés POM fichier n'a pas
project.build.sourceEncoding
ou de toute autre propriété de la définition de l'encodage, et c'est pourquoi vous obtenez le message d'avertissement.Le POM est généré à partir de ce prototype par
org.apache.maven.archétype.créateur.FilesetArchetypeCreator#createArchetypeProjectPom
, et à partir de ce code, il ne semble pas être un moyen pour ajouter des propriétés du POM fichier.Vous n'avez pas réglé le l'encodage par défaut propriété comme cela:
Cette approche est meilleure que la définition de l'encodage manuel pour chaque plugin, cause de tous les plugins ayant des valeurs par défaut pour l'encodage par exemple le maven-ressources-plugin:
Donc, cela signifie que vous avez seulement besoin de définir cette propriété et le plugin va automatiquement utiliser cet encodage.
<encoding>${encoding}</encoding>
.J'ai été agacé de voir que maven conservés sur de se plaindre après l'entrée ci-dessus
Puis j'ai réalisé que sa sécurité plugin et il a besoin de sa propre propriété
Donc, ici, il va