sch*_*eve 3 java maven-2 properties
我的pom.xml中有以下行:
<updateRepositoryURL>file:/${user.home}/.m2/repository/repository.xml</updateRepositoryURL>
Run Code Online (Sandbox Code Playgroud)
当我试图在我的程序中使用它时,结果字符串是:
file:/c:Documents and Settings<myusername>/.m2/repository/repository.xml
Run Code Online (Sandbox Code Playgroud)
<myusername>有趣的是我的用户名在哪里.
不过它应该是
file:/c:/Documents and Settings/<myusername>/.m2/repository/repository.xml
Run Code Online (Sandbox Code Playgroud)
有没有人有任何想法,为什么它没有正确解决?
提前致谢
这可能是maven中的一个错误.我前段时间已将此解决方法加入书签:
我找到了一种方便的方法来引用
${user.home}Maven构建中的Java系统属性,该构建支持Windows对于home/profile目录的荒谬路径名:Run Code Online (Sandbox Code Playgroud)c:\Documents and Settings\foobar.问题是,当使用Maven时,这个参数化属性不会作为一个属性值传递,而是作为三个传递,因为构建Maven中的某个位置会对空格或反斜杠进行扼流并将其解释为三个参数:
Run Code Online (Sandbox Code Playgroud)"c:\Documents", "and", "Settings\foobar"或者将windows反斜杠视为转义字符并将其删除,以便我的参数化user.home变为:
Run Code Online (Sandbox Code Playgroud)"c:Documents and Settingsfoobar"[...]
但是,在Windows XP上,除非我每次都在构建路径上设置user.home,否则反斜杠转义或空格问题会导致找不到文件.
要解决此问题,请将此配置
$M2_HOME/conf/settings.xml文件添加到 文件中:Run Code Online (Sandbox Code Playgroud)<profile> <id>laptop-xp</id> <properties> <user.home>C:/Documents and Settings/${user.name}</user.home> </properties> </profile>然后在activeProfiles中添加适当的条目:
Run Code Online (Sandbox Code Playgroud)<activeProfile>laptop-xp</activeProfile>现在,每个用户都可以使用该
user.home属性在Windows框中正确引用其主路径.
或者,你只是这个bug的另一个受害者:http://bugs.sun.com/view_bug.do?video_id = 4787931.这是一个非常老的错误(超过6年),影响到Java 1.6.x之前的所有版本.