Per lo scenario standalone, è possibile utilizzare semplicemente Gradle (o Maven) per creare il grasso (ovvero tutte le dipendenze incluso un server Jetty incorporato), il file jar eseguibile. Ecco un semplice file build.gradle
che fa proprio questo:
apply plugin: 'java'
apply plugin: 'application'
// TODO Change this to your class with your main method
mainClassName = "my.app.Main"
defaultTasks 'run'
repositories {
mavenCentral()
}
dependencies {
compile group: 'com.sparkjava', name: 'spark-core', version: '2.5.5'
// TODO add more dependencies here...
}
// Create a fat executable jar
jar {
manifest {
attributes "Main-Class": "$mainClassName"
}
from {
configurations.compile.collect { it.isDirectory() ? it : zipTree(it) }
}
archiveName "app.jar"
}
costruire l'applicazione si sulla riga di comando tramite gradle build
. Questo creerà un file nella cartella app.jar
build/libs
poi basta eseguire:
java -jar build/libs/app.jar
Se si vuole essere davvero aggiornati :) allora dovete usare Docker per confezionare il vostro JRE e vaso di applicazione, quindi non si è dipende dallo stack software installato sul server.Per fare questo possiamo usare un Dockerfile
:
FROM java:8
ADD build/libs/app.jar/
EXPOSE 4567
ENTRYPOINT ["java", "-jar", "app.jar"]
costruire l'immagine finestra mobile ed eseguirlo, ad esempio:
docker build -t myapp:v1 .
docker run --rm --name myapp -p 4567:4567 myapp:v1
Naturalmente, se si desidera utilizzare l'immagine Docker su un server web remoto, è è necessario spostarlo su Docker Hub o su un repository mobile privato e utilizzare docker pull
per estrarlo sul server, prima di eseguirlo.
come si fa a filtrare Jetty dall'essere inclusa in WAR? – voddan