我们在POM文件中使用了一小段Groovy代码,用正斜杠定界符替换主基本目录中的反斜杠定界符.
有关此的更多信息,请参见此帖子:How to convert file separator in maven
但是,我们遇到的问题是,从该链接建议的常规在一台开发人员机器上工作正常,而在另一台开发人员机器上却行不通.
对于第一个开发人员有效的是:(链接文章中提到的代码)
pom.properties['main.basedir']=project.basedir.absolutePath.replace('\\','/');
以下是适用于其他开发人员的内容:
pom.properties['main.basedir']=project.basedir.absolutePath.replace('\','/');
(请注意单个反斜杠)
第二个开发人员在使用双反斜杠时看到的错误是:
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1:15.096s
[INFO] Finished at: Tue Sep 03 16:54:18 BST 2013
[INFO] Final Memory: 36M/298M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.codehaus.gmaven:gmaven-plugin:1.5:execute (setproperty) on project bonus-wallet-amq-tests: startup failed, script1378223658221.groovy: 1: expecting ''', found '<EOF>' @ line 1, column 79.
[ERROR] 1 error
我们无法弄清楚为什么第二个开发人员只需要一个反斜杠.
两位开发人员都在使用Eclipse Juno,Java 1.6 Update 45,并且groovy的版本必须与在POM文件中定义为依赖项的版本相同. (版本1.6.9)
我们发现的唯一发现是Maven的版本不同.开发人员1的版本为3.0.3,而开发人员2的版本为3.0.5.但是,我们一直找不到与此相关的任何文档.
任何帮助将是最有益的.
解决方法:
您应该按以下方式更改代码:
pom.properties [‘main.basedir’] =
project.basedir.absolutePath.replace(File.separator,’/’);
而不是手动解码文件分隔符.