Maven – Зависит от собранного почтового индекса

Я пытаюсь, чтобы Project B вытащил (и распаковал) ZIP, созданный Project A, и развернулся в удаленный repository.

ZIP создан и прикреплен с помощью maven-assembly-plugin с типом упаковки pom :

 project-a ZIP Used by Project B pom ...  org.apache.maven.plugins maven-assembly-plugin   distribution-package package  single    src/main/assembly/scripts.xml  gnu     

Попытка вывести его из pom проекта B с помощью maven-dependency-plugin :

  org.apache.maven.plugins maven-dependency-plugin   copy-scripts package  copy   ${basedir}/target/staging true   ... ... ... true zip       

сбой: [ERROR] Failed to execute goal on project ...: Could not resolve dependencies for project group:artifact:pom:version: Could not find artifact group:project-a:zip:version in nexus (http://...:8081/nexus/content/groups/public) -> [Help 1]

Я бы предположил, что это связано с тем, что я указал упаковку Project A как pom а не zip , однако я не могу указать Project A как тип упаковки zip потому что это приводит к:

 [ERROR] Unknown packaging: zip @ line 13, column 13 

Я делаю что-то неправильно здесь или это просто невозможно? У меня просто есть куча файлов, которые я хочу объединить в артефакт, и разрешить несколько других проектов загружать и распаковывать их для использования. Откройте разные предложения …

Я также проверил, чтобы собранный почтовый индекс действительно находился в связке.

ОБНОВЛЕНО ОТ ОТВЕТ

Для чьих-либо благ, то, что мне не хватало, заключается в том, что зависимости должен соответствовать сборки. Обратите внимание, где thisistheattachedartifactsclassifier указан в следующих файлах.

scripts.xml (Project A):

  thisistheattachedartifactsclassifier  zip    src/main/resources ...    -  thisistheattachedartifactsclassifier  zip    src/main/resources ...    

pom.xml (Project B):

  org.apache.maven.plugins maven-dependency-plugin   copy-scripts package  copy   ${basedir}/target/staging true   ... ... ... thisistheattachedartifactsclassifier true zip       

Добро пожаловать в Stack Overflow :).

Вы на правильном пути. Ваша настоящая проблема – использовать zip.

Следующая конфигурация в порядке и отлично работает для меня. Это старый (2 года назад), и я не уверен, что это соответствует лучшим практикам. Но я знаю, что это работает.

Это позволяет мне делиться некоторыми ресурсами между проектами, особенно для модульных тестов.

Почтовый проект:

pom.xml

 com.mycompany cfg_dev 1.1.0    org.apache.maven.plugins maven-assembly-plugin   cfg-main-resources  single  package   /src/main/assembly/resources.xml        

Дескриптор сборки: он создаст этот артефакт: cfg_dev-1.1.0-resources.zip. Обратите внимание, что

  1. это zip-архив
  2. «classификатор» – это ресурсы (например, имя сборки)

    ресурсы zip false src / main / resources

Основной проект:

pom.xml

Пожалуйста, обратите внимание, что

  1. это зависит от zip-архива
  2. «classификатор» зависимостей – это ресурсы (например, предыдущее имя сборки)

       com.mycompany cfg_dev ${project.version} resources zip test  ....     src/test/resources true    ${project.build.directory}/test-resources true     org.apache.maven.plugins maven-dependency-plugin   unpack-cfg-test-resources  unpack-dependencies  generate-test-resources  ${project.build.directory}/test-resources cfg_dev ${project.groupId} true pom test      

Надеюсь, это понятно, и это поможет вам 🙂

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

Если у вас нет конкретных требований к упаковке (включая, исключая и т. Д.), Это не потребует дополнительной настройки: просто поместите свои данные в каталог src/main/resources вашего проекта.

Этот подход имеет дополнительное преимущество при работе без изменений при вызове из среды IDE, такой как Eclipse.

Если вы когда-нибудь захотите сделать что-то подобное из командной строки (например, из сценария без записи файла pom.xml ), вот как это сделать …

Вы можете указать отдельные свойства:

 mvn dependency:copy -DgroupId=org.apache.maven -DartifactId=maven-core -Dversion=2.2.1 -Dpackaging=zip -Dclassifier=thisistheattachedartifactsclassifier 

Или укажите их все в одном параметре artifact :

 mvn dependency:copy -Dartifact=org.apache.maven:maven-core:2.2.1:zip:thisistheattachedartifactsclassifier 

В последнем случае важно сохранить classifier в конце после атрибута packaging/type . -Dartifact=groupId:artifactId:version:type:classifier : -Dartifact=groupId:artifactId:version:type:classifier

Вы также можете указать целевой каталог, используя параметр -DoutputDirectory= если это необходимо.

  • Простой способ распаковать ZIP-файл с помощью zlib
  • Чтение содержимого из файлов, находящихся внутри Zip-файла
  • Zip в отдельные файлы
  • Сжать большой CSV-фильтр? (500MB)
  • Что такое zip (функциональное программирование?)
  • Устанавливается ли Windows 7 в командной строке по умолчанию?
  • Как создать отдельные zip-файлы для каждого выбранного файла / каталога в 7zip?
  • Как предотвратить зашифрованные пароли zip-файлов 7-Zip от хранения на жестком диске?
  • Как отключить встроенную функцию zip для Windows
  • Как загрузить / проверить проект из Google Code в Windows?
  • Ошибка при копировании файлов с символами Unicode в именах с помощью папки «Отправить в сжатую (сжатую) папку Win7»
  • Interesting Posts
    Давайте будем гением компьютера.