我有一个外部groovy脚本,我需要通过maven程序集插件包含在zip文件中。
我不能只编译它,它需要是文本形式。 我面临的问题是该脚本包含æøå字符,这会导致一些问题。 脚本本身从maven项目中的位置运行文件,但是当我使用maven程序集插件打包它,然后解压缩它时,其非ascii字符已损坏。如果我使用7zip或类似的方式压缩和解压缩脚本,脚本也运行正常,不会发生损坏。
如何告诉maven程序集插件保存我的特殊字符?我真的很讨厌必须对代码进行大量更改才能将其转换为maven项目。
这是我朋友的一部分
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.4</version>
<configuration>
<encoding>UTF-8</encoding>
<descriptors>
<descriptor>src/main/assembly/archive.xml</descriptor>
</descriptors>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
和我的描述符
<id>archive</id>
<baseDirectory>/</baseDirectory>
<formats>
<format>zip</format>
</formats>
<fileSets>
...
<fileSet>
<lineEnding>unix</lineEnding>
<directory>src/main/groovy</directory>
<outputDirectory>/</outputDirectory>
<includes>
<include>BusinessServiceMock.groovy</include>
</includes>
</fileSet>
...
答案 0 :(得分:3)
maven-antrun-plugin
而不是maven-assembly-plugin
的另一种方法,因为它根本不建议对zip存档中的文件名进行编码。
这是我的解决方案:
1.首先,为确保文件名以UTF-8
编码为例,我将我的资源复制到项目构建存储库并强制输入和输出编码。
2.然后我通过添加复制的目标目录来创建我的zip
。
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
...
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.8</version>
<executions>
<execution>
<phase>prepare-package</phase>
<configuration>
<encoding>${project.build.sourceEncoding}</encoding>
<tasks>
<copy todir="${project.build.directory}/target"
includeemptydirs="true"
encoding="${project.build.sourceEncoding}"
outputencoding="${project.build.sourceEncoding}">
<fileset dir="${basedir}/src/resource">
<include name="**/*" />
</fileset>
</copy>
<zip destfile="${project.build.directory}/${project.artifactId}-${project.version}.zip"
encoding="${project.build.sourceEncoding}">
<zipfileset dir="${project.build.directory}/target" includes="**" />
</zip>
</tasks>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
为确保编码正常,您可以使用maven-enforcer-plugin
检查子文件夹和文件编码。
答案 1 :(得分:0)
这是:
<configuration>
<encoding>UTF-8</encoding>
你的脚本肯定是正确的字符编码吗?