由于标题不正确

时间:2017-06-16 09:35:56

标签: java bash maven

我正在使用mvn clean install命令生成.jar文件。此jar文件包含一个 sh脚本,它应该被移动到 / tmp ,然后用于从pdf文件生成图像。

编辑:文件并未真正移动。它是从.jar。

创建的 / tmp 中创建的

.jar文件是从 windows 生成的,但是从 redhat linux 生产服务器中使用。

有时,脚本无法正常工作,因为它的标题在十六进制中似乎不正确(使用vim并输入:%!xxd)。

在我的脚本的正确版本中,第一行如下所示:

0000000: 2321 2f62 696e 2f62 6173 680a 5044 4654 #!/bin/bash.PDFT

在错误的版本中,您可以看到:

0000000: 2321 2f62 696e 2f62 6173 680d 0a50 4446 #!/bin/bash..PDF

如果没有十六进制,文件的开头看起来像这样(显而易见):

#!/bin/bash
PDFTOPPM=pdftoppm
CONVERT=convert
LOG=/tmp/pdf2imgSh.log

有没有人遇到过这个问题? 如何强制我的maven安装(在Windows上)正确生成jar而不会在脚本中打破标题?

这个问题对我来说有点模糊,所以不要犹豫要求编辑或精确。

提前致谢。

2 个答案:

答案 0 :(得分:3)

关注@ h22回答和@SubOtpimal评论,我认为您可以强制maven编码特定文件&#39> EOL

将此插件添加到 pom.xml

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-antrun-plugin</artifactId>
            <executions>
                <execution>
                    <id>ant-test</id>
                    <phase>package</phase>
                    <configuration>
                        <tasks>
                            <fixcrlf srcdir="${basedir}/src/main/resources/yourfilepath" eol="unix" />
                        </tasks>
                    </configuration>
                    <goals>
                        <goal>run</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

使用您自己的文件或文件夹更改路径。它以递归方式工作。小心不要忘记路径,否则会破坏你的罐子。 这可能会成功。希望这有帮助!

答案 1 :(得分:1)

版本因行结尾而异(Windows版和Linux版)。生成脚本的代码使用特定于平台的行尾终止符(0A对0D 0A)。

您可以在不更改代码的情况下更改行结束分隔符。按照here的说明设置默认的行尾终止符。配置系统属性可能有效,否则您可能需要编辑mvn脚本。