2010-08-02 11 views
11

Stworzyłem aplikację scala i teraz chcę zbudować słoik. biegnę mvn package niż próbuję uruchomić słoika komendąSłoik z maven-scala-pluginem

java -jar target/burner-1.0-SNAPSHOT.jar

i widzę błąd:

Failed to load Main-Class manifest attribute from

Jak mogę określić Main-Class nieruchomość? Czy muszę utworzyć plik Manifest.mf? gdzie? Czy muszę mieć właściwość mainclass gdzieś w pom.xml?

Aktualizacja: Stworzyłem src główne zasoby/file// MANIFEST.MF z treścią

Manifest-Version: 1.0 
Archiver-Version: Plexus Archiver 
Created-By: Apache Maven 
Built-By: itsabear 
Main-Class: ru.dmteam.App 
Build-Jdk: 1.6.0_20 

nie zapomnieć linię kończącą się na końcu pliku. po mvn package Widzę nowy słoik. Sprawdziłem manifest.mf w tym słoiku - zawiera właściwą główne klasy, ale gdy wpisuję java -jar target/burner-1.0-SNAPSHOT.jar wciąż widzę błąd Failed to load Main-Class manifest attribute from

Moje pom.xml http://pastie.org/1070483

UPDATE 2 odkryłem, że obecnie istnieją dwa pliki manifest.mf w słoiku. MANIFEST.MF i META-INF/MANIFEST.MF przeniosłem mój zwyczaj MANIFEST.MF do właśnie utworzonego folderu META-INF (w src/main/zasobów), ale teraz mvn package zastępuje go podczas tworzenia słoik ...

+0

można umieścić kopię pom.xml? Powinieneś być w stanie to zrobić w Maven bez uciekania się do ręcznego tworzenia pliku manifestu. –

+0

Zaktualizowałem wpis. –

+0

Odkryłem kilka nowych faktów i zaktualizowałem wpis. –

Odpowiedz

14

Po utworzeniu nowego projektu maven pomocą archetypu scala-archetyp-simple (prosty projekt, który drukuje „Hello World "), Musiałem dodać następujące elementy do mojego pom.xml

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-assembly-plugin</artifactId> 
    <version>2.2-beta-5</version> 
    <configuration> 
     <descriptorRefs> 
     <descriptorRef>jar-with-dependencies</descriptorRef> 
     </descriptorRefs> 
     <archive> 
     <manifest> 
      <mainClass>test.App</mainClass> 
     </manifest> 
     </archive> 
    </configuration> 
    <executions> 
     <execution> 
     <phase>package</phase> 
     <goals> 
      <goal>single</goal> 
     </goals> 
     </execution> 
    </executions> 
    </plugin> 

dla klasy test.App do uruchomienia w razie potrzeby, gdy wywoływana za pomocą polecenia

java -jar ./target/mytest-1.0-SNAPSHOT-jar-with-dependencies.jar 

Po uruchomieniu komendy

mvn package 
+0

Kiedy napiszę pakiet mvn widzę błąd '' single 'został określony w wykonaniu, ale nie został znaleziony w pluinie' ' –

+0

, więc teraz mogę zbudować działający jar za pomocą polecenia mvn assembly: assembly ale muszę go uruchomić z poleceniem 'java -cp target/file.jar -DmainClass ru.dmteam.App'. Czy można utworzyć słoik z prawym manifestem? –

+0

Komponent powinien powiązać tworzenie zestawu z normalną fazą pakietu, czy umieściłeś go w swoim pliku pom.xml? Wpis powinien być skonfigurowany tak, aby zawierał ru.dmteam.App w twoim przypadku. –

-1

można uruchomić słoika tędy

scala cp target/Nazwa_projektu-1,0-SNAPSHOT.jar

+1

To polecenie otwiera konsolę tłumacza scala. –

Powiązane problemy