【发布时间】:2017-06-02 19:13:30
【问题描述】:
我有一个 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 机器上(在 Jenkins 上),生成的 war 文件内的资源文件夹仅包含名称仅包含拉丁字符的文件。所有文件名包含非拉丁字符的文件都不存在在那里。
我做错了什么以及如何告诉 Maven 将所有文件放在那里?顺便说一句 - 在 Windows 机器上一切正常
更新
另外,我已经更新了我的 Jenkins,现在我的 war 文件中有所有文件。但现在我有另一个问题 - 解压缩后文件名中的所有非拉丁字符(战争文件)看起来像 ??????
看起来 Jenkins/Maven 构建出于某种原因杀死了文件名。如何解决?
这是一个带有 Unicode 文件名的示例 war 文件:war file,在 Linux 机器上解压缩后看起来像 ??????
【问题讨论】:
-
您是否尝试在
<properties>部分定义<project.build.sourceEncoding>utf-8</project.build.sourceEncoding>? -
@RomanPuchkovskiy 是的,它没有帮助
-
我注意到一件事 - 我已经直接从 CLI 执行了 Maven 构建..所有文件都存在..但是为什么在 Jenkins 构建之后这些文件不存在.. Jenkins 如何对此产生影响过程?
-
您的 Jenkins (Linux) 机器上的文件系统是什么?您可以在那里手动创建名称中包含非拉丁字符的任何文件吗?
-
是的,我可以创建非拉丁字符。另外,我更新了我的 Jenkins,现在我的 war 文件中有所有文件。但现在我有另一个问题 - 解压缩后文件名中的所有非拉丁字符(war 文件)看起来像
??????看起来 Jenkins/Maven 构建出于某种原因杀死了文件名。
标签: java spring maven jenkins unicode