2016-08-11 3 views
1

Я создаю свой собственный maven-environment-plugin, который создает и связывает ресурсы для предопределенной структуры папок для каждой среды, определенной в конфигурации. Плагин выводит структуру папок и ресурс в zip-файле и помещает его в целевую папку.Как сделать zip-файлы (созданные самодельным плагином maven) из целевой папки в конечном итоге в локальном репозитории?

Вопросы:

  • Как я могу сделать мой плагин работы как maven-assembly-plugin поэтому мой выход на целевую папку, также заканчивается в моем локальном хранилище, когда я использую "МВН установить?
  • Должен ли я отметить его или что-то в этом роде? Его автоматически выполняет это, когда используется maven-assembly-plugin.
  • Как сделать maven-assembly-plugin убедиться в этом?

Я использую mojo для разработки моего плагина.

<plugin> 
    <groupId>dk.kmd.devops.maven.plugin</groupId> 
    <artifactId>envconfiguration-maven-plugin</artifactId> 
    <version>1.0.3</version> 
    <configuration> 
     <environments> 
      <environment>${env.local}</environment> 
      <environment>${env.dev}</environment> 
      <environment>${env.t1}</environment> 
      <environment>${env.t2}</environment> 
      <environment>${env.p0}</environment> 
     </environments> 
     <sourceConfigDir>${basedir}/src/main/config</sourceConfigDir> 
     <zipEnvironments>true</zipEnvironments> 
    </configuration> 
    <executions> 
     <execution> 
      <phase>generate-resources</phase> 
      <goals> 
       <goal>generateEnv</goal> 
      </goals> 
     </execution> 
    </executions> 
</plugin> 

ответ

1

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

Это в основном то, что attach-artifact цель build-helper-maven-plugin делает:

Приложить дополнительные артефакты, которые будут установлены и развернуты.

С its official examples, на прикрепление цель:

Обычно после запуска antrun:run или другой плагин, который производит файлы, которые вы хотите прикрепить к проекту для установки и развертывания.

другой плагин в этом случае может быть плагин вы разработали. Следовательно, существует два пути решения Вашего дела:

  • настроить этот плагин, чтобы прикрепить созданный артефакт в качестве дополнительной pom.xml конфигурации или
  • добавить в свой плагин функциональности автоматически прикрепить полученный файл

Второй случай может быть покрыт через API Maven, используя метод MavenProjectHelper и его метод attachArtifact.

В вашей харизмы, вы можете импортировать в качестве компонента с помощью:

/** 
* Maven ProjectHelper 
*/ 
@Component 
private MavenProjectHelper projectHelper; 

Затем использовать вышеупомянутый метод:

projectHelper.attachArtifact(project, "zip", outputFile); 

Вы должны, вероятно, уже есть необходимый Maven зависимость обеспечения, но на всякий случай это будет this one:

<dependency> 
    <groupId>org.apache.maven</groupId> 
    <artifactId>maven-core</artifactId> 
    <version>3.3.9</version> 
</dependency> 

Обратите внимание, что артефакт будет прикреплен к сборке как дополнительный артефакт через classifier, то есть суффикс имени артефакта по умолчанию, отличающего его от артефакта по умолчанию и сделавшего его уникальным как результат сборки.


В качестве ссылки на реальный пример и в дальнейшем ответить на ваш (последний) вопрос, проверьте this запрос на хранилище GitHub maven-plugins, проверка на attachArtifact строк, вы увидите, что он используется в ряде плагин Maven, среди которых maven-assembly-plugin, например here в классе AbstractAssemblyMojo.

+1

Отличный !! Thx много :) Я обязательно поеду на второй случай. Хотите сделать мой плагин независимым от других плагинов. я вернусь – Elias