Maven:scm url不包含有效的分隔符

时间:2011-06-17 12:59:07

标签: java maven

我正在尝试让自动buildNumers工作,但我一直遇到错误

scm网址不包含有效的分隔符

这是pom的相关部分。

<scm>
    <connection>scm:svn:${source.repo}</connection>
    <developerConnection>scm:svn:${source.repo}</developerConnection>
    <url>${source.repo}</url>
</scm>
<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>buildnumber-maven-plugin</artifactId>
    <version>1.0</version>
    <executions>
        <execution>
            <phase>validate</phase>        
            <goals>
                <goal>create</goal>
            </goals>
        </execution>
    </executions>
    <configuration>
        <revisionOnScmFailure>1</revisionOnScmFailure>
        <format>{0,number}</format>
        <items>
            <item>buildNumber0</item>
        </items>
    </configuration>
</plugin>
<properties>
    <source.repo>svn://myserver/repository/${project.artifactId}</source.repo>
    [..]
</properties>

subversion位置包含两个子项目core和web。

如果有人可以提供帮助,我觉得我已经尝试了一切。

我尝试了以下内容:

  • 使用管道:无效网址
  • 使用命令行中的repo url从服务器检索项目列表:正常工作
  • 将/ trunk添加到repo url:delimiter error
  • 将/ trunk / core添加到repo url:delimiter error
  • 将/ trunk / web添加到repo url:delimiter error

分隔符错误可能隐藏了一个不同的错误,因为我不认为该网址是错误的。

这是堆栈

java.lang.IllegalArgumentException: The scm url does not contain a valid delimit
    er.
            at org.apache.maven.scm.provider.ScmUrlUtils.getDelimiter(ScmUrlUtils.ja
    va:61)
            at org.apache.maven.scm.manager.AbstractScmManager.makeScmRepository(Abs
    tractScmManager.java:186)
            at org.codehaus.mojo.build.CreateMojo.getScmRepository(CreateMojo.java:7
    68)
            at org.codehaus.mojo.build.CreateMojo.getScmBranch(CreateMojo.java:619)
            at org.codehaus.mojo.build.CreateMojo.execute(CreateMojo.java:464)
            at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPlugi
    nManager.java:490)
            at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(Defa
    ultLifecycleExecutor.java:694)
            at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalWithLi
    fecycle(DefaultLifecycleExecutor.java:556)
            at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(Defau
    ltLifecycleExecutor.java:535)
            at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHan
    dleFailures(DefaultLifecycleExecutor.java:387)
            at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegmen
    ts(DefaultLifecycleExecutor.java:348)
            at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLi
    fecycleExecutor.java:180)
            at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:328)
            at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:138)
            at org.apache.maven.cli.MavenCli.main(MavenCli.java:362)
            at org.apache.maven.cli.compat.CompatibleMain.main(CompatibleMain.java:6
    0)
            at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
            at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
    java:39)
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
    sorImpl.java:25)
            at java.lang.reflect.Method.invoke(Method.java:597)
            at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315)
            at org.codehaus.classworlds.Launcher.launch(Launcher.java:255)
            at org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430)

            at org.codehaus.classworlds.Launcher.main(Launcher.java:375)    

谢谢, 马克

2 个答案:

答案 0 :(得分:0)

可能是因为您在URI中使用了占位符,而Maven在使用它之前并未对其进行扩展。

我和Maven一起打过这种事情,有时你只需要放弃并手工扩展。


另一种可能性是扩展的网址scm:svn:svn://myserver/repository/....错了,但@ ach_l的评论让我确信这不是问题。

答案 1 :(得分:0)

尝试运行命令:

mvn help:effective-pom

检查输出。那个和另一个help commands可以帮助你解决你的Maven设置问题(例如表达评估,配置文件等)