Ситуация такая: Есть maven проект, в нем несколько модулей (так нужно), есть класс с методом main(), в котором вызываются определенные методы, но это не суть. Я мало знаком с maven'ом, но мне нужно создать запускаемый jar файл этого проекта. Я работаю в intellij idea, чтобы создать jar я выполняю maven: clean + install, у меня создалось 3 папки target в каждом модуле. Метод main() находиться в модуле calc-console.
В консоли я выполняю java -jar calc-console-1.0-SNAPSHOT.jar
и получаю no main manifest attribute in calc-console-1.0-SNAPSHOT.jar.
Может у меня проблема с pom.xml? Родительский pom я не трогал, а во внутренних pom я указывал только зависимости между модулями (не считая того, что уже было изначально сгенерировано).
JVM понятия не имеет, в каком именно классе есть метод main
, ей надо подсказать. В тексте ошибки даже написано, как это сделать: нужно в манифесте определить атрибут Main-Class
, в значении которого будет полное имя класса. Чтобы Maven сгенерировал этот атрибут автоматически, нужно добавить в pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
...
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.1.1</version>
<configuration>
<archive>
<manifest>
<mainClass>ЗДЕСЬ ДОЛЖНО БЫТЬ ИМЯ КЛАССА</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
</plugins>
</build>
</project>
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Виртуальный выделенный сервер (VDS) становится отличным выбором
Необходимо узнать в рантайме откуда выполняется обращение, к элементам определенного пакета (comdata
Не инициализирует SimpMessagingTemplate