Использование Maven для создания zip-файла, содержащего исполняемый файл jar с зависимостями - PullRequest
7 голосов
/ 16 сентября 2010

Я пытаюсь создать распространяемый zip-файл моего проекта, который содержит несколько файлов конфигурации и каталогов, а также исполняемый файл jar моего проекта. В плагине сборки Maven я нашел, как сделать исполняемый файл jar с полными зависимостями. Тем не менее, я не смог понять, как создать zip-файл вокруг банки после того, как он был сделан. В идеале я хотел бы переместить банку в каталог, в котором уже есть правильные файлы и подкаталоги, а затем заархивировать все сразу. Есть ли способ сделать это?

редактирование:

Теперь у меня есть фляга и рудиментарная молния. Мой сборочный файл выглядит так:

<assembly>
   <id>financials-import-server</id>
   <formats>
      <format>zip</format>
   </formats>
   <dependencySets>
      <dependencySet>
      </dependencySet>
   </dependencySets>
    <files>
       <file>
          <source>target/import-server-1.0.0-SNAPSHOT.jar</source>
          <destName>service.jar</destName>
          <outputDirectory>/</outputDirectory>
       </file>
    </files>
</assembly>

Я чувствую себя комфортно, включая другие нужные мне файлы, такие как файлы конфигурации или сценарии оболочки. У меня осталось несколько вопросов. Как бы я создал пустые каталоги внутри почтового индекса? Кроме того, как я могу изменить имя файла, который производится?

Спасибо за помощь!

1 Ответ

5 голосов
/ 16 сентября 2010

Сначала используйте плагин Maven JAR для создания исполняемого JAR .

Затем настройте сборку так, чтобы она включала все необходимые файлы (в конечном итоге вы можете добавить файл run.bat / run.sh, который будет запускать приложение), а также все зависимости .

Наконец, свяжите создание сборки с целью вашего пакета в pom.xml:

<build>
  <plugins>
    <plugin>
      <artifactId>maven-assembly-plugin</artifactId>
      <version>2.2-beta-5</version>
      <configuration>
        <descriptors>
          <descriptor>/path/to/my-assembly.xml</descriptor>
        </descriptors>
      </configuration>
      <executions>
        <execution>
          <phase>package</phase>
          <goals>
            <goal>single</goal>
          </goals>
        </execution>
      </executions>
      ...

Таким образом, вам просто нужно будет выполнить одну команду Maven mvn clean install, например, чтобы скомпилировать ваш проект, а затем создать пакет ZIP.

Не стесняйтесь обновить свой вопрос, если мой ответ не соответствует вашим потребностям, и вы также можете указать свои текущие assembly.xml и pom.xml ...

<Ч />

Редактировать

По поводу вашего обновления:

Не думаю, что сборка позволит вам создать пустой каталог. Идея состоит в том, чтобы поместить пустой файл (или readme.txt, например) и включить каталог в окончательный ZIP. Например, в моем проекте я хочу иметь каталог logs/, поэтому в моем проекте есть каталог logs/, который содержит только файл readme.txt:

<fileSets>
    <fileSet>
        <directory>../my-package/logs</directory>
        <outputDirectory>logs/</outputDirectory>
    </fileSet>
</fileSets>

Для имени созданного ZIP-файла вы можете указать его в pom.xml:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-assembly-plugin</artifactId>
            <version>2.2-beta-4</version>
            <configuration>
                <descriptors>
                    <descriptor>my-assembly.xml</descriptor>
                </descriptors>
                <finalName>TheName</finalName>

Если я прав, сборка будет использовать это имя, добавит ID, определенный в файле assembly.xml, и использует префикс, адаптированный к указанному формату.

...