Использование Maven для развертывания

У меня есть эта задача для проекта с 4 вложенными подпроектами с использованием Maven:

  1. Для каждого дочернего ресурса: каталог ресурсов jar-up, включая зависимости проекта
  2. Перейти к родительскому проекту
  3. С помощью одной команды извлекайте все созданные архивы в различные удаленные адресаты (полная установка), которые могут включать HTTP-сервер, сервер приложений, файловый сервер и т. Д. (В основном * NIX). Назначение предоставляется на уровне подпроекта
  4. Также должно быть возможно распаковать / скопировать из отдельного подпроекта (частичная установка)

Файлы не Java – в основном различные скрипты и HTML

Я рассматриваю различные плагины, чтобы помочь с задачей: assembly, зависимость, antrun, unzip. Зависимость выглядит многообещающе, но мне нужно разархивировать не только банки зависимостей, но и контент (суб) проекта. Кроме того, поскольку я не могу сильно ограничить работу жизненного цикла Maven, как бы я запускал удаленную установку? mvn зависимость: распаковать? Это не очень описательно или интуитивно понятно. Возможно ли создать пользовательскую цель (например, проект: установить) без написания плагина?

Использование Maven является стандартом компании, поэтому, пожалуйста, не предлагайте альтернативы – я в значительной степени зациклен на том, что у меня есть

Хорошо, я думаю, что следующее может сделать то, что вам нужно. Недостатком этого подхода является то, что между каждым развертыванием будет промежуток, так как выполняется последующая assembly. Это приемлемо?

Определите профиль в каждом проекте с тем же именем (скажем, «публиковать»). Внутри этого профиля вы можете определить конфигурацию для использования antrun-plugin для доставки файлов с FTP (см. Ниже).

В родительском проекте у вас будет элемент модhive, определяющий каждый проект как модуль. Если вы запустите mvn install -P publish , каждый проект будет построен по очереди с включенным профилем публикации, а конечный артефакт будет опубликован для целевой страницы на этапе установки. Если вам нужно развернуть дополнительные файлы, соответствующим образом измените element include.

Обратите внимание, что параметры для задачи FTP заданы как свойства, это позволяет их переопределить из командной строки и / или унаследовать от родительского ПОМ.

   publish  org.apache.maven.plugins maven-antrun-plugin   ftp install           run      commons-net commons-net 1.4.1   ant ant-commons-net 1.6.5   ant ant-nodeps 1.6.5     hostname /opt/path/to/install user mypassword yes no    

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

Используя этот подход, вы можете определить несколько профилей в новом проекте, по одному для каждого артефакта. Каждый профиль определяет зависимость: выполнение копирования, чтобы получить банку и выполнение antrun для одного из проектов. Обычную конфигурацию (такую ​​как зависимости для плагина antrun) можно вытащить из профилей. Также имейте в виду, что свойства будут объединены, если вы определите несколько профилей, поэтому вам может потребоваться квалифицировать их с именем артефакта, например ftp.artifact1.host .

   deploy-artifact1  org.apache.maven.plugins maven-dependency-plugin   copy-dependency prepare-package  copy     name.seller.rich artifact1 1.0.0 jar false   ${project.build.directory}/deploy-staging false      org.apache.maven.plugins maven-antrun-plugin   ftp install         run       hostname /opt/path/to/install user mypassword yes no    

Ниже POM поможет скопировать файл jar из каталога создания проекта на удаленный SFTP / FTP-сервер.

  1. Использовать команду mvn install -Dftp.password = password

Поскольку я хочу передать пароль из командной строки по соображениям безопасности, я использовал -Dftp.password = password. После выполнения вышеуказанной команды все файлы jar из целевой папки проекта maven будут развернуты в папке MAVEN на сервере.com.

   org.apache.maven.plugins maven-antrun-plugin   ftp install           run      org.apache.ant ant-jsch 1.9.4    

Не работает без кодовой фразы.

   publish    maven-antrun-plugin   scp deploy           run      org.apache.ant ant-jsch 1.9.4       

Однако, мой любимый

   upload-devel    maven-antrun-plugin   upload-devel deploy           run        

хотя я не знаю, насколько совместимо это на разных платформах.

Я бы посмотрел на использование maven-assembly-plugin для этого.

Что-то вроде этого можно использовать для захвата файлов из дочерних проектов и заполнения их в выходных каталогах.

  xyzzy  zip    ../subproject1/target/ /foo  *.jar    ../subproject1/target/html-output/ /foo  *.html *.js *.css    ../subproject2/target/ /bar  **/**   **/*.exclude-this     -  xyzzy  zip    ../subproject1/target/ /foo  *.jar    ../subproject1/target/html-output/ /foo  *.html *.js *.css    ../subproject2/target/ /bar  **/**   **/*.exclude-this     в  xyzzy  zip    ../subproject1/target/ /foo  *.jar    ../subproject1/target/html-output/ /foo  *.html *.js *.css    ../subproject2/target/ /bar  **/**   **/*.exclude-this     в  xyzzy  zip    ../subproject1/target/ /foo  *.jar    ../subproject1/target/html-output/ /foo  *.html *.js *.css    ../subproject2/target/ /bar  **/**   **/*.exclude-this     в  xyzzy  zip    ../subproject1/target/ /foo  *.jar    ../subproject1/target/html-output/ /foo  *.html *.js *.css    ../subproject2/target/ /bar  **/**   **/*.exclude-this     

Maven не предназначен для развертывания банок в удаленном месте; его основное использование – сбор и упаковка артефактов. Цели сборки и зависимости в основном используются для сбора зависимостей и файлов для упаковки в артефакт.

Сказав это, у maven есть цель развертывания, которая использует компонент, называемый вагон. Это в первую очередь предназначено для развертывания в репозитории maven. Существует плагин под названием Cargo, который можно использовать для развертывания артефактов на удаленном сервере, но сам по себе он не взрывает содержимое контейнера (он полагается на сервер целевого приложения, чтобы сделать все это). Возможно, вы сможете расширить функциональность Maven Wagon самостоятельно.

Кроме того, можно упаковать пользовательский жизненный цикл, но он попадает в довольно низкоуровневый maven mojo (каламбур).

  • Dll как в бункере, так и в gac, который используется?
  • Объединить msi и exe
  • Какой метод вы используете для развертывания приложений ASP.Net в дикой природе?
  • Лучшие практики ILMerge
  • Ошибка развертывания Heroku H10 (приложение разбилось)
  • Как ссылаться на другую версию dll с помощью MSBuild
  • Определение версии сборки во время события после сборки
  • Выбор устройства для Android - мое устройство кажется офлайн
  • Запуск приложения на основе .net без .NET Framework
  • PhpStorm - преимущества редактирования развернутых файлов напрямую, а также загрузка и синхронизация
  • .war vs .ear file
  • Давайте будем гением компьютера.