彻底解决Jfinal 启动脚本在window和linux 下的换行符差异

众所周知,windows 和linux下的文件换行符是不一样的,linux为"\n" windows为"\r\n" ,所以Jfinal 打包后经常会出现由于换行符的差异导致启动脚本报错的问题,我通过查阅资料,发现可以通过以下方式解决:

jfinal 打包使用了maven assembly插件 ,可以通过以下配置在实际打包的时候对启动脚本进行换行符的转换

修改package.xml文件

 <!-- 项目bin下面的脚本文件copy到 bin目录下 注意文件换行符设置-->
<fileSet>
    <directory>${basedir}/bin</directory>
    <lineEnding>unix</lineEnding>
    <outputDirectory>bin</outputDirectory>
    <!-- 脚本文件在 linux下的权限设为755,无需chmod可直接运行 -->
    <fileMode>755</fileMode>
    <includes>
        <include>*.sh</include>
    </includes>
</fileSet>
<fileSet>
    <directory>${basedir}/bin</directory>
    <lineEnding>windows</lineEnding>
    <outputDirectory>bin</outputDirectory>
    <fileMode>755</fileMode>
    <includes>
        <include>*.bat</include>
    </includes>
</fileSet>

同样资源文件的换行符可以这样设置,可以根据需要选择是否配置,通过以上配置再也不用担心换行符的问题了,可以愉快而放心的部署了

评论区

山东小木

2019-09-07 14:50

如果使用Eclipse JBolt的插件会自动完成生成的bat和sh 分别处理换行符

山东小木

2019-09-07 14:50

这个在源头处理 也好

chcode

2019-09-07 14:53

@山东小木 有时候部署是在git上自动构建的,这时候jbolt就没用了

JFinal

2019-09-08 16:08

@chcode 这个办法挺好,谢谢分享,赞

Jieven

2019-09-08 17:25

666 最近Win10下 触发了, 正蛋疼着.