2010-08-02 72 views
11

我创建了scala应用程序,现在我想构建jar。 我跑mvn package比我试图通过命令用maven-scala-plugin构建jar

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

运行罐子,我看到错误:

Failed to load Main-Class manifest attribute from

我如何定义Main-Class的财产? 我需要创建Manifest.mf吗?哪里? 或者我需要在pom.xml中的某处有mainclass属性?

更新: 我创建的src /主/资源/ MANIFEST.MF与内容

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 

文件我没有忘记在行文件的最后结局。 后mvn package我看到新的罐子。我在这个罐子检查MANIFEST.MF - 它含有右主级,但是当我输入java -jar target/burner-1.0-SNAPSHOT.jar我仍然看到错误Failed to load Main-Class manifest attribute from

我的pom.xml http://pastie.org/1070483

更新2 我发现,现在有jar中有两个manifest.mf文件。 MANIFEST.MF和META-INF/MANIFEST.MF 我移动定制的MANIFEST.MF刚刚创建的META-INF文件夹(在SRC /主/资源),但现在mvn package重写它同时创造罐子......

+0

你可以发布你的pom.xml的副本后根据需要test.App运行?您应该可以在Maven中执行此操作,而无需手动创建清单文件。 – 2010-08-02 04:57:42

+0

我已更新帖子。 – 2010-08-02 04:58:43

+0

我发现了一些新的事实并更新了帖子。 – 2010-08-02 05:16:40

回答

14

使用斯卡拉 - 原型 - 简单的原型创建一个新的Maven项目(一个简单的项目之后打印的“Hello World '),我需要将以下内容添加到我的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> 

的类时用命令

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

调用运行命令

mvn package 
+0

当我输入mvn包时,我看到在执行中指定了错误''single'',但在pluin'中找不到' ' – 2010-08-02 16:25:43

+0

所以现在我可以通过命令mvn assembly:assembly创建工作jar,但是我需要使用命令'java -cp target/file.jar -DmainClass ru.dmteam.App'。是否有可能创建与右清单jar? – 2010-08-02 16:27:51

+0

组件应该将程序集创建绑定到正常包阶段,是否将它包含在您的pom.xml中? 条目应该配置为包含 ru.dmteam.App您的情况。 – 2010-08-02 20:18:52

-1

你可以运行jar这样

斯卡拉-cp目标/项目名称-1.0-SNAPSHOT.jar

+1

该命令打开scala解释器控制台。 – 2010-08-02 04:39:15