Вставьте зависимую банку в банку установщика - PullRequest
1 голос
/ 27 ноября 2008

У меня есть многомодульный проект maven с подпроектом установщика. Установщик будет распространяться в виде исполняемого файла JAR. Он установит БД и извлечет файл WAR на сервер приложений. Я бы хотел использовать maven для сборки этой банки следующим образом:

/ META-INF / MANIFEST.MF
/com/example/installer/Installer.class
/com/example/installer/...
/server.war

В манифесте будет запись основного класса, указывающая на класс установщика. Как я могу заставить Мэйвена построить банку таким способом?

1 Ответ

3 голосов
/ 30 ноября 2008

Вы можете собрать банку, используя Плагин Maven Assembly .

Во-первых, вам нужно добавить некоторую информацию в ваш раздел pom.xml plugins , чтобы сделать исполняемый файл jar:

<plugin>
  <artifactId>maven-assembly-plugin</artifactId>
  <configuration>
    <archive>
      <manifest>
        <mainClass>com.example.installer.Installer</mainClass>
      </manifest>
    </archive>
  </configuration>
</plugin>


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

<assembly>
  <id>installer</id>

  <formats>
    <format>jar</format>
  </formats>

  <baseDirectory></baseDirectory>

  <dependencySets>
    <dependencySet>
      <outputDirectory>/</outputDirectory>
      <includes>
        <!-- this references your installer sub-project -->
        <include>com.example:installer</include>
      </includes>
      <!-- must be unpacked inside the installer jar so it can be executed -->
      <unpack>true</unpack>
      <scope>runtime</scope>
    </dependencySet>
    <dependencySet>
      <outputDirectory>/</outputDirectory>
      <includes>
        <!-- this references your server.war and any other dependencies -->
        <include>com.example:server</include>
      </includes>
      <unpack>false</unpack>
      <scope>runtime</scope>
    </dependencySet>
  </dependencySets>
</assembly>


Если вы сохранили дескриптор сборки как "installer.xml", вы можете собрать jar, запустив сборку следующим образом:

сборка чистого пакета mvn: single -Ddescriptor = installer.xml


Надеюсь это поможет. Вот несколько дополнительных ссылок, которые могут оказаться полезными:

...