Maven发布的过程:执行插件忽略用户';s settings.xml?

Maven发布的过程:执行插件忽略用户';s settings.xml?,maven,maven-release-plugin,Maven,Maven Release Plugin,根据,Maven版本:perform目标检查项目,然后派生一个新的Maven实例来构建它。出于某种原因,分叉实例似乎忽略了用户的设置.xml,这在我的例子中会导致一个错误,因为该文件具有用于在父pom中组成存储库URL的属性的定义 用户的设置.xml “nexus”配置文件中始终处于活动状态的属性定义 关系 http://host.com/nexus/content/repositories 关系 家长的pom.xml 使用定义的属性组合存储库的URL 关系 ${dist.url}/re

根据,Maven版本:perform目标检查项目,然后派生一个新的Maven实例来构建它。出于某种原因,分叉实例似乎忽略了用户的
设置.xml
,这在我的例子中会导致一个错误,因为该文件具有用于在父pom中组成存储库URL的属性的定义

  • 用户的设置.xml
    “nexus”配置文件中始终处于活动状态的属性定义

    
    关系
    http://host.com/nexus/content/repositories
    关系
    
  • 家长的pom.xml 使用定义的属性组合存储库的URL

    
    关系
    ${dist.url}/releases
    
  • 执行的命令:

    mvn发布:执行
    
  • 输出(表示已成功签出、构建、测试和打包项目后):

    [INFO]上传:${dist.url}/releases/com/acme/access/my-project/1.0/my-project-1.0.jar
    [资讯][资讯]------------------------------------------------------------------------
    [INFO][INFO]生成失败
    [资讯][资讯]------------------------------------------------------------------------
    [信息][信息]总时间:3.659秒
    [信息][信息]完成时间:美国东部夏令时2012年8月1日星期三14:40:23
    [信息][信息]最终内存:21M/307M
    [资讯][资讯]------------------------------------------------------------------------
    [信息][警告]无法激活请求的配置文件“nexus”,因为它不存在。
    [INFO][ERROR]未能在项目上执行goal org.apache.maven.plugins:maven部署插件:2.7:deploy(默认部署)我的项目:未能部署工件:无法将工件传输到com.acme.access:my project:jar:1.0 from/to nexus(${dist.url}/releases):传输文件时出错:无协议:${dist.url}/releases/com/acme/access/my-project/1.0/my-project-1.0.jar->[帮助1]
    
请注意forked Maven实例如何尝试上载到${dist.url},这表示未读取settings.xml中定义的属性。此外,警告消息通知未找到配置文件“nexus”。我假设主Maven实例将概要文件信息传递给forked实例,以便它知道如何查找它,但由于它忽略(或没有找到)user's settings.xml,因此它无法找到该概要文件

我发现的唯一绕过此问题的方法是,通过使用Maven的命令行
-s
参数“包装”插件的
参数来手动指定
settings.xml
文件的位置,如中所示

mvn发行版:执行-Darguments=“-sc:\Users\theuser\.m2\settings.xml”
插件是否以预期/正确的方式运行?是否有一种方法可以将属性定义保存在用户的
设置.xml
中,而不必像我上面所做的那样指定文件的位置

更多信息:

  • 问题似乎特别在于插件找不到用户的
    设置.xml
    ,因为将配置文件信息复制到全局
    设置.xml
    会导致它工作

  • 用户的
    settings.xml
    已正确命名/创建,因为运行
    help:activeprofiles
    表示该配置文件处于活动状态。使用
    mvn clean deploy
    手动构建和部署也可以正常工作(即正确计算存储库URL并上载工件)


    • 这不一定是maven版本插件中的错误。似乎您遇到了这个Maven bug:
      这个bug应该在Maven 3.0.4中修复。

      同意,很高兴知道这个行为被认为是bug。谢谢我在Maven 3.0.4-R1232337中遇到了同样的问题,这在Maven 3.5.0中仍然是一样的,我认为在我的例子中类似的问题类型。