Процесс разветвлен из версии Maven :Выполнение подключаемого модуля игнорирует пользовательский файл settings.xml?

В соответствии с документацией , выпуск Maven :выполняет цель проверки проекта, а затем разветвляет новый экземпляр Maven для его сборки. По какой-то причине разветвленный экземпляр игнорирует settings.xmlпользователя, что вызывает ошибку в моем случае, потому что этот файл имеет определение свойства, которое используется для составления URL-адреса репозитория в родительском pom.

  • Пользовательский settings.xml
    Определение свойства в профиле «нексус», который всегда активен.

    
      
        nexus
        
          http://host.com/nexus/content/repositories
        
      
    
    
    
      nexus
    
    
  • Родительский pom.xml
    Использование определенного свойства для составления URL-адреса репозитория.

    
      
        nexus
        ${dist.url}/releases
      
    
    
  • Команда выполнена:

    mvn release:perform
    
  • Вывод (после того, как он указывает на успешную проверку, сборку, тестирование и упаковку проекта):

    [INFO] Uploading: ${dist.url}/releases/com/acme/access/my-project/1.0/my-project-1.0.jar
    [INFO] [INFO] ------------------------------------------------------------------------
    [INFO] [INFO] BUILD FAILURE
    [INFO] [INFO] ------------------------------------------------------------------------
    [INFO] [INFO] Total time: 3.659s
    [INFO] [INFO] Finished at: Wed Aug 01 14:40:23 EDT 2012
    [INFO] [INFO] Final Memory: 21M/307M
    [INFO] [INFO] ------------------------------------------------------------------------
    [INFO] [WARNING] The requested profile "nexus" could not be activated because it does not exist.
    [INFO] [ERROR] Failed to execute goal org.apache.maven.plugins:maven-deploy-plugin:2.7:deploy (default-deploy) on project my-project: Failed to deploy artifacts: Could not transfer artifact com.acme.access:my-project:jar:1.0 from/to nexus (${dist.url}/releases): Error transferring file: no protocol: ${dist.url}/releases/com/acme/access/my-project/1.0/my-project-1.0.jar -> [Help 1]
    

Обратите внимание, как разветвленный экземпляр Maven пытается загрузить в ${dist.url}, что указывает на то, что свойство, определенное в settings.xml, не было прочитано. Также в предупреждающем сообщении сообщается, что профиль «nexus» не найден. Я предполагаю, что основной экземпляр Maven передал информацию о профиле разветвленному экземпляру, чтобы он знал, что нужно ее искать, но, поскольку он проигнорировал (или не нашел )пользовательский файл settings.xml, он не смог найти этот профиль.

Единственный найденный мной способ обойти это — вручную указать местоположение файла settings.xmlс помощью аргумента -sкомандной строки Maven, «обернутого» аргументом плагина arguments, как в

mvn release:perform -Darguments="-s C:\Users\theuser\.m2\settings.xml"

Плагин ведет себя ожидаемым/правильным образом? Есть ли способ сохранить определение свойства внутри пользовательского settings.xmlбез указания местоположения файла, как я сделал выше?

Дополнительная информация:

  • Проблема, по-видимому, связана именно с тем, что плагин не находит settings.xmlпользователя, поскольку копирование информации профиля в глобальный settings.xmlзаставляет его работать.

  • Пользовательский settings.xmlимеет правильное имя/созданный, потому что запуск help:active-profilesуказывает на то, что профиль активен. Сборка и развертывание вручную с помощью mvn clean deployтакже работает правильно (, т. е. URL репозитория вычисляется правильно, и артефакт загружается ).

7
задан jsiqueira 1 August 2012 в 21:51
поделиться