2010-11-24 5 views
1

Je construis une application qui est composée de deux projets: common et theApp. Maintenant, theApp dépend de common (modélisé en utilisant un dependency). La chose délicate que je fais face est:la modélisation des dépendances XML entre les projets utilisant maven

Il y a des fichiers XML dans common/src/main/env qui seront nécessaires pendant que theApp est en cours d'exécution.

Pour rendre les choses plus amusant, une distribution de course aura cette structure:

  • bin/ - a des scripts
  • lib/ - a les pots créés par theApp et common
  • dependencies/ - a la bibliothèque pots sur lesquels l'application dépend
  • config/ - a les fichiers xml de theApp et common

Je suis tout fait, sauf que je suis toujours à la recherche d'un moyen d'écrire un but Maven dans theApp « POM s qui peut mettre common » s fichiers XML dans config/.

Des idées?

Merci, Harshath

Répondre

0

Vous aurez besoin de l'ensemble de Maven et plug-ins de dépendance. Créer un descripteur de montage en commun/src/main/resources/ensembles/config.xml comme ceci:

<assembly> 
    <id>config</id> 
    <formats> 
     <format>zip</format> 
    </formats> 
    <fileSets> 
     <fileSet> 
     <directory>${basedir}/src/main/env</directory> 
     <outputDirectory>/</outputDirectory> 
     </fileSet> 
    </fileSets> 
    <dependencySets> 
     <dependencySet> 
     <useProjectArtifact>false</useProjectArtifact> 
     <useTransitiveDependencies>true</useTransitiveDependencies> 
     <outputDirectory>config/</outputDirectory> 
     </dependencySet> 
    </dependencySets> 
</assembly> 

utiliser ensuite dans votre pom comme:

<build> 
    <plugins> 
     <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-assembly-plugin</artifactId> 
     <configuration> 
      <descriptorRefs> 
       <descriptorRef>config</descriptorRef> 
      </descriptorRefs> 
     </configuration> 
     <executions> 
      <execution> 
       <phase>package</phase> 
       <goals> 
       <goal>attached</goal> 
       </goals> 
      </execution> 
     </executions> 
     <dependencies> 
      <dependency> 
       <groupId>my.groupid</groupId> 
       <artifactId>common</artifactId> 
       <version>my.version</version> 
      </dependency> 
     </dependencies> 
    </plugin> 
    </plugins> 
</build> 

Cela va créer un artefact attaché common-config.zip, que vous pouvez développer avec le plugin maven-dependency dans le fichier pom.xml de l'application, en plaçant les fichiers dans le répertoire target/config de l'application (ce qui peut ne pas convenir, selon la manière dont vous créez votre distribution finale) :

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-dependency-plugin</artifactId> 
    <executions> 
     <execution> 
     <id>unpack-dependencies</id> 
     <phase>package</phase> 
     <goals> 
      <goal>unpack</goal> 
     </goals> 
     <configuration> 
      <artifactItems> 
      <artifactItem> 
       <groupId>my.groupid</groupId> 
       <artifactId>common</artifactId> 
       <version>my.version</version> 
       <type>zip</type> 
       <overWrite>true</overWrite> 
       <includes>*</includes> 
       <outputDirectory>${project.build.directory}/config</outputDirectory> 
      </artifactItem> 
      </artifactItems> 
     </configuration> 
     </execution> 
    </executions> 
    </plugin> 

Une partie de ceci est documentée dans http://www.sonatype.com/books/mvnref-book/reference/assemblies.html ...

Questions connexes