java-在POM文件中使用Groovy进行定界符切换对于不同的开发人员而言工作方式有所不同

我们在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,’/’);

而不是手动解码文件分隔符.

上一篇:PHP5.6.15连接Sql Server 2008配置方案


下一篇:Groovy代码找不到Java构造函数