如何在maven配置文件配置文件中将$ {basedir}属性的反斜杠替换为斜杠

Igo*_*aev 6 profile groovy pom.xml maven

我有一个定义属性module.basedir的pom.xml,用于包含转换的basedir属性.它的定义如下:

<properties>
    <module.basedir>${basedir}</module.basedir>
</properties>
Run Code Online (Sandbox Code Playgroud)

我有以下使用mgroovy插件执行的代码:

<source>
    println project.properties['module.basedir']
    project.properties['module.basedir']=project.properties['module.basedir'].replace('\\','/');
    println project.properties['module.basedir']
</source>
Run Code Online (Sandbox Code Playgroud)

后来我在其他插件中使用了这个属性.这很好用,直到我将插件定义移动到maven配置文件.当maven配置文件被激活时,mgroovy插件工作正常,但是当我在下一个插件中访问属性时,我得到未修改的值.

这是我访问此属性的方式:

${module.basedir}
Run Code Online (Sandbox Code Playgroud)

看起来当执行配置文件时,它会创建项目中定义的属性的自己副本,并在从插件引用时使用它们.

有什么建议?

Dón*_*nal 0

String path = '\\a\\b\\c'
assert path.replaceAll('\\\\', '/') == '/a/b/c'
Run Code Online (Sandbox Code Playgroud)

所以你需要替换这一行:

project.properties['module.basedir']=project.properties['module.basedir'].replace('\\','/');
Run Code Online (Sandbox Code Playgroud)

project.properties['module.basedir']=project.properties['module.basedir'].replace('\\\\','/');
Run Code Online (Sandbox Code Playgroud)

您需要 4 个反斜杠的原因是因为源字符串(在我的示例中)中的每个双反斜杠都path必须进行转义。