Пишем плагин для Maven

Есть у меня на некоторых maven-проектах профиль, с помощью которого производится копирование shared-библиотек с последующим перезапуском сервера Tomcat.Maven profiledeploy-depsmaven-dependency-pluginpackagecopy-dependenciestrueисключаем некоторые группы, попадающие в war-архивorg.codehaus.mojoexec-maven-plugin05-stop-tomcatpackageexec-ssh-4-agent-i${putty.key}${ssh.user}@${ssh.host}${tomcat.dir.root}/bin/shutdown.shplink10-clean-shared-jarspackageexec-ssh-4-agent-i${putty.key}${ssh.user}@${ssh.host}rm-Rf${tomcat.dir.shared}/*.jarplink15-upload-shared-jarspackageexec-scp-4-agent-i${putty.key}${project.build.directory}/dependency/compile/*.jar${ssh.user}@${ssh.host}:${tomcat.lib.shared}/pscp20-start-tomcatpackageexec-ssh-4-agent-i»${putty.key}»${ssh.user}@${ssh.host}bin/startup.shplinkотходя в сторону, поведаю для чего сей профильВ части проектов используется связка Nginx+Tomcat. Для данной связки реализовано следующее: Для всего статичного контента используется некий каталог за пределами webapps. В этот каталог «смотрит» Nginx и отдаёт по web-пути »/static/*» Все shared java-библиотеки (редко изменяемые) грузятся в каталог ${catalina.home}/shared, и в Tomcat в файле conf/catalina.properties настроена для этого переменная «shared.loader» Для каждого инстанса Tomcat создан свой системный пользователь Для доступа по SSH используются ключи и у каждого разработчика он свой Соответственно, загрузка статичного контента и shared-библиотек это отдельные профили. Всё остальное собирается в war-архив и устанавливается через стандартный web-manager Tomcat-а. А чтобы не плодить конфигураций, используется PAgent, в который уже и добавленые нужные нам private keys. Они же используются для подключения через Putty Лежит себе профиль в pom.xml, не кусается вроде бы, даже пашет потихоньку на благо программера, но вот только есть в нём пара «минусов» — занимает много места при развёрнутом pom.xml да ещё и в новые проекты приходится вставлять. И если от второго минуса можно избавиться написав шаблон в *моя любимая IDE* или свой архетип наваять, то от первого минуса не так-то просто избавить. Точно ли не так просто? может «обернём» этот профиль в виде плагина для Maven? Сказано, сделано.Читать дальше →

© Habrahabr.ru