46 votes

Jetty Run War en utilisant uniquement la ligne de commande

Est-il possible d'utiliser uniquement la ligne de commande pour exécuter jetty avec seulement un war et Context Path.

Quelque chose comme :

java -jar $jettyHome/start.jar -Dwar.location=myApp.war -DcontextPath=/myApp OPTIONS=default,plus,jsp

1 votes

L'insigne du Tumbleweed et finalement la fameuse question pour celui-ci !

50voto

rado Points 1709

Utilisez le coureur de jetée .

 java -jar jetty-runner.jar my.war

Avec Maven, vous pouvez effectuer l'installation en ajoutant à votre fichier pom.xml :

<build>
    ...
    <plugins>
        ...
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-dependency-plugin</artifactId>
            <version>2.3</version>
            <executions>
                <execution>
                    <phase>package</phase>
                    <goals><goal>copy</goal></goals>
                    <configuration>
                        <artifactItems>
                            <artifactItem>
                                <groupId>org.mortbay.jetty</groupId>
                                <artifactId>jetty-runner</artifactId>
                                <version>7.5.4.v20111024</version>
                                <destFileName>jetty-runner.jar</destFileName>
                            </artifactItem>
                        </artifactItems>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

Cours :

mvn package

Et utiliser comme :

java -jar target/dependency/jetty-runner.jar target/*.war

http://www.eclipse.org/jetty/documentation/current/runner.html

http://central.maven.org/maven2/org/eclipse/jetty/jetty-runner/

0 votes

De même, pour tomcat, il y a webapp-runner : github.com/jsimone/webapp-runner

0 votes

Je ne sais pas pourquoi, mais ça donne java.lang.NoClassDefFoundError: org/apache/tomcat/util/IntrospectionUtils erreur. Est-ce que c'est lié ?

7voto

mckamey Points 7215

J'ai écrit une minuscule application en ligne de commande / archétype Maven qui fonctionne comme je pensais que tout cela aurait dû être fait au départ. L'application bootstrap vous permet de lancer le conteneur de servlet de votre choix (Jetty, Tomcat, GlassFish) en lui passant simplement le chemin vers le WAR et votre port.

En utilisant Maven, vous pouvez créer et empaqueter votre propre instance de cette application simple :

mvn archetype:generate \
    -DarchetypeGroupId=org.duelengine \
    -DarchetypeArtifactId=war-bootstrap-archetype \
    -DarchetypeVersion=0.2.1

Puis vous le lancez comme ceci :

java -jar bootstrap.jar -war myapp.war -p 8080 -c /myapp --jetty

Voici la source pour l'utilitaire et l'archétype : https://bitbucket.org/mckamey/war-bootstrap

0 votes

L'URL de bitbucket est cassée ou les permissions ont été supprimées

4voto

tokland Points 29813

Utilisation de jetty-runner-minimal :

$ git clone https://github.com/kissaten/jetty-runner-minimal
$ cd jetty-runner-minimal
$ mvn package

$ wget https://tomcat.apache.org/tomcat-7.0-doc/appdev/sample/sample.war
$ java -jar target/dependency/jetty-runner.jar sample.war

2voto

Tim Points 3652

C'est possible, si vous avez mis en place la configuration de démarrage appropriée (jetty.xml).

En l'état, jetty n'est pas livré avec un fichier jetty.xml qui fait cela, mais vous pouvez en écrire un assez facilement.

Cela voudrait dire que soit vous

  1. Avoir une ligne de commande qui était plus comme

    java -jar $jettyHome/start.jar -Dwar.location=myApp.war -DcontextPath=/myApp jetty-myapp.xml

    o

    java -jar $jettyHome/start.jar -Dwar.location=myApp.war -DcontextPath=/myApp etc/jetty.xml etc/jetty-plus.xml jetty-deploy-app.xml
  2. Remplacez vous-même le fichier etc/jetty.xml et mettez-y les informations que vous voulez.

Le démarrage de Jetty est assez simple, il s'agit donc simplement de produire un fichier XML qui fait ce que vous voulez. Ce fichier XML peut lire les valeurs des propriétés du système, ce qui vous permet d'utiliser vos diverses options "-D".

0 votes

Par "mettre les informations que vous voulez dans [ect/jetty.xml]", cela signifie-t-il que je pourrais configurer etc/jetty.xml avec les propriétés du système passées en ligne de commande, et ensuite être capable d'exécuter *n'importe quel& fichier war sur ma boîte avec une seule commande, ou la configuration serait-elle pour un war spécifique ?

0 votes

Oui, cela devrait être possible. Je ne l'ai pas encore fait, il y a donc peut-être des obstacles que je n'ai pas pris en compte, mais le format de configuration XML de Jetty vous permet de faire à peu près tout ce dont vous avez besoin, donc je ne vois pas pourquoi cela ne fonctionnerait pas. Si j'ai le temps, j'essaierai de le faire moi-même.

2voto

Alisher Gulov Points 41

Installer maven à partir de la ligne de commande :

sudo apt install maven

Exécuter war depuis la ligne de commande dans le dossier où se trouve pom.xml :

mvn jetty:run-war

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X