Айви, какая главная конфигурация и почему она не тянет jvyaml?

У меня есть следующий файл плюща:

         

и у меня есть задача извлечения ant, которая выглядит так:

    

Странно, что все зависимостей solr загружаются в lib / runtime, как и следовало ожидать, но модуль jvyaml не работает! Он «разрешает», но не будет загружаться в каталог lib / runtime, если я не изменю объявление зависимостей на:

 master" /> 

Какова эта основная конфигурация и почему нужно вытащить jjamaml jar, но не solr?

благодаря

Я бы предложил реструктурировать ваши конфигурации следующим образом:

             

Внесены важные изменения:

  1. Используйте более стандартную конфигурацию «скомпилировать»
  2. Наследование конфигурации с использованием атрибута «extends». Зависимости компиляции могут автоматически включаться как во время выполнения, так и в тестовые конфигурации.
  3. Используйте сопоставления конфигурации , например: conf = “runtime-> default”. Это делает очевидным, какая локальная конфигурация связана с какой удаленной конфигурацией.

Сопоставления конфигурации объяснены

Конфигурации – мощная плюща. Когда плющ загружает модули Maven, он выполняет внутренний перевод и назначает стандартный набор конфигураций, перечисленных в этом ответе:

  • Как облака maven сопоставляются с плющовыми конфигурациями плющом

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

Например:

  

Здесь мы говорим, что нам нужны зависимости по умолчанию для удаленного модуля, связанные с нашей локальной конфигурацией времени выполнения.

На практике есть только два удаленных конфигурационных сопоставления, которые вам понадобятся:

  • default : Артефакт удаленного модуля и все его временные транзитные зависимости
  • master : только артефакт удаленного модуля (нет транзитивных зависимостей)

В заключение, я думаю, что ваша проблема была вызвана тем, что область «времени выполнения» удаленного модуля Maven не включает в себя артефакт модуля Maven, вместо этого вы получали несуществующие транзитивные зависимости модуля jvyaml 🙁

Некоторые дополнительные советы

Я также предлагаю создать отчет об управлении зависимостью плюща следующим образом:

      

Отчет поможет объяснить, как каждая зависимость зависит от разных конфигураций. Также очень полезно определить, как управляются транзитивные зависимости.

И, наконец, вот где наследование конфигурации окупается, создавая управляемые плющю ANT classpaths:

        

Обратите внимание, что исходный solr-core также не извлекается. После вашего решения зайдите в кеш и проверьте файлы ivy.xml для обоих модhive.

Вы увидите, что они публикуют свои артефакты только в conf = master

   

Это означает, что вы должны сделать явное сопоставление конфигурации, чтобы обозначить, что ваша конфигурация конфигурации должна вызывать конфигурацию ваших основных зависимостей. (проверьте конфигурационное сопоставление).

ОДНАКО, зависимости от solr-core, имеют конфигурационное сопоставление, как вы могли видеть в файле ivy.xml:

  

Я думаю, что это мастер (*).

То, что я обычно делаю, это в моем собственном файле ivy.xml, когда я объявляю зависимости. Я делаю сопоставление:

   

Это говорит о том, что среда выполнения вызывает типичную конфигурацию в указанной зависимости.

Вы могли бы сделать

 conf="runtime,test->master" 

также

Давайте будем гением компьютера.