【问题标题】:Invalid URI with MavenMaven 的 URI 无效
【发布时间】:2010-03-04 13:17:16
【问题描述】:

我是 maven 新手,在使用 mvn install 时出现此错误,您知道吗?

提前致谢

java.lang.IllegalArgumentException:无效的 uri 'http://maven.mysite.com:9999/repository/npg/data-recovery/${applicationVersion}/data-recovery-${applicationVersion}.pom':转义的绝对路径不是有效的 在 hidden.org.apache.commons.httpclient.HttpMethodBase.(HttpMethodBase.java:222) 在 hidden.org.apache.commons.httpclient.methods.GetMethod.(GetMethod.java:89) 在 org.apache.maven.wagon.shared.http.AbstractHttpClientWagon.fillInputData(AbstractHttpClientWagon.java:547) 在 org.apache.maven.wagon.StreamWagon.getInputStream(StreamWagon.java:116) 在 org.apache.maven.wagon.StreamWagon.getIfNewer(StreamWagon.java:88) 在 org.apache.maven.wagon.StreamWagon.get(StreamWagon.java:61) 在 org.apache.maven.artifact.manager.DefaultWagonManager.getRemoteFile(DefaultWagonManager.java:491) 在 org.apache.maven.artifact.manager.DefaultWagonManager.getArtifact(DefaultWagonManager.java:372) 在 org.apache.maven.artifact.manager.DefaultWagonManager.getArtifact(DefaultWagonManager.java:327) 在 org.apache.maven.artifact.resolver.DefaultArtifactResolver.resolve(DefaultArtifactResolver.java:216) 在 org.apache.maven.artifact.resolver.DefaultArtifactResolver.resolve(DefaultArtifactResolver.java:90) 在 org.apache.maven.project.DefaultMavenProjectBuilder.findModelFromRepository(DefaultMavenProjectBuilder.java:558) 在 org.apache.maven.project.DefaultMavenProjectBuilder.assembleLineage(DefaultMavenProjectBuilder.java:1392) 在 org.apache.maven.project.DefaultMavenProjectBuilder.buildInternal(DefaultMavenProjectBuilder.java:823) 在 org.apache.maven.project.DefaultMavenProjectBuilder.buildFromRepository(DefaultMavenProjectBuilder.java:255) 在 org.apache.maven.project.artifact.MavenMetadataSource.retrieveRelocatedProject(MavenMetadataSource.java:163) 在 org.apache.maven.project.artifact.MavenMetadataSource.retrieveRelocatedArtifact(MavenMetadataSource.java:94) 在 org.apache.maven.artifact.resolver.DefaultArtifactCollector.recurse(DefaultArtifactCollector.java:388) 在 org.apache.maven.artifact.resolver.DefaultArtifactCollector.collect(DefaultArtifactCollector.java:74) 在 org.apache.maven.artifact.resolver.DefaultArtifactResolver.resolveTransitively(DefaultArtifactResolver.java:316) 在 org.apache.maven.artifact.resolver.DefaultArtifactResolver.resolveTransitively(DefaultArtifactResolver.java:304) 在 org.apache.maven.plugin.DefaultPluginManager.resolveTransitiveDependencies(DefaultPluginManager.java:1492) 在 org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:435) 在 org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:678) 在 org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalWithLifecycle(DefaultLifecycleExecutor.java:540) 在 org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:519) 在 org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(DefaultLifecycleExecutor.java:371) 在 org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:332) 在 org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:181) 在 org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:356) 在 org.apache.maven.DefaultMaven.execute(DefaultMaven.java:137) 在 org.apache.maven.cli.MavenCli.main(MavenCli.java:362) 在 org.apache.maven.cli.compat.CompatibleMain.main(CompatibleMain.java:41) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 在 java.lang.reflect.Method.invoke(Method.java:597) 在 org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315) 在 org.codehaus.classworlds.Launcher.launch(Launcher.java:255) 在 org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430) 在 org.codehaus.classworlds.Launcher.main(Launcher.java:375) [信息] --------------------------------------------- ------------------------- [INFO] 总时间:6 秒 [INFO] 完成于:Thu Mar 04 15:12:56 EET 2010 [INFO] 最终内存:19M/35M

【问题讨论】:

    标签: java maven-2 build


    【解决方案1】:

    您在某处使用<version>${applicationVersion}</version>(可能在此 POM 中,如果版本被继承,则可能在父 POM 中)但此属性未解析。您需要定义如下内容:

    <project>
      <properties>
        <applicationVersion>x.y.z</applicationVersion>
      </properties>
      ...
    </project>
    

    请注意,我并没有真正看到使用这样一个属性的意义,有一个内置的${project.version} 属性引用项目的版本(例如,您可以在依赖项中使用)。查看MavenPropertiesGuide 了解更多可用属性的详细信息。

    【讨论】:

      【解决方案2】:

      ${applicationVersion} 属性未在所示的 URI 路径中解析:

      'http://maven.mysite.com:9999/repository/npg/data-recovery/${applicationVersion}/data-recovery-${applicationVersion}.pom'
      

      我猜这是在你的 pom.xml 中配置的依赖项。您应该在 pom.xml 的依赖项中找到“数据恢复”——我敢打赌,它的 &lt;version&gt; 属性设置为 ${applicationVersion}。如果是这样,您应该为其设置具体版本。

      【讨论】:

        【解决方案3】:

        我在子模块中使用属性设置父 pom 版本时遇到了同样的问题。

        您可以使用 maven 发布插件来实现这一点。只需更新父 pom 文件中的版本并运行此命令即可从父文件夹更新子模块中的版本:

        mvn -N versions:update-child-modules
        

        【讨论】:

          猜你喜欢
          • 2022-01-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多