2015-01-08 3 views
0

У меня уже есть maven build pom (немного сложный), который создает скомпилированный и подготовленный файл jar для моего проекта. Я копирую этот файл в разные места назначения, используя maven-antrun-plugin, используя копию в разделе целей.Плагин Maven для управления существующим банком

Что я хочу достичь - это изменить файл манифеста (добавить что-нибудь к нему) в каждой копии. Например:

prepared.jar - копия -> /linux/prepared-linux.jar (то же содержание, как prepared.jar, но манифест содержит что-то конкретное Linux)

prepared.jar - копировать в -> /win64/prepared-win64.jar (тот же контент, что и ready.jar, но манифест содержит что-то специфическое для окон)

Я не хочу создавать ready.jar несколько раз, просто скопировать его и изменить манифест в копии. Кто-нибудь знает о каком-то совместимом с maven 3.1 плагином, который способен это сделать, и который легко настраивается и работает на платформах Windows и Linux?

+1

«с использованием Maven-antrun-плагина», то вы, вероятно, можете использовать свой муравей сценарий, чтобы изменить манифест. –

+0

@RC. Я использую antrun, но только для копирования на элемент . Не знаю, как изменить файл jar с помощью ant или как создать скрипт ant вообще. – kulatamicuda

+0

@RC. спасибо и +1, я смог решить это сам после того, как вы указали мне, где посмотреть :) – kulatamicuda

ответ

1

Проводка альтернативы просто ради информации, надеюсь, вы не возражаете. В принципе вы можете достичь того же с помощью Maven-Jar-плагин с несколькими казнями, что-то вроде

<plugin> 
    <artifactId>maven-jar-plugin</artifactId> 
    <executions> 
     <execution> 
      <id>only-library</id> 
      <goals> 
       <goal>jar</goal> 
      </goals> 
      <phase>package</phase> 
     </execution> 
     <execution> 
      <id>linux</id> 
      <goals> 
       <goal>jar</goal> 
      </goals> 
      <phase>package</phase> 
      <configuration> 
       <classifier>linux</classifier> 
       <archive> 
        <index>true</index> 
        <manifest> 
         <addClasspath>true</addClasspath> 
        </manifest> 
        <manifestEntries> 
         <yourKey>linux</yourKey> 
        </manifestEntries> 
       </archive> 
      </configuration> 
     </execution> 
     <execution> 
      <id>win64</id> 
      <goals> 
       <goal>jar</goal> 
      </goals> 
      <phase>package</phase> 
      <configuration> 
       <classifier>win64</classifier> 
       <archive> 
        <index>true</index> 
        <manifest> 
         <addClasspath>true</addClasspath> 
        </manifest> 
        <manifestEntries> 
         <yourKey>win64</yourKey> 
        </manifestEntries> 
       </archive> 
      </configuration> 
     </execution> 
    </executions> 
</plugin> 
+0

приятное решение :) – kulatamicuda

1

Итак, наконец, я смог решить это самостоятельно на основе комментария от @RC. и посмотрев здесь Simpliest way to add an attribute to a jar Manifest in Maven решение было добавить что-то вроде в мой файл пом после элемента копирования:

 <jar file="${install.dir}/linux/${program.name}.jar" update="true"> 
      <manifest> 
      <attribute name="my specific linux att" value="my specific linux value" /> 
      </manifest> 
     </jar>             
Смежные вопросы