Normalnie w aplikacjach typu serwer (np. w tomcat) to sie robi tak, ze masz katalog z aplikacja, w nim katalogi:
bin - skrypty uruchomieinowe itp, np. run.sh - tutaj ustalane jest classpath, jakies opcje typu katalog z logami, obrazkami...
lib - wszystkie jary: glowny jar aplikacji plus zaleznosci
conf - jakies zewnetrzne pliki konfiguracyjne, ktore jako parametr przekazywane sa plikacji za pomoca skryptu bin/run.sh
logs, tmp, work, cokolwiek
taki skrypt run.sh dziala mniej wiecej tak:
- sprawdza czy jest zainstalowana java i jak ja odpalic; najczesciej sprawdza czy jest JAVA_HOME, jak nie to sprawdza czy w zmiennej srodowiskowej PATH jest gdzies java
- tworzy zmienna ktora trzyma classpath poprzez wylistowanie katalogu ../lib (.. bo run.sh jest w bin)
x. przerabia opcje, sprawdza czy jest zdefinionwane JAVA_OPTS, CATALINA_OPTS (tomcat), GRADLE_OPTS (gradle), MAVEN_OPTS (maven), ... i ewentualnie dodaje je do wywolanego polecenia
- startuje jave znaleziona w #1 z classpath z #2, ewentualnie z opcjami z #x.
Tych krokow moze byc o wiele wiecej. Jesli nie potrzebujesz zadnej takiej konfiguracji ani nie chcesz pliku sh czy tam bat, a raczej uruchamialnego dwuklikiem jara, to w META-INF/MANIFEST.MF musisz miec dodany atrybut Class-Path ktory listuje twoje jary (pluginy mavenowe to potrafia same generowac) oraz jakies defaulty co do konfiguracji ktore nie sa wymagane jako argumenty do wywolania javy / aplikacji.
Sa jeszcze opcje ze mozna napisac execa, spakowac jave i wszystko do jednego jara (duzo wazy) lub nawet execa, itp. itd. W sumie za malo powiedzialas - nie wiemy jaki to typ aplikacji, czy ma lazic na wielu systemach czy tylko na jednym slusznym, czy sa konfigi i inne cuda wianki.