2010-08-02 71 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