2011-01-21 3 views
1

J'ai un projet maven dans lequel je voudrais déballer tous les modules enfants d'un projet mutli module. Est-ce que quelqu'un sait si la meilleure façon d'aborder cela? Il y a plus de 100 modules dans ce projet et j'essaie d'éviter d'avoir à copier toutes ces informations ailleurs.Meilleure façon de copier un projet multi-module dans maven

Répondre

1

Vous devez d'abord créer un fichier pom.xml contenant tous les projets en tant que dépendances.

  1. S'il y a un sous-module qui a tous les autres sous-modules comme dépendances, alors vous avez de la chance, il suffit d'ajouter une dépendance à cette sous-module.
  2. Si ce n'est pas le cas, vous devrez écrire un script ou un programme qui rassemble les groupId, les artefacts, les versions (et les packagings) de tous les sous-modules. Et crée un pom.xml avec tous comme dépendances.

Alors, dans ce projet, vous pouvez utiliser dependency:unpack-dependencies pour décompresser les projets:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-dependency-plugin</artifactId> 
    <executions> 
    <execution> 
     <id>unpack-projects</id> 
     <phase>generate-sources</phase> 
     <goals> 
      <goal>unpack-dependencies</goal> 
     </goals> 
     <configuration> 
      <includeGroupIds>com.basegroupId*</includeGroupIds> 
     </configuration> 
    </execution> 
    </executions> 
</plugin> 

(Set includeGroupIds à un modèle qui correspond à tous les groupids sous-module)

Maintenant, vous avez juste à appeler

mvn generate-sources 

(ou toute autre phase que vous configurez dans l'exécution)

+0

Merci, le système sur lequel je travaille doit utiliser la liste de modules du pom comme source de données, mon but est de créer un système pour que nous n'ayons pas besoin d'entrer des données à deux endroits quand nous voulons ajouter ou supprimez un module. Dans le pire des cas, je peux lire le pom moi-même et ensuite résoudre et copier les fichiers manuellement, mais j'espérais que Maven avait quelque chose de cuit pour faire cela. – BillMan

+0

@BillMan non, par définition, un projet parent n'a pas accès aux projets de sous-module, vous devez donc référencer tous les nœuds inférieurs pour obtenir l'arborescence complète. –

Questions connexes