Строительная банка с maven-scala-plugin - PullRequest
11 голосов
/ 02 августа 2010

Я создал приложение 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? где? Или мне нужно иметь свойство mainclass где-нибудь в pom.xml?

Обновление: Я создал файл 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 я вижу новую банку. Я проверил 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 Я обнаружил, что теперь в банке есть два файла manifest.mf. MANIFEST.MF и META-INF / MANIFEST.MF Я переместил свой собственный файл MANIFEST.MF в только что созданную папку META-INF (в src / main / resources), но теперь mvn package переопределяет ее при создании jar ...

Ответы [ 2 ]

14 голосов
/ 02 августа 2010

После создания нового проекта maven с использованием простого архетипа scala-archetype (простой проект, который печатает «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>

для класса test.App для запуска по желанию при вызове с помощью команды

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

После запуска команды

mvn package
0 голосов
/ 02 августа 2010

Вы можете запустить банку таким образом

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

...