Un Ressort d'Amorçage de projets, déployer pour à la fois JAR ou WAR
Est-il un moyen d'avoir un seul et unique Ressort de Démarrage de projet packagable en POT et de la GUERRE sans en changer le pom.xml
ou la source de l'application?
J'ai lu La conversion d'un Printemps de Démarrage JAR de l'Application d'une GUERRE, mais il convertit le projet à la GUERRE, et il perd la capacité à être conditionné en POT.
Je ne m'attends pas mvn package
de faire les deux. Ce que je veux, c'est quelque chose comme mvn i-want-a-jar
et il serait package du projet que le POT. Ou j'ai pu courir mvn i-want-a-war
et il serait package du projet que la GUERRE.
Est-ce possible?
- pas dans le même projet.
- Je d'accord avec cette question. J'ai passé une heure à essayer de faire de mon exécutable jar travail avant que j'ai réalisé que je pouvais utiliser l'exécutable GUERRE fine; tout le monde n'arrêtait pas de dire exécutable JAR dans les docs j'ai donc pensé que j'avais besoin d'un 🙁
Vous devez vous connecter pour publier un commentaire.
Quel est le problème avec un fichier WAR qui est de l'exécutable? N'est-ce pas ce que vous avez vraiment besoin?
P. S. comme
java -jar name.war
java -jar name.war
? Quand je l'ai essayer avec l'exemple Hello World je obtenirjava.lang.NoClassDefFoundError: hello/Application
spring-boot-maven-plugin
.java -jar name.war
travaillé après je les inclus.J'ai réussi à le faire en ajoutant
à la POM fichier, puis définir les différents profils pour le POT et la GUERRE:
Maintenant
mvn package -P war
produit une GUERRE etmvn package -P jar
produit un BOCAL.Une autre option est de créer des modules séparés pour POT et de la GUERRE, mais je n'ai pas aller dans cette voie.
<activation><activeByDefault>true</activeByDefault></activation>
le profil que vous souhaitez exécuter en tant que par défaut, de sorte que vous n'avez pas à définir la-P
drapeau.packaging.type
dans les principaux pom.xml's<properties>
section.Nous avons récemment eu une demande similaire, où un existant Printemps Démarrage en fonction du projet qui a été à l'origine, emballés comme un exécutable Jar nécessaires à l'appui de Tomcat et de WildFly déploiements.
En raison de certaines dépendances utilisés dans ce projet (par exemple WebJars), un simple interrupteur à la GUERRE paquet n'était pas une option, car certains de ces dépendances ont été nécessaires pour WildFly (VFS l'appui), mais pas pour d'autres déploiement.
La solution a été de restructurer le projet de modules dans une manière qui de base module de contenu le projet, mais sans avoir le Printemps de Démarrage du plugin appliquée, alors que plusieurs paquet modules dépendra de de base module et configurer le déploiement artefact spécificités (Démarrage et autres plugins, le déploiement des dépendances spécifiques etc.).
De cette façon, le projet de construire a été en mesure de générer de déploiement multiples artefacts (Démarrage de l'exécutable JAR, traditionnelle de la GUERRE et de WildFly spécifique de la GUERRE) dans une construction unique exécuter.
Dans le cas où quelqu'un trouve cela utile, le projet d'exemple pour démontrer l'approche est disponible sur Github. Le projet peut être construit par Gradle ou Maven.