Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Groovy 如何在maven概要文件中将${basedir}属性的反斜杠替换为斜杠_Groovy_Maven_Profile_Pom.xml - Fatal编程技术网

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

Groovy 如何在maven概要文件中将${basedir}属性的反斜杠替换为斜杠,groovy,maven,profile,pom.xml,Groovy,Maven,Profile,Pom.xml,我有一个pom.xml,它定义了属性module.basedir,用于包含转换的basedir属性。其定义如下: <properties> <module.basedir>${basedir}</module.basedir> </properties> 看起来,当概要文件被执行时,它会创建项目中定义的属性的自己的副本,并且在从插件引用时使用它们 有什么建议吗 String path = '\\a\\b\\c' assert path.r

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

<properties>
    <module.basedir>${basedir}</module.basedir>
</properties>
看起来,当概要文件被执行时,它会创建项目中定义的属性的自己的副本,并且在从插件引用时使用它们

有什么建议吗

String path = '\\a\\b\\c'
assert path.replaceAll('\\\\', '/') == '/a/b/c'
因此,您需要替换此行:

project.properties['module.basedir']=project.properties['module.basedir'].replace('\\','/');


之所以需要4个反斜杠,是因为源字符串中的每一个双反斜杠(在我的示例中是路径)都必须转义。

我在windows上使用gmaven插件创建EJB模块描述时遇到了同样的问题。我并不精通Groovy,但这种方法适合我:

def basedir = project.properties['module.basedir'].replace('\\','/')
def md = (basedir + "/target/module.xml" as File)

事实并非如此,我可以在输出中看到字符串已更改。关键是,当我编写print${module.basedir}时,仍然会得到原始值。
project.properties['module.basedir']=project.properties['module.basedir'].replace('\\','/');
project.properties['module.basedir']=project.properties['module.basedir'].replace('\\\\','/');
def basedir = project.properties['module.basedir'].replace('\\','/')
def md = (basedir + "/target/module.xml" as File)