文件名中的Maven和非拉丁字符

时间:2017-06-04 09:04:19

标签: java maven unicode character-encoding maven-3

我有一个Maven / Spring Boot项目和资源文件夹,其中包含拉丁文和非拉丁文字符的混合文件。

这是我的pom.xml

<?xml version="1.0"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

    <parent>
        <artifactId>example</artifactId>
        <groupId>com.example</groupId>
        <version>0.0.1</version>
    </parent>

    <modelVersion>4.0.0</modelVersion>

    <artifactId>api</artifactId>
    <packaging>war</packaging>

    <properties>
        <java.source.version>1.8</java.source.version>
        <java.target.version>1.8</java.target.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding
    </properties>

    <build>
        <resources>
            <resource>
                <filtering>true</filtering>
                <directory>${project.basedir}/src/main/resources</directory>
            </resource>
        </resources>
        <testResources>
            <testResource>
                <directory>${project.basedir}/src/test/resources</directory>
                <filtering>true</filtering>
            </testResource>
        </testResources>

        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <addResources>false</addResources>
                    <jvmArguments>
                        -Xdebug
                        -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005
                    </jvmArguments>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>${java.source.version}</source>
                    <target>${java.target.version}</target>
                    <encoding>${project.build.sourceEncoding}</encoding>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <configuration>
                    <failOnMissingWebXml>false</failOnMissingWebXml>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-resources-plugin</artifactId>
                <configuration>
                    <encoding>${project.build.sourceEncoding}</encoding>
                    <useDefaultDelimiters>true</useDefaultDelimiters>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

现在在Maven构建之后的Linux(OpenSuse)机器上(在Jenkins上)我有两个WAR文件:

api-0.0.1.war.original 
api-0.0.1.war 

解压缩api-0.0.1.war.original后,一切看起来都不错,但是在解压缩api-0.0.1.war的情况下,文件名中的所有非拉丁字符看起来都像??????。在将我的应用程序部署到Tomcat后,我注意到了这一点。

哪些错误以及如何使其与api-0.0.1.war正确合作?

已更新

正如评论中所建议的那样,我创建了一个示例GitHub项目,有助于重现该问题:Spring Boot Maven non-Latin characters in file names issue

重现的步骤:

  1. 构建项目:mvn clean install
  2. 在OpenSuse
  3. 部署demo-0.0.1-SNAPSHOT.war到Tomcat 8

    部署后,您将看到以下文件名问题:

    enter image description here

0 个答案:

没有答案