IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ANT Java Discussion :

Créer un Jar par package JAVA


Sujet :

ANT Java

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 5
    Points : 3
    Points
    3
    Par défaut Créer un Jar par package JAVA
    Bonjour,

    Afin de modularisation une application, j'ai défini plusieurs packages JAVA qui découpent fonctionnellement celle-ci.
    J'aimerais que ce découpage se retrouve dans les éléments à livrer. En effet, le livrable de l'application est organisé de cette manière : un répertoire lib contient tous les JAR, les bibliothèques tiers (connecteur à la base de données, hibernate) ainsi que le JAR contenant les classes du projet. Je voudrais juste diviser le JAR du projet en plusieurs JAR en respectant le découpage défini par les packages.

    L'objectif est juste de pouvoir livrer des bouts de l'application validés dans un environnement de production alors que d'autres bouts sont encore en cours de validation dans un environnement de recette.

    Grosso-modo je me demande s'il existe déjà un outil pour faire ça ou si c'est possible de le faire en codant un petit script ant. Cependant mes connaissances de ANT sont plutôt limitées, par exemple comment parcourir l'ensemble des répertoires du projet, pour chaque répertoire et sous répertoire, vérifier qu'il existe au moins un fichier et si c'est le cas compiler les classes dans un jar.... (le principe est là.)

    Je sais qu'il existe des filtres sur les taches JAR pour inclure ou exclure des fichiers ou répertoires à l'aide d'expressions régulières. Mais, cela ne résout pas mon problème de parcours d'arborescence et de plus je ne veux pas coder le nom des packages en dur, en faite j'aimerais aussi utiliser ce script sur d'autres projets.

    Pouvez vous m'indiquer les quelques commandes ANT (voir un outil) qui seraient susceptibles de répondre au besoin.

  2. #2
    Membre confirmé Avatar de Mobius
    Profil pro
    none
    Inscrit en
    Avril 2005
    Messages
    463
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : none

    Informations forums :
    Inscription : Avril 2005
    Messages : 463
    Points : 558
    Points
    558
    Par défaut
    Personnellement, je ne vois pas trop l'intérêt de ce mode de livraison (il faudrait mieux revoir l'architecture du projet et utiliser Maven par exemple).

    Ceci dit, je me suis pris au jeu et me suis amusé à faire une tache ant qui te permetterai de faire ce que tu demande.
    L'ayant fait un peu rapidement, ce n'est certainement pas ce qu'il y a de plus simple et c'est surement un peu bugué.


    Voici donc
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
     
    <?xml version="1.0" encoding="UTF-8"?>
    <project name="test" default="default">
    	<taskdef resource="net/sf/antcontrib/antcontrib.properties">
    		<classpath>
    			<pathelement location="lib/ant-contrib-0.6.jar" />
    		</classpath>
    	</taskdef>
     
    	<macrodef name="jars">
    		<attribute name="dir" />
    		<attribute name="destdir" />
    		<sequential>
    			<for param="dir.name">
    				<path>
    					<dirset dir="@{dir}">
    						<include name="**/*" />
    					</dirset>
    				</path>
    				<sequential>
    					<pathconvert property="obsolutedire">
    						<path>
    							<dirset dir="@{dir}/..">
    								<include name="@{dir}" />
    							</dirset>
    						</path>
    					</pathconvert>
    					<propertyregex property="@{dir.name}.path"
    					              input="@{dir.name}"
    					              regexp="(${basedir}${file.separator}@{dir})${file.separator}(.*)"
                                      replace="\2"/>
    					<propertyregex property="@{dir.name}.package"
    					              global="true"
    					              input="${@{dir.name}.path}"
    					              defaultvalue="${@{dir.name}.path}"
    					              regexp="${file.separator}"
                                      replace="."/>
    					<echo>@{dir.name} ${@{dir.name}.package}</echo>
    					<jar basedir="@{dir}${file.separator}${@{dir.name}.path}" destfile="@{destdir}${file.separator}${@{dir.name}.package}.jar" />
    				</sequential>
    			</for>
    		</sequential>
    	</macrodef>
     
    	<dirset dir="src" id="src.dirset">
    		<include name="**/*" />
    	</dirset>
     
    	<target name="default">
    		<jars dir="src" destdir="lib" />
    	</target>
    </project>
    Librairie d'accès LDAP en Java : LdapBeans
    et pensez au tag

Discussions similaires

  1. Réponses: 4
    Dernier message: 14/06/2013, 10h47
  2. Réponses: 2
    Dernier message: 08/10/2009, 16h53
  3. Possible de générer un jar par package avec maven?
    Par daemon rom dans le forum Maven
    Réponses: 2
    Dernier message: 12/04/2009, 21h24
  4. créer un JAR par programmation
    Par Kuroro dans le forum Langage
    Réponses: 2
    Dernier message: 20/05/2007, 01h19
  5. créer un jar d'une appli java utilisant d'autres jar
    Par jakouz dans le forum Général Java
    Réponses: 2
    Dernier message: 14/02/2007, 17h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo