Currently, the character encoding for source files needs to be configured individually for each and every plugin that processes source files.
Life would become easier if there was a dedicated POM element like ${project.build.sourceEncoding} which could be used to specify the encoding once per entire project. Every plugin could use it as default value:
Adding this element to the POM structure can only happen in Maven 2.1. For Maven 2.0.x, the value can be defined as a property, thus plugins could immediately use ${project.build.sourceEncoding} expression, whatever Maven version is used.
default value
Without default value for source encoding, platform encoding is used, which is bad for build reproducibility. Then setting a default value consistently across every Maven plugin will improve build reproducibility.
Proposed default value: ISO-8859-1.
This default value can be coded in POM model for 2.1.x and in super-pom in Maven 2.0.x. A check has to be coded in every plugin too, in case Maven version used at runtime does not contain the default value:
plugins to modify
Affected Apache plugins:
- maven-changes-plugin (velocity template processing)
- maven-compiler-plugin (source processing)
- maven-javadoc-plugin (source processing)
- maven-jxr-plugin (source processing)
- maven-plugin-plugin (javadoc extraction, java source generation)
- maven-pmd-plugin (source analysis)
- maven-resources-plugin (contents filtering)
Affected Codehaus plugins:
- modello-maven-plugin/modello-core (java source generation)
- plexus-maven-plugin (javadoc extraction)
- taglist-maven-plugin (javadoc extraction)
references
Please see [0] for the related thread from the mailing list, and [1] for some further descriptions.
[0] http://www.nabble.com/POM-Element-for-Source-File-Encoding-to14930345s177.html
[1] http://www.nabble.com/Re%3A-Maven-and-File-Encoding-p16301958s177.html
