Это зависит. По умолчанию ответ - да, он не содержит этой информации.
Но Maven можно настроить так, чтобы он содержал эти вещи. Чтобы также включить зависимости, можно использовать плагин Maven Assembly и привязать его к фазе пакета с параметром jar-with-dependencies
, либо использовать плагин Maven Shade (также привязанный к фаза пакета). Они похожи, хотя я предпочитаю плагин Shade, так как он поддерживает так называемые преобразователи, которые могут обойти некоторые проблемы, возникающие при объединении нескольких jar-файлов в один.
Чтобы основной класс был определен как точка входа, вы можете настроить плагин компиляции Maven:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.3.1</version>
<configuration>
<archive>
<manifest>
<mainClass>my.main.Class</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
</plugins>
</build>
Если настроено так, вам не нужно вызывать java -cp my.jar my.main.Class arguments
, но вы можете просто вызвать его как java -jar my.jar arguments
. Если у вас все еще есть дополнительные зависимости, вы бы назвали их с java -jar my.jar -cp dependencies/*.jar arguments
.