Я создал плагин Maven (называемый unpackTemplates), который распаковывает файл jar зависимости и копирует с него файлы ресурсов (в данном случае, шаблоны) в определенное место в проекте.Могу ли я использовать maven-артефакт для запуска плагина maven при его установке?
В настоящее время я помещаю следующее в файл pom каждого проекта, который имеет зависимость от шаблонов. Он выглядит так:
<project>
<groupId>DuriansAreDope</groupId>
<artifactId>DuriansAreDope</artifactId>
<version>0.0.1-SNAPSHOT</version>
<build>
<plugin>
<groupId>mycorp</groupId>
<artifactId>unpackTemplates</artifactId>
<version>1.0</version>
<executions>
<execution>
<configuration>
<groupId>com.mycorp.lib</groupId>
<version>1.0</version>
<artifactId>Lib-With-Templates</artifactId>
</configuration>
<goals>
<goal>unpackTemplates</goal>
</goals>
<phase>generate-sources</phase>
</execution>
</executions>
</plugin>
<pluginManagement>....</pluginManagement>
</build>
<dependencies>
<dependency>
<groupId>com.mycorp.lib</groupId>
<artifactId>Lib-With-Templates</artifactId>
<version>1.0</version>
</dependency>
</dependencies>
</project>
Вышеупомянутый проект pom работает для нас. Он вызывает плагин, а плагин - это работа. Тем не менее, мы хотели бы избежать добавления раздела плагина к pom каждого проекта.
Было бы разумнее разместить этот раздел плагина в зависимостях pom. Таким образом, проект pom не нуждается в модификации, за исключением добавления тегов <dependency>
, как обычно. И у зависимостей есть плагин, где он установлен.
Я видел, что файл pom для Gson содержит раздел <build><plugins>...</plugins></build>
. Однако, когда я предоставляю свои зависимости следующие файлы pom, плагин не запускается (хотя зависимость найдена, загружена, установлена и т. Д.).
<project>
<groupId>com.mycorp.lib</groupId>
<artifactId>Lib-With-Templates</artifactId>
<version>1.0</version>
<build>
<plugin>
<groupId>mycorp</groupId>
<artifactId>unpackTemplates</artifactId>
<version>1.0</version>
<executions>
<execution>
<configuration>
<groupId>com.mycorp.lib</groupId>
<version>1.0</version>
<artifactId>Lib-With-Templates</artifactId>
</configuration>
<goals>
<goal>unpackTemplates</goal>
</goals>
<phase>generate-sources</phase>
</execution>
</executions>
</plugin>
<pluginManagement>....</pluginManagement>
</build>
</project>
Любые идеи о том, что я делаю неправильно, или если поместье Gson просто делает что-то еще совсем?
(NB: Идентификаторы groupId/version/artifactIds в <configuration>
необходимы, потому что они являются (строковыми) параметрами для плагина, предположительно, если бы я работал под управлением прямой зависимости от работы, я мог бы реорганизовать их, но снова , это даже не запущена запутано версии с параметрами)
Помимо вашего плагина, вы знаете, что этот [плагин уже существует?] (Http://maven.apache.org/plugins/maven-remote-resources-plugin/examples/sharing-resources.html). Может быть, я что-то недооцениваю, но я не уверен, что именно ваша проблема? Потому что вы написали «Было бы разумнее, если бы библиотека узнала, что последний шаг ее установки - запустить плагин», но о какой библиотеке вы говорите. Может быть, вы можете уточнить это немного больше. – khmarbaise
Спасибо @khmarbaise. Мы нашли плагин maven «unpack», но не «удаленные ресурсы», с которыми вы связались. Судя по структуре параметров, я бы сказал, что они оба делают схожие вещи: копировать файлы из зависимости в ваш проект. Однако нам нужно больше контролировать файлы: нам нужно переименовать их и удалить их в определенных местах. – aarondev
@khmarbaise: Чтобы рассказать об этом последнем бите: вместо добавления в проект плагина к плагину мы хотели бы добавить его к самой зависимости. Мы надеемся, что это означает, что плагин запускается везде, где установлена зависимость, без проекта, который должен знать о плагине или как его вызвать. – aarondev