2015-10-12 2 views
1

У нас был парень, который работал с нами, который использовал плагин maven-assembly-plug-in для упаковки всех зависимостей. С тех пор он покинул компанию, и я пытаюсь понять, как он это сделал. Я только сейчас узнаю о maven-assembly-plugin.Начало работы с плагином сборки Maven с многомодульным проектом

Наши приложения разбиты на проект Maven POM с соответствующими проектами модулей. В следующем примере я включил проект модуля времени выполнения. Я попытался создать проект модуля под названием runtime в своем приложении, но в тот момент, когда я вносил какие-либо изменения, он теряет связь с родительским проектом.

Мы используем Netbeans.

+- pom.xml 
+- Simulator 
    +- pom.xml 
+- comms 
    +- pom.xml 
    +- src 
     +- main 
      +- java 
+- framework 
    +- pom.xml 
    +- src 
     +- main 
      +- java 
+- core 
    +- pom.xml 
    +- src 
     +- main  
      +- java 

Это то, что я хочу создать:

+- runtime 
    +- pom.xml 
    +- src 
     +- assemble 
      +- assembly (xml file) 
    +- target 
     +- Simulator 
     +- archive-tmp  
     +- classes  
     +- test-classes  
     +- Simulator (zip file) 
    +- config 
    +- data 
    +- scripts 

После этого немного больше исследований, я думаю, что я мог бы поставить телегу впереди лошади. У меня уже есть основной проект, включающий проекты модулей.

  1. Так что же представляет собой первый следующий шаг?
  2. Создать файл дескриптора сборки?
  3. Редактировать мой основной файл pom, чтобы быть родителем?

Ниже приведены некоторые полезные вопросы и ответы, но я все еще смущен. Может кто-нибудь, пожалуйста, скажите мне, что делать сначала?

Maven assembly on multi module project with special structure

How to use Maven assembly plugin with multi module maven project

EDIT:

Я понял, почему модуль исчезал из моего основного проекта. Netbeans !! Я перезапустил его, и мой модуль времени исполнения был там.

Итак, теперь мне нужно отредактировать мой файл POM в модуле времени выполнения?

+0

Итак, что именно задает вопрос? – khmarbaise

+0

Что такое первый шаг? Создать файл дескриптора сборки? Или изменить мой основной файл pom, чтобы быть родителем? Или файл дескриптора устанавливает родительский? Я смущен тем, что мне нужно делать и что обрабатывается плагином. – Patricia

+0

Что бы вы хотели изменить? – khmarbaise

ответ

2

Если я правильно прочитал ваш вопрос, вам нужно добавить новый модуль Maven (называемый runtime) в существующий проект и использовать maven-assembly-plugin в этом новом проекте для его упаковки.

Первым шагом является создание модуля Maven. Я не уверен, если Netbeans предоставляет средство, чтобы сделать это (Eclise делает), но все сводится к:

  • в <modules> части родительского POM, добавить новый <module> для runtime.
  • создать новую папку с именем runtime на том же уровне каталогов родительского POM
  • создать файл pom.xml внутри этой новой папке объявляющего корневой POM как родительский POM, как это:

    <parent> 
        <groupId>...</groupId> 
        <artifactId>...</artifactId> 
        <version>...</version> 
    </parent> 
    

Затем вам нужно настроить maven-assembly-plugin на упаковку этого нового модуля. Это делается с помощью дескриптора сборки, формат которого равен documented here.

Чтобы дать вам то, чтобы начать с, рассмотрим следующую конфигурацию POM и сборки дескриптора, который будет упаковать все, что находится под config, data и scripts в виде архива:

<plugin> 
    <artifactId>maven-assembly-plugin</artifactId> 
    <version>2.6</version> 
    <executions> 
     <execution> 
      <id>make-assembly</id> 
      <phase>package</phase> 
      <goals> 
       <goal>single</goal> 
      </goals> 
      <configuration> 
       <descriptors> 
        <descriptor>src/assemble/assembly.xml</descriptor> 
       </descriptors> 
      </configuration> 
     </execution> 
    </executions> 
    </plugin> 

с assembly.xml:

<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3 http://maven.apache.org/xsd/assembly-1.1.3.xsd"> 
    <id>distribution</id> 
    <formats> 
     <format>zip</format> 
    </formats> 
    <fileSets> 
     <fileSet> 
      <directory>config</directory> 
      <outputDirectory>/config</outputDirectory> 
     </fileSet> 
     <fileSet> 
      <directory>data</directory> 
      <outputDirectory>/data</outputDirectory> 
     </fileSet> 
     <fileSet> 
      <directory>scripts</directory> 
      <outputDirectory>/scripts</outputDirectory> 
     </fileSet> 
    </fileSets> 
</assembly> 

После запуска mvn clean install на родительском ПОМ, почтовый файл будет создан в рамках target директории модуля runtime. Он будет содержать 3 указанных папки.

+0

Tunaki: Большое вам спасибо за четкие инструкции. Вы знаете, как попытка узнать что-то подобное может быть очень подавляющей и запутанной. :-) – Patricia

Смежные вопросы