2010-08-02 6 views
11

J'ai créé une application scala et maintenant je veux construire un pot. Je lance mvn package que je tente d'exécuter jar par commandeCréation d'un pot avec maven-scala-plugin

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

et je vois erreur:

Failed to load Main-Class manifest attribute from

Comment puis-je définir la propriété Main-Class? Ai-je besoin de créer Manifest.mf? où? Ou j'ai besoin d'une propriété mainclass quelque part dans pom.xml?

Mise à jour: J'ai créé src/main/resources/fichier MANIFEST.MF avec le contenu

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 

Je ne faut pas oublier la ligne se terminant à la fin du fichier. après mvn package Je vois le nouveau pot. J'ai vérifié manifest.mf dans ce pot - il contient principale classe droite mais quand je tape java -jar target/burner-1.0-SNAPSHOT.jar je vois encore une erreur Failed to load Main-Class manifest attribute from

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

MISE À JOUR 2 J'ai découvert que maintenant il y a deux fichiers manifest.mf dans le fichier jar. MANIFEST.MF et META-INF/MANIFEST.MF j'ai déplacé mon MANIFEST.MF personnalisé juste créé dossier META-INF (dans src/main/ressources), mais maintenant mvn package l'emporte tout en créant jar ...

+0

Pouvez-vous envoyer une copie de votre pom.xml? Vous devriez être capable de le faire dans Maven sans avoir à créer manuellement un fichier manifeste. –

+0

J'ai mis à jour le post. –

+0

J'ai découvert quelques faits nouveaux et mis à jour le post. –

Répondre

14

Après avoir créé un nouveau projet Maven en utilisant l'archétype scala-archétype simple (un projet simple qui imprime « Bonjour tout le monde '), J'avais besoin d'ajouter ce qui suit à mon 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> 

pour la classe test.App à courir comme désiré lorsqu'il est appelé avec la commande

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

Après avoir exécuté la commande

mvn package 
+0

Quand je tape mvn package je vois erreur "single" a été spécifié dans une exécution, mais pas trouvé dans le plus ' –

+0

alors maintenant je peux construire pot de travail par la commande mvn assembly: assembly mais j'ai besoin de l'exécuter avec commande 'java -cp target/fichier.jar -DmainClass ru.dmteam.App'. Est-il possible de créer un pot avec le bon manifeste? –

+0

Le composant doit lier la création de l'ensemble à la phase normale du paquet, l'avez-vous inclus dans votre fichier pom.xml? L'entrée doit être configurée pour contenir le ru.dmteam.App dans votre cas. –

-1

vous pouvez exécuter le pot de cette façon

scala cible -cp/projectname-1.0-SNAPSHOT.jar

+1

Cette commande ouvre la console interprète scala. –

Questions connexes