maven编译编码拼图

时间:2012-03-31 21:02:52

标签: maven jenkins

好的,我很困惑, 我收到以下编译错误

.../Currency.java:[16,60] unmappable character for encoding ASCII

我已使用

在maven conf设置中设置编码
<properties>
   <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<properties>

这是构建输出

[INFO] [clean:clean {execution: default-clean}]
[INFO] Deleting directory /export/jenkins_slave/workspace/Agent-Transfer/repo/foo-bar-   api/target
[INFO] [resources:resources {execution: default-resources}]
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 10 resources
[INFO] [compiler:compile {execution: default-compile}]
[INFO] Compiling 59 source files to /export/jenkins_slave/workspace/Agent- Transfer/repo/foo-bar-api/target/classes
[JENKINS] Archiving /export/jenkins_slave/workspace/Agent-Transfer/repo/foo-bar-  api/pom.xml to /export/ciserver/.hudson/jobs/Agent-Transfer/modules/com.cdc$foo-bar-  api/builds/2012-03-31_14-49-02/archive/com.cdc/foo-bar-api/Agent-Transfer-SNAPSHOT/foo-bar-  api-Agent-Transfer-SNAPSHOT.pom
[INFO] ------------------------------------------------------------------------
[ERROR] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Compilation failure

/export/jenkins_slave/workspace/Agent-Transfer/repo/foo-bar-api/src/main/java/com/cdc/games/domain/Currency.java:[16,60] unmappable character for encoding ASCII

我知道编码是从settings.xml中获取的,因为如果我删除它就会得到编码警告

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

问题是,从上面的注销中看,它似乎只对资源有影响:资源而不是编译:编译。我期待the wiki上的描述可以编码.java文件

正如你所看到的那样,我正在构建一个奴隶,即使使用编码警告它也会构建它,但我想这是因为平台编码不同。我可以在奴隶上改变它,但我宁愿没有,因为我希望构建是可移植的

4 个答案:

答案 0 :(得分:0)

也许您正在使用的编辑器在您输入时不承认Mavens字符编码并且它会选择其他平台或编辑器相关的编码?它在编辑器中看起来可能正确,但似乎有些奇怪的角色偶然潜入代码中。您是否尝试删除Currency.java类中的第16行并重写它(不使用复制/粘贴)?

答案 1 :(得分:0)

我遇到了同样的问题几次支持hudson / jenkins的多个实例。在我的例子中,事实证明LANG env var未在hudson / jenkins配置中明确设置为en_US.UTF-8

一旦我为hudson / jenkins安装设置了Global环境var,我的包含unicode字符的java文件就停止给我一个错误。

答案 2 :(得分:0)

试试这个

    <properties>
  <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  <project.resources.sourceEncoding>UTF-8</project.resources.sourceEncoding>
</properties>

            <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>2.3.2</version>
            <configuration>
                <encoding>${project.build.sourceEncoding}</encoding>
                <sourceEncoding>${project.build.sourceEncoding}</sourceEncoding>
            </configuration>
        </plugin>

source

并在您的server.xml中

     <Connector port="8080" URIEncoding="UTF-8"/> 

答案 3 :(得分:0)

我认为你有这个工作,因为这是一年......但是在

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<properties>

最后一次不正确。应该是</properties>,对吧?