Quel est le meilleur moyen d'empaqueter une application Java avec beaucoup de dépendances?
Je suis en train d'écrire une application java avec eclipse qui fait référence à un peu externe pots et nécessite quelques fichiers de configuration de l'utilisateur accessible.
- Quelle est la meilleure façon de package pour le déploiement?
- Ma compréhension est que vous ne pouvez pas mettre les Pots à l'intérieur d'un autre fichier jar, est-ce correct?
- Puis-je garder mes fichiers de config de les pots et encore de référence dans le code? Ou si le chemin d'accès au fichier de config être un argument en ligne de commande?
- Sont là, un tiers des plugins pour eclipse pour aider à rendre cela plus facile? Je suis à l'aide d'un fichier ant pour le moment mais je ne suis pas sûr que je sais ce que je fais.
- Est-il un equivelent du déploiement des projets dans Visual studio, qui va déterminer tout ce dont vous avez besoin et il suffit de faire un installateur? J'ai utilisé install4j avant, et il était puissant si aucun où près aussi automatisé que .Net des projets de déploiement.
Acclamations.
source d'informationauteur Omar Kooheji
Vous devez vous connecter pour publier un commentaire.
Il n'y a pas de "meilleure façon". Cela dépend si vous déployez une application swing, webstart, applet, une bibliothèque ou une application web. Chacun est différent.
Sur le point 2, vous avez raison. Les fichiers Jar ne peut pas contenir d'autres fichiers jar. (Eh bien, techniquement, ils peuvent, c'est juste à l'intérieur des fichier jar ne sera pas sur votre classpath, efficacement, ce qui signifie que les fichiers jar ne contiennent pas de fichiers jar).
Sur le point 3, vous avez certainement peut faire référence à des fichiers de configuration à l'extérieur du fichier jar. Vous pouvez généralement faire référence à un fichier de configuration dans un fichier ou d'une ressource. Si vous utilisez la ressource de l'approche, il s'agit typiquement du classpath (peut être dans un bocal). Si vous utilisez un fichier, puis vous spécifiez le nom de fichier (pas dans un bocal).
En général, la plupart des développeurs Java serait d'utiliser Apache Ant pour atteindre le déploiement. Son bien documentés, afin de prendre un coup d'oeil.
(1) Une alternative à la fourmi que vous souhaitez à considérer est maven.
Une brève présentation de maven peut être trouvé ici.
Pour la construction d'un BOCAL, maven a la jar plugin, qui permet d'automatiser le processus de garantir à tous dépendants les pots sont répertoriés dans votre bocal manifeste.
Si vous utilisez eclipse, puis de télécharger la l'intégration de maven.
(2). une Autre alternative est d'utiliser OneJar (avertissement: n'ai pas essayé moi-même).
Les réponses varient selon le genre de chose que vous êtes en train de construire.
Si vous êtes la construction d'une bibliothèque, il est préférable de distribuer votre travail dans un fichier jar. Il est possible de se référer à votre pot de dépendances via la Classe-attribut de chemin d'accès dans votre bocal manifeste, bien qu'en général, je pense que c'est pas cool. Cet attribut a été conçu pour les applets et il est utilisé assez rarement dans les libs que lorsque cette technique tire des trucs dans le classpath (en particulier les communes de trucs de l'utilisateur peut-être), vous pouvez obtenir de l'inattendu, des conflits de version. Et c'est difficile à suivre, pourquoi vous voyez.
La publication d'un pot à un repo Maven avec pompon info pour gérer les dépendances est un excellent choix pour les bibliothèques. Si vous le faites, s'il vous plaît publier vos coordonnées Maven dans vos documents!
Si vous êtes à la création d'une application, les deux choix populaires sont à distribuer un zip/tar/whatever de déploiement de la structure OU à utiliser un programme d'installation. Si le programme est un serveur-ish sorte de chose, le premier est beaucoup plus commun. Ce dernier est plus commun pour les clients. En général, le programme d'installation va juste poser le déploiement de la structure et peut-être faire quelques tâches supplémentaires, telles que l'installation de l'OS des emplacements spécifiques.
Pour construire votre déploiement de la structure (aka "kit"), vous aurez envie de créer un processus reproductible dans tout ce système de construction que vous utilisez. Ant a de nombreux exemples de ce et Maven a l'assemblée plugins qui peuvent vous aider. Généralement, vous aurez envie d'inclure un pot de votre code, des dépendances, des scripts pour démarrer le programme, peut-être un JRE, et toutes les autres ressources que vous pourriez avoir besoin.
Si vous voulez créer un programme d'installation, il existe de nombreuses options à la fois gratuits et payants. Certaines personnes que je connais ont récemment eu de bonnes expériences avec la libre IzPack mais de vérifier vos options.
Vous devriez essayer FatJar. C'est un plugin Eclipse qui avec juste un clic droit sur le Projet peut construire un fichier JAR avec tout ce dont vous avez besoin pour exécuter l'application, y compris la nécessaire tiers POT.
Nous l'utilisons tous les jours, en étroite collaboration avec JSmooth pour créer les exécutables, le déploiement de notre logiciel de colis à nos clients, et fonctionne comme un charme.
Bien, si vous parlez de déploiement d'une application autonome:
Avant de nous nous sommes mis à web start nous avons été la création de trois déploiement des archives, une pour windows, une pour mac et une pour les autres plates-formes.
Sur windows, nous avons utilisé avec succès le Nullsoft Scriptable Install System (connu pour son utilisation par les anciennes versions de winamp) et de ses tâche antbien que certains des inconvénients sont:
Il permet de créer une installation de windows avec des entrées du menu démarrer sur l'autre main. Il existe aussi un plugin eclipse pour la gestion intégrée des INS shell script d'édition.
Sur Mac OS X il y a un tâche ant pour créer une .application fichier à partir de vos fichiers java, de sorte que vous pouvez commencer comme une application os x native. Mais attention de ne pas écrire n'importe quel paramètre de votre home et à l'aide de l'application dir place.
Pour les autres, il faut s'attendre à ce qu'ils sont dans un*x env et déployer votre application avec un script shell pour démarrer l'application.
Dans tous les cas, vous pouvez déployer votre personnalisé la politique de fichier pour obtenir les droits d'accès pour votre application.
Si vous voulez vous débarrasser de l'emballage et des trucs que vous devriez sérieusement envisager d'utiliser web start. Nous avons sauvé beaucoup de temps depuis la mise en, par exemple, simplifié notre processus de déploiement, prend en charge les mises à jour etc.
Mise à jour 2014
Utilisation maven assembly pluginvoir la section "Création d'un exécutable jar"
Ant. Ce n'est pas la meilleure chose dans le monde, mais c'est la norme, c'est apache, et il fonctionne.
Il y a quelques bons exemples sur le web comment faire un simple build.xml pour toute, et il a quelques fonctionnalités comme la "guerre" de la tâche qui sait comment mettre tous les trucs de base (classes, web.xml etc) dans le fichier jar pour vous.
Vous pouvez aussi lui dire de choisir d'autres fichiers de configuration et de pots et il sera heureux de le faire.
Il est également très intelligent sur ce que pour compiler. Vous lui donnez un répertoire, et il trouve tous les fichiers java et s'appuie uniquement si leur classfile est de la date, de sorte que vous obtenez de la traditionnelle de faire de la fonctionnalité gratuitement et sans beaucoup d'effort.
Vous pouvez consulter les autres projets java (par exemple, JMeter, SquirrelSQL, JEdit, Cernunnos, etc.). Chaque package de leurs applications de façon légèrement différente, pensez à vos objectifs lorsque vous examinez ces.