Jena имеет последовательность инициализации, которая используется для настройки компонентов, доступных во время выполнения. (см. здесь )
При создании комбинированного jar ("uber-jar", "fat-jar", "jar with зависимости") из зависимостей Jena и кода приложения, содержимоефайлы Jena должны быть объединены и присутствовать в объединенном jar как одноименный ресурс java. (см. здесь )
Этого можно достичь с помощью плагина maven shade
(обратите внимание, что я больше не использую maven-assembly-plugin
).
При такой конфигурации плагина приложение запускается на сервере:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<configuration>
<shadedArtifactAttached>false</shadedArtifactAttached>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>Main</mainClass>
</transformer>
<transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer" />
<transformer implementation="org.apache.maven.plugins.shade.resource.ApacheLicenseResourceTransformer" />
<transformer implementation="org.apache.maven.plugins.shade.resource.ApacheNoticeResourceTransformer">
<addHeader>false</addHeader>
</transformer>
</transformers>
<filters>
<filter>
<artifact>*:*</artifact>
<excludes>
<!-- Some jars are signed but shading breaks that.
Don't include signing files.
-->
<exclude>META-INF/*.SF</exclude>
<exclude>META-INF/*.DSA</exclude>
<exclude>META-INF/*.RSA</exclude>
</excludes>
</filter>
</filters>
</configuration>
<executions>
<execution>
<phase>package</phase>
<!--<phase /><!- - Switch off -->
<goals>
<goal>shade</goal>
</goals>
</execution>
</executions>
</plugin>
Я использовал конфигурацию из проекта fuseki .
Спасибо@AndyS за указание мне в этом направлении!