我创建了scala应用程序,现在我想构建jar。
我运行mvn package
而不是尝试按命令运行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 / main / resources / 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
后我看到了新罐子。我在这个jar中检查了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 / main / resources中),但现在mvn package
会在创建jar时覆盖它...
答案 0 :(得分:14)
使用scala-archetype-simple archetype(一个打印'Hello World'的简单项目)创建一个新的maven项目后,我需要将以下内容添加到我的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>
使用命令调用 test.App 类以根据需要运行
java -jar ./target/mytest-1.0-SNAPSHOT-jar-with-dependencies.jar
运行命令后
mvn package
答案 1 :(得分:-1)
你可以这样运行jar
scala -cp target / projectname-1.0-SNAPSHOT.jar