13 maja 2009

[WARNING] Using platform encoding... i project.build.sourceEncoding w Apache Maven 2.1.0

Migracja do nowej wersji Apache Maven 2.1.0 nie powinna nastręczać wielu problemów, ale nawet przy ich braku zaleca się przejrzenie komunikatów z budowania projektu. Z pewnością spotkamy się z nowym komunikatem na poziomie WARNING:

[WARNING] Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent!

Pojawia się on dwukrotnie w trakcie wykonania wtyczki maven-resources-plugin. Wystarczy jednak dodać do pom.xml następujący wycinek:
 <properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
aby o temacie zapomnieć. Więcej szczegółów bezpośrednio u źródła w POM Element for Source File Encoding.

Dla zainteresowanych - stworzenie nowego projektu mavenowego to polecenie:
 $ mvn archetype:generate -B \
-DarchetypeGroupId=org.apache.maven.archetypes \
-DarchetypeArtifactId=maven-archetype-quickstart \
-DarchetypeVersion=1.0 \
-DgroupId=pl.jaceklaskowski -DartifactId=maven-encoding -Dversion=1.0
Teraz wystarczy zbudować projekt poleceniem mvn package (zamiast mvn install, który kopiuje artefakt projektowy do lokalnego repozytorium):
 $ mvn package
...
[INFO] [resources:resources]
[WARNING] Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent!
...
[INFO] [resources:testResources]
[WARNING] Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent!
...
[INFO] Building jar: c:\projs\sandbox\maven-encoding\target\maven-encoding-1.0.jar
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------
Po dodaniu project.build.sourceEncoding do pom.xml WARNING idzie w odstawkę. Od tej pory, dzienniki powinny być czyste.

5 komentarzy:

  1. warning ktory wymieniles nie pojwil sie w wersji 2.1.0. Widywalem go juz wczesniej ;)

    OdpowiedzUsuń
  2. Racja, przecież wynika to z faktu, że komunikat generowany jest przez wtyczkę maven-resources-plugin, a nie samego Mavena. Najwidoczniej zbieżność wydań mavena i wtyczki zmyliła mnie. Jeśli ktokolwiek uaktualni wtyczkę do najnowszej wersji będzie miał ten komunikat również z mavenem 2.0.x. Punkt dla Ciebie!

    OdpowiedzUsuń
  3. Idąc za ciosem, o ile nie używa się maven-compiler-plugin w wersji 2.1-SNAPSHOT, do czasu wydania 2.1 warto ustawić encoding explicite w konfiguracji tego pluginu. Tutaj jest ticket. W jednym projekcie bardzo dotkliwie odczuliśmy konsekwencje zastosowania project.build.sourceEncoding na UTF-8, bez równoczesnego określenia tego samego kodowania dla kompilatora. :(

    OdpowiedzUsuń
  4. no i co z tym Twitterem ? Ja swój już mam :)

    OdpowiedzUsuń
  5. To ja dodam, że maven-war-plugin do kopiowania i filtrowania web resource'ów używa domyślnego kodowania i nie ma możliwości tego skonfigurować: http://jira.codehaus.org/browse/MWAR-164

    Co najgorsze jeszcze nie wiem jak to obejść...

    OdpowiedzUsuń