当我尝试运行maven-release-plugin时,它会更改pom.xml文件中的版本。
在maven发布之前,每一行结尾都有unix样式<lf>
,但在我的Windows机器上运行之后,插件会将文件中的每一行更改为<cr><lf>
。
我的问题是:
a)有没有办法告诉maven保留所有内容或使用特定的行结尾
或
b)是否有通用的方法来告诉窗口的结尾应该是什么?即使是在操作系统中深入挖掘内容的工具也会被认为是有用的。
我查看了这个https://issues.jfrog.org/jira/browse/BI-111并且说“已解决”,但我使用的是最新版本,但它对我不起作用。
答案 0 :(得分:5)
有四种可能的解决方案。
我认为最好的想法是调查Maven assembly plugin。它应该允许您更新行分隔符。有关详细信息,请参阅section“fileSet”部分。
mvn
作为临时解决方法,您可以使用PowerShell(开始 - &gt;所有程序 - &gt;附件 - &gt; Windows PowerShell)。像你一样调用maven,并在引用-D语句时引用一些额外内容。 mvn assembly:assembly -P prod "-Dmaven.test.skip=true"
。现在添加到-Dline.separator =`n。这应该会导致PowerShell添加转义值。
"line.separator"
。关注创建简单插件的Maven Guide。它需要做的就是覆盖价值。将插件配置为在pom修改之前的阶段执行。
System.getProperties().setProperty("line.separator", "\n");
有一个选项不能解决Windows兼容性问题,但应解决您的核心问题。看看创建小型VirtualBox Linux服务器。简单的NAT连接应该足以访问Internet。在这台机器上安装Maven,Java等。建立在它上面。因为它是Linux,行分隔符应该只是'\ n'。 VM需要256 - 512 MB的RAM和20 GB的存储空间(Linux +许多可能的Maven依赖项)。如果您最终喜欢它,您甚至可以扩展它以容纳像Jenkins这样的持续集成产品。
答案 1 :(得分:2)
在Linux中工作,但希望在Windows中使用Windows行结尾set-versions
输出,这个快速修复对我有用:
mvn -Dline.separator=$'\r\n' \
-DautoVersionSubmodules=true \
-DdevelopmentVersion=1.2.3-SNAPSHOT \
release:update-versions
答案 2 :(得分:2)
我在Windows(CRLF)上工作,并在文件中使用LF结尾。我使用Git。
我选择将core.autocrlf
设置为input
。根据{{3}} input
的设置适用于这种情况:
如果您使用的是使用LF行尾的Linux或Mac系统,那么您不希望Git在签出文件时自动将其转换;但是,如果意外引入了带有CRLF结尾的文件,则您可能需要Git对其进行修复。您可以通过将core.autocrlf设置为input来告诉Git在提交时将CRLF转换为LF
但是,当我在Windows上时,它对我很好。如果您的情况类似,可以尝试一下:
缺点:
答案 3 :(得分:1)
我的解决方法是使用SVN属性:svn:eol-style=native
。因此,SVN在更新或提交时“转换”pom.xml
。