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

Maven Java Discussion :

dépendances des modules pour un projet


Sujet :

Maven Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de philo71
    Profil pro
    Account manager
    Inscrit en
    Avril 2005
    Messages
    242
    Détails du profil
    Informations personnelles :
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Account manager

    Informations forums :
    Inscription : Avril 2005
    Messages : 242
    Par défaut dépendances des modules pour un projet
    Hello,
    je developpe une architecture multi-tier ticket, project composé de 5 modules:
    - ticket-batch
    - ticket-business
    - ticker-consumer
    - ticker-model
    - ticket-webapp

    voici ici le shéma de mon architecture:
    Nom : 15030605028522_P1C04_dependances_modules.png
Affichages : 468
Taille : 15,7 Ko

    voici le pom.xml parent de ticket :
    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
    53
    54
    55
    56
    57
    58
    59
    60
    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
      <modelVersion>4.0.0</modelVersion>
     
      <groupId>org.exemple.demo</groupId>
      <artifactId>ticket</artifactId>
      <version>1.0-SNAPSHOT</version>
      <packaging>pom</packaging>
     
      <name>ticket</name>
      <url>http://maven.apache.org</url>
     
      <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
      </properties>
     
     
      <modules>
        <module>ticket-batch</module>
        <module>ticket-webapp</module>
        <module>ticket-business</module>
        <module>ticket-consumer</module>
        <module>ticket-model</module>
      </modules>
        <!-- =============================================================== -->
        <!-- Gestion des dépendances -->
        <!-- =============================================================== -->
        <dependencyManagement>
            <dependencies>
                <!-- ===== Modules ===== -->
                <dependency>
                    <groupId>org.exemple.demo</groupId>
                    <artifactId>ticket-batch</artifactId>
                    <version>1.0-SNAPSHOT</version>
                </dependency>
                <dependency>
                    <groupId>org.exemple.demo</groupId>
                    <artifactId>ticket-webapp</artifactId>
                    <version>1.0-SNAPSHOT</version>
                </dependency>
                <dependency>
                    <groupId>org.exemple.demo</groupId>
                    <artifactId>ticket-business</artifactId>
                    <version>1.0-SNAPSHOT</version>
                </dependency>
                <dependency>
                    <groupId>org.exemple.demo</groupId>
                    <artifactId>ticket-consumer</artifactId>
                    <version>1.0-SNAPSHOT</version>
                </dependency>
                <dependency>
                    <groupId>org.exemple.demo</groupId>
                    <artifactId>ticket-model</artifactId>
                    <version>1.0-SNAPSHOT</version>
                </dependency>
     
                <!-- ===== Bibliothèques tierces ===== -->
            </dependencies>
        </dependencyManagement>
    </project>

    mais pour les modules pom.xml, je ne comprends pas très bien la relation parent, et maven me renvoie des erreurs:

    pom.xml de ticker-business :

    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
    <dependencies>
         <!-- ===== Modules ===== -->
            <dependency>
                <groupId>org.exemple.demo</groupId>
                <artifactId>ticket-batch</artifactId>
            </dependency>
            <dependency>
                <groupId>org.exemple.demo</groupId>
                <artifactId>ticket-webapp</artifactId>
            </dependency>
     
            <!-- ===== Bibliothèques tierces ===== -->
            <!-- JUnit -->
        <dependency>
          <groupId>junit</groupId>
          <artifactId>junit</artifactId>
          <version>3.8.1</version>
          <scope>test</scope>
        </dependency>
      </dependencies>

    Dans le pom.xml du ticket-model, j'ai défini les dépendances parentes avec junit

    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
      <dependencies>
          <!-- ===== Modules ===== -->
                    <dependency>
                <groupId>org.exemple.demo</groupId>
                <artifactId>ticket-batch</artifactId>
            </dependency>   
                 <dependency>
                <groupId>org.exemple.demo</groupId>
                <artifactId>ticket-business</artifactId>
            </dependency>   
               <dependency>
                <groupId>org.exemple.demo</groupId>
                <artifactId>ticket-webapp</artifactId>
            </dependency>   
               <dependency>
                <groupId>org.exemple.demo</groupId>
                <artifactId>ticket-consumer</artifactId>
            </dependency>   
            <!-- ===== Bibliothèques tierces ===== -->
            <!-- JUnit -->
        <dependency>
          <groupId>junit</groupId>
          <artifactId>junit</artifactId>
          <version>3.8.1</version>
          <scope>test</scope>
        </dependency>
      </dependencies>

    voici la sortie avec maven, ou j'ai des erreurs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    [phipo@localhost ticket]$ mvn clean package
    [WARNING] 
    [WARNING] Some problems were encountered while building the effective settings
    [WARNING] expected START_TAG or END_TAG not TEXT (position: TEXT seen ...facts.\n    |\n    | Default: ${user.home}/.m2/repository -->\n    <l... @9:7)  @ /home/phipo/.m2/settings.xml, line 9, column 7
    [WARNING] 
    [INFO] Scanning for projects...
    [ERROR] [ERROR] The projects in the reactor contain a cyclic reference: Edge between 'Vertex{label='org.exemple.demo:ticket-model:1.0-SNAPSHOT'}' and 'Vertex{label='org.exemple.demo:ticket-consumer:1.0-SNAPSHOT'}' introduces to cycle in the graph org.exemple.demo:ticket-consumer:1.0-SNAPSHOT --> org.exemple.demo:ticket-model:1.0-SNAPSHOT --> org.exemple.demo:ticket-consumer:1.0-SNAPSHOT @ 
    [ERROR] The projects in the reactor contain a cyclic reference: Edge between 'Vertex{label='org.exemple.demo:ticket-model:1.0-SNAPSHOT'}' and 'Vertex{label='org.exemple.demo:ticket-consumer:1.0-SNAPSHOT'}' introduces to cycle in the graph org.exemple.demo:ticket-consumer:1.0-SNAPSHOT --> org.exemple.demo:ticket-model:1.0-SNAPSHOT --> org.exemple.demo:ticket-consumer:1.0-SNAPSHOT -> [Help 1]
    [ERROR] 
    [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
    [ERROR] Re-run Maven using the -X switch to enable full debug logging.
    [ERROR] 
    [ERROR] For more information about the errors and possible solutions, please read the following articles:
    [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/ProjectCycleException
    [phipo@localhost ticket]$
    Il m'indique qu'il y a des boucles dans mon projet

    Salutations
    Philippe

  2. #2
    Expert confirmé
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Par défaut
    plusieurs choses dans tes erreurs.
    ton fichier settings.xml qui est dans .m2 à une erreur de syntaxe un Tag ouvert n'est pas fermé ligne 9

    quant au cycle ticket-model dépend de ticket-consumer et ticket-consumer dépend de ticket-model.

    si j'en reste à de la pure logique ticket-model doit contenir la définition de tes structures de données. en aucun cas ce module ne doit dépendre des usages qui e seront fait.
    Il n'y a aucune raison logique pour que ticket-model dépende de ticket-consumer.


    - ticket-batch (ne dépends que du business)
    - ticket-webapp (ne dépends que de business)
    - ticket-business (ne dépends que de consumer)
    - ticker-consumer (ne dépends que du modèle)
    - ticker-model (ne dépends d'aucun module du projet)

    quelle dépendances réelles vont avoir tes modules avec cette situation ?
    Maven gère les dépendances transitives

    - ticker-model => que des lib externes
    - ticker-consumer => ticker-model et des lib externes
    - ticket-business => ticker-consumer, ticker-model et des lib externes
    - ticket-webapp => ticket-business, ticker-consumer, ticker-model et des lib externes
    - ticket-batch => ticket-business, ticker-consumer, ticker-model et des lib externes

    Il n'y a aucune raison de faire dépendre modèle de quoi que ce soit.

    ta conception est ok.
    regarde ton diagramme

    commence par les modules qui ne point vers rien
    leur pom ne doit avoir que des dépendances externes

    ensuite tu prend les modules qui n'ont que des flèches qui pointe vers les précédents.
    leur pom ne doit avoir des dépendances que vers les modules de la premières étape.

    ensuite tu prend les modules qui n'ont que des flèches qui pointe vers les précédents. (tous les précédents)
    leur pom ne doit avoir des dépendances que vers les modules de l'étape précédente. il n'est pas nécessaire de mettre les dépendances vers la première étape

    tu répète l'étape 3) tant qu'il te reste des modules.


    Une autre façon de faire et de prendre un module et de regarder les flèches qui en partent
    si en suivant les flèches tu tombe sur un module qui est joignable par une succession de flèches alors tu n'ajoute pas la dépendance. Si il n'y a que la dépendance directe alors tu l'ajoute


    dans ton diagramme tu vois que modèle est accessible par tous les modules en suivant les flèches jusqu'à consumer consumer->model. seul consumer doit dépendre de modèle.
    tu vois que tous les autres modules n'ont que des dépendances directes busines -> consumer, webapp->busines, batch->busines. il n'y donc que ces dépendance là à déclarer.



    A+JYT

Discussions similaires

  1. [MEX] Comment appeler des modules dans un projet
    Par fatenov dans le forum MATLAB
    Réponses: 4
    Dernier message: 22/11/2007, 22h58
  2. Réponses: 1
    Dernier message: 27/03/2007, 17h52
  3. Bonjour, des modules pour Truevision3d ?
    Par Phomos dans le forum C++
    Réponses: 1
    Dernier message: 28/09/2005, 18h18
  4. [Eclipse 2.1] Encodage des fichiers pour un projet
    Par _-Sky-_ dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 26/05/2005, 22h26
  5. Recherche des dépendances des modules
    Par slowpoke dans le forum Mandriva / Mageia
    Réponses: 9
    Dernier message: 11/12/2003, 08h49

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