2010-08-02 13 views
11

Creé la aplicación scala y ahora quiero construir jar. corro mvn package que trato de ejecutar el tarro por ordenFrasco de construcción con maven-scala-plugin

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

y veo error:

Failed to load Main-Class manifest attribute from

¿Cómo puedo definir la propiedad principal de clase? ¿Necesito crear Manifest.mf? ¿dónde? O necesito tener una propiedad de mainclass en algún lugar de pom.xml?

Actualización: He creado el archivo src/main/resources/MANIFEST.MF con contenidos

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 

que no se olvidó de final de línea al final del archivo. después de mvn package Veo un nuevo jar. Revisé manifest.mf en este frasco - contiene la derecha de la clase principal, pero cuando escribo java -jar target/burner-1.0-SNAPSHOT.jar todavía veo un error Failed to load Main-Class manifest attribute from

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

ACTUALIZACIÓN 2 descubrí que ahora hay dos archivos manifest.mf en el contenedor. MANIFIEST.MF y META-INF/MANIFEST.MF que se ha llevado mi MANIFIEST.MF personalizada a la recién creada carpeta META-INF (en src/main/resources), pero ahora mvn package anula durante la creación de tarro ...

+0

Se puede publicar una copia de su pom.xml? Debería poder hacer esto dentro de Maven sin recurrir a la creación manual de un archivo de manifiesto. –

+0

He actualizado la publicación. –

+0

Descubrí algunos hechos nuevos y actualicé la publicación. –

Respuesta

14

Después de crear un nuevo proyecto Maven usando el arquetipo scala-arquetipo sencilla (un proyecto simple que imprime 'Hello World '), Necesitaba agregar lo siguiente a mi 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> 

para la clase test.App se ejecute como se desea cuando se invoca con el comando

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

Después de ejecutar el comando

mvn package 
+0

Cuando escribo el paquete mvn veo el error '' single 'se especificó en una ejecución, pero no se encuentra en el pluin' ' –

+0

así que ahora puedo construir el jar de trabajo con el comando mvn assembly: assembly pero necesito ejecutarlo con el comando 'java -cp target/file.jar -DmainClass ru.dmteam.App'. ¿Es posible crear jar con right manifest? –

+0

El componente debe vincular la creación del conjunto a la fase del paquete normal, ¿lo ha incluido en su pom.xml? La entrada debe configurarse para contener el ru.dmteam.App en su caso. –

-1

puede ejecutar el frasco de esta manera

Scala objetivo cp/projectname-1,0-SNAPSHOT.jar

+1

Este comando abre la consola del intérprete scala. –