2015-06-11 33 views
10

Czy istnieje sposób dodania dowolnego wpisu klasy clas do pliku JAR manifest przy użyciu onejar-maven-plugin?Jak ustawić dodatkowe wpisy Ścieżki Klasy w manifeście za pomocą wtyczki onejar Maven?

Znalazłem drogę do configure maven-jar-plugin to do this, ale wygląda na to, że nie ma takiej opcji dla onejar-maven-plugin.

Nie można tego zrobić, aby znaleźć dodatkowe klasy (w przeciwnym razie po co używać wtyczki onejar, prawda?), Ale raczej zlokalizować plik konfiguracyjny, który musi być zewnętrzny dla JAR.

Czy istnieje bezpośrednie rozwiązanie lub obejście tego problemu?

Odpowiedz

5

Czy użycie wtyczki z jednym językiem jest naprawdę wymagane? Możesz osiągnąć ten sam cel (pakowanie w jedną słoik w aplikacji i wszystkie wymagane zależności, w tym przechodnie, i dodawanie konfiguracji dla ścieżki klasowej i używanie bardziej stabilnej/standardowej wtyczki), stosując następujące podejście:

  • skonfigurować wpis Class-Path w Jar aplikacji z użyciem słoika Plugin Maven i approach wspomniał pan w pytaniu
  • Skorzystaj z Maven Assembly Plugin na jeden pakiet pojedynczego JAR tym zależnościami, jak wyjaśniono here w innym stackoverflow pytanie/odpowiedź.

Przykładem jeden słoik pliku wykonywalnego (bez użycia wtyczki jedna JAR) może być następujący:

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-jar-plugin</artifactId> 
      <configuration> 
       <!-- your further configuration here --> 
      </configuration> 
     </plugin> 
     <plugin> 
      <artifactId>maven-assembly-plugin</artifactId> 
      <configuration> 
       <archive> 
        <manifest> 
         <mainClass>com.sample.MainApp</mainClass> 
         <!-- your further configuration here --> 
        </manifest> 
       </archive> 
       <descriptorRefs> 
        <descriptorRef>jar-with-dependencies</descriptorRef> 
       </descriptorRefs> 
      </configuration> 
      <executions> 
       <execution> 
        <id>make-assembly</id> 
        <phase>package</phase> 
        <goals> 
         <goal>single</goal> 
        </goals> 
       </execution> 
      </executions> 
     </plugin> 
    </plugins> 
</build> 

Jeśli chcesz dalej grać ze ścieżki klasy i Maven, chciałbym zaproponować, aby również sprawdź to pytanie here na stackoverflow.

3

Adding arbitrary manifest entries jest możliwe w 1.4.5:

<plugin> 
    <groupId>org.dstovall</groupId> 
    <artifactId>onejar-maven-plugin</artifactId> 
    <version>1.4.5</version> 
    <executions> 
     <execution> 
      <configuration> 
       <manifestEntries> 
        <Build-Status>Yes</Build-Status> 
       </manifestEntries> 
      </configuration> 
      <goals> 
       <goal>one-jar</goal> 
      </goals> 
     </execution> 
    </executions> 
</plugin> 

onejar-maven-plugin projekt nie wydaje się być w aktywnego rozwoju anymore, więc warto, aby przejść do innych rozwiązań (np maven-assembly-plugin) ostatecznie.


Wtyczka nie jest dostępna w Maven Central. Ktoś inny wystawił jej wersję Maven Central with a different group ID.

0

Dodatkowe biblioteki można dodać do ścieżki klas podczas jej uruchamiania. Nieruchomość jedną jar.class.path można stosować

jedną jar.class.path
Dodatkowe zmiennymi CLASSPATH być dodawane do środowiska wykonawczego. Użyj niezależnego od platformy separatora ścieżek '|'

przykład: --one-jar.class.path = "./ lib/two.jar | /opt/lib/three.jar"

Źródło: http://one-jar.sourceforge.net/index.php?page=details