printemps de démarrage chargement des pots (les dépendances de l'application et externe du système de fichiers jar)
Je suis à essayer de comprendre quelle est la meilleure façon de configurer un printemps de démarrage de l'application d'une façon telle qu'elle a son propre pot de dépendances, mais d'autres pots sont ajoutés à classpath lors de l'exécution lors de ses cours d'exécution en tant que java-jar commande. Quelle est l'approche qui a plus de sens
-
Utiliser le pot d'origine (sans les dépendances ajoutée) et placez les bocaux (application et d'exécution) dans un dossier sur le système de fichiers et l'utilisation PropertiesLauncher pour spécifier le chargeur.chemin de pots de dossier.
-
Utiliser la graisse pot (avec application des pots) placer les pots supplémentaires sur le système de fichiers et en quelque sorte à inclure ceux que supplémentaire des pots qui doivent être ajoutés à classpath. Pas sûr de savoir comment cela peut être fait.
-
Est-il une autre meilleure façon de le faire
OriginalL'auteur adeelmahmood | 2014-01-24
Vous devez vous connecter pour publier un commentaire.
La
PropertiesLauncher
a été conçu pour fonctionner avec de la graisse de pots, de sorte que vous devriez être en mesure de garder la graisse bocal et ajouter autant de dépendances supplémentaires que vous le souhaitez dans un emplacement externe, par exemple avecloader.path=/opt/app/lib:lib
. Je suppose que c'est votre option 2? Si cela ne fonctionne pas, nous pouvons en discuter dans un github question.$ java -Denv=dev -Dloader.path=jars:. -jar hdfsloader-0.0.1-SNAPSHOT.jar Exception in thread "main" java.lang.NoClassDefFoundError: org/springframework/boot/CommandLineRunner at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:634) at
ok, cela semble fonctionner, enfin. J'ai dû le spécifier explicitement le fichier jar au lieu de chemin d'accès du répertoire courant (.)
java -Denv=dev -Dloader.path=jars,hdfsloader-0.0.1-SNAPSHOT.jar -jar hdfsloader-0.0.1-SNAPSHOT.jar
OK, c'est pas dégénérée, alors merci pour l'analyse. L'archive actuelle devrait faire partie du classpath par défaut (voici un github question).
OriginalL'auteur Dave Syer
J'ai résolu ce problème en utilisant la suite spring-boot-maven-plugin de configuration, j'ai dû construire mon Uber pot sans exclus des objets pour créer mon externes "lib", puis j'ai ajouté mes exclus des artefacts de nouveau et emballé mon Uber pot avec mon application spécifique dépendances.
Ensuite, j'ai ajouté la propriété suivante à mon application".propriétés de" qui à l'intérieur de mon bocal "ressources/" dir pour préciser mon "lib" dir pour Printemps PropertiesLauncher où j'ai mis "lib" dir avec mon pot dans le même dir.
Enfin, je n'ai couru mon pot à l'aide de la commande suivante
Aussi, vous pouvez ajouter le "loader.chemin d'accès" de la propriété à votre ligne de commande sans le mettre dans votre application"."propriétés comme la commande suivante, mais cette voie n'a pas fonctionné avec moi comme je l'ai emballé mon bocal comme un exécutable qui je suis en cours d'exécution en tant que service linux.
Maintenant, j'ai réussi à réduire mon pot de taille à partir de 29 M à 1 M jar qui contient seulement mon application spécifique libs et il fonctionne hors de la boîte.
loader.path=lib
dansapplication.properties
fichier ne semble pas fonctionner plus au printemps de démarrage de la version 2.0.0.La LIBÉRATION. J'ai ensuite essayé de mettreloader.path=lib
dansloader.properties
fichier et de le placerloader.properties
fichier dans le même emplacement queapplication.properties
fichier (par exemple, /resources/config). Il ne fonctionne pas non plus. Enfin, j'ai placé leloader.properties
fichier dans le même répertoire que mon application.jar et cela a fonctionné. Il est apparu que laPropertiesLauncher
n'a pas lu le "loader."propriétés de fichier à l'intérieur du pot de graisse. Est-ce un bug au printemps boot 2?Pas sûr! Je pense que j'ai été à l'aide de Printemps 1.xx mais je pense qu'ils pourraient être le droit que vous pouvez avoir différentes lib chemin sur votre (dev, le stade ou la prod) env.
OriginalL'auteur Ashraf Sarhan