【问题标题】:jaxb generating files with maven in wrong encodingjaxb 使用 maven 以错误的编码生成文件
【发布时间】:2014-05-15 15:06:45
【问题描述】:

我有一个 xsd:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

<!-- The xml file -->

我正在用 jaxb 和 maven 从那个 xsd 生成类:

<plugin>
    <groupId>org.jvnet.jaxb2.maven2</groupId>
    <artifactId>maven-jaxb2-plugin</artifactId>
    <version>0.8.0</version>
    <configuration>
      <schemaDirectory>src/main/resources/xsd</schemaDirectory>
      <bindingDirectory>src/main/resources/xsd</bindingDirectory>
      <generatePackage>be.fgov.minfin.bbf.business.fileprocessing.jaxb</generatePackage>
      <encoding>UTF-8</encoding>
      <strict>false</strict>
      <extension>true</extension>
      <plugins>
        <plugin>
          <groupId>org.jvnet.jaxb2_commons</groupId>
          <artifactId>jaxb2-basics</artifactId>
          <version>0.6.2</version>
        </plugin>
        <plugin>
          <groupId>org.jvnet.jaxb2_commons</groupId>
          <artifactId>jaxb2-basics-annotate</artifactId>
          <version>0.6.2</version>
        </plugin>
      </plugins>
      <args>
        <arg>-Xannotate</arg>
        <arg>-XtoString</arg>
      </args>
    </configuration>
    <executions>
      <execution>
        <id>generate</id>
        <goals>
          <goal>generate</goal>
        </goals>
      </execution>
    </executions>
  </plugin>

文件生成正确,但是生成的文件编码为Cp1252,为什么?当我尝试编译时,我得到了一个不可映射的字符,用于编码内部“é”字符的 UTF-8 异常。

我正在设置:

${project.build.sourceEncoding}

我的主 pom.xml 中的变量为 UTF-8..

【问题讨论】:

  • 您为 jaxb 使用了不同的插件。您引用的文档中的插件具有不同的 groupid 和 artifactid。也许它与这个插件一起工作。
  • 你是对的,没有注意到。从问题中删除它。
  • 但是你应该使用 codehaus 的那个。你用的那个好像没有这个编码选项。
  • 我在另一个项目中使用 codehaus 插件,它也会生成 Cp1252,尽管主 pom 也设置为 UTF-8。 NVM ..看起来不对。它是 UTF-8。
  • 我正在使用 codehaus 插件,它仍然是 Cp1252。我猜还有一个问题..

标签: java xml maven jaxb xsd


【解决方案1】:

我们使用 codehaus jaxb2 插件,它有 encoding-option::

 <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>jaxb2-maven-plugin</artifactId>
            <version>1.5</version>
            <executions>
                <execution>
                    <id>xjc_qshgv</id>
                    <phase>generate-sources</phase> 
                    <goals>
                        <goal>xjc</goal>
                    </goals>
                    <configuration>
                        ...
                        <encoding>${file.encoding}</encoding>
                        ...
                    </configuration>
                </execution>                    
            </executions>
   </plugin>

【讨论】:

  • 问题实际上是别的,但如果问题是编码(正如我在这篇文章中所想和所说),这应该确实有效。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多