我的pom.xml中有以下行:
<updateRepositoryURL>file:/${user.home}/.m2/repository/repository.xml</updateRepositoryURL>
当我尝试在我的程序中使用它时,结果字符串是:
file:/c:Documents and Settings<myusername>/.m2/repository/repository.xml
其中<myusername>
的用户名很有趣。
然而它应该是
file:/c:/Documents and Settings/<myusername>/.m2/repository/repository.xml
有没有人知道为什么它没有正确解决?
提前致谢
答案 0 :(得分:6)
这可能是maven中的一个错误。我前段时间给这个workaround添加了书签:
我发现了一种方便的参考方式 Java系统属性
${user.home}
在支持的Maven构建中 Windows的荒谬路径名称 主页/个人资料目录:c:\Documents and Settings\foobar.
问题是,当使用Maven时,这个 参数化属性没有得到 作为一个属性值传递, 但作为三,因为在某处 在空间上建立Maven扼流圈 反斜杠并将其解释为 三个论点:
"c:\Documents", "and", "Settings\foobar"
或将窗口反斜杠视为 转义字符并删除它们 我的参数化user.home变为:
"c:Documents and Settingsfoobar"
[...]
但是,在Windows XP上,除非我设置 每个构建路径上的user.home 时间,反斜线逃逸或空间 问题导致文件不存在 找到。
要修复此问题,请将此个人资料添加到
$M2_HOME/conf/settings.xml
档案:<profile> <id>laptop-xp</id> <properties> <user.home>C:/Documents and Settings/${user.name}</user.home> </properties> </profile>
然后添加一个适当的条目 activeProfiles:
<activeProfile>laptop-xp</activeProfile>
现在每个用户都可以使用
user.home
属性可供参考 他们的家乡道路正确 Windows框。
或者,你只是这个错误的另一个受害者:http://bugs.sun.com/view_bug.do?bug_id=4787931。这是一个非常老的错误(超过6年),影响到Java 1.6.x之前的所有版本。
答案 1 :(得分:1)
另一种解决方法可能是通过 Groovy GMaven plugin 更正或生成路径,类似于这个常规代码:
System.setProperty(
'user.home.fixed',
System.getProperty('user.home').replaceAll( '\\\\', '/' ) )
也许有人甚至可以覆盖user.home
,但我不确定它是否会起作用。因此,如果在早期阶段执行,那么在任何地方使用 ${user.home.fixed}
代替${user.home}
都应该有效。