2009-06-23 8 views
6

Mon descripteur d'assembly applique les includes et exclut correctement lorsque les dépendances sont incluses dans le fichier pom directement.L'assembly maven ignore les dépendances parent

Cependant, lorsque je mets les dépendances dans le fichier pom parent, les rapports d'objectif assembly: directory que les includes et les excludes n'ont pas été déclenchés.

Savez-vous pourquoi maven-assembly-plugin ignore les dépendances parent? Comment puis-je le réparer?

Voici les descripteurs de Maven et d'assemblage:

descripteur de montage:

<assembly> 
    <id>distribution</id> 
    <formats> 
    <format>zip</format> 
    </formats> 
    <fileSets> 
    <fileSet> 
     <includes> 
     <include>readme.txt</include> 
     </includes> 
    </fileSet> 
    <fileSet> 
     <directory>target</directory> 
     <outputDirectory>/lib</outputDirectory> 
     <includes> 
     <include>*.jar</include> 
     </includes> 
    </fileSet> 
    </fileSets> 
    <dependencySets> 
    <dependencySet> 
     <outputDirectory>/lib</outputDirectory> 
     <unpack>false</unpack> 
     <scope>runtime</scope> 
     <excludes> 
     <exclude>org.tanukisoftware:wrapper:exe:3.3.5</exclude> 
     </excludes> 
    </dependencySet> 
    <dependencySet> 
     <outputDirectory>/bin</outputDirectory> 
     <unpack>false</unpack> 
     <scope>runtime</scope> 
     <includes> 
     <include>org.tanukisoftware:wrapper:exe:3.3.5</include> 
     </includes> 
    </dependencySet> 
    </dependencySets> 
</assembly> 

définition de plug-in de montage enfant POM:

<plugin> 
     <artifactId>maven-assembly-plugin</artifactId> 
     <configuration> 
      <ignoreDirFormatExtensions>true</ignoreDirFormatExtensions> 
      <descriptors> 
       <descriptor>assembly.xml</descriptor> 
      </descriptors> 
     </configuration> 
     <executions> 
      <execution> 
       <id>make-assembly</id> 
       <phase>package</phase>  
       <goals> 
        <goal>directory</goal> 
       </goals> 
      </execution> 
     </executions> 
    </plugin> 

dépendances Parent POM:

<dependencies> 
    <dependency> 
     <groupId>org.tanukisoftware</groupId> 
     <artifactId>wrapper</artifactId> 
     <version>3.3.5</version> 
     <type>dll</type> 
     <scope>runtime</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.tanukisoftware</groupId> 
     <artifactId>wrapper</artifactId> 
     <version>3.3.5</version> 
     <type>exe</type> 
     <scope>runtime</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.tanukisoftware</groupId> 
     <artifactId>wrapper</artifactId> 
     <version>3.3.5</version> 
     <scope>runtime</scope> 
    </dependency> 
</dependencies> 

avertissements dans le rapport de construction:

[assembly:directory {execution: make-assembly}] 
Reading assembly descriptor: assembly.xml 
Processing DependencySet (output=/lib) 
[WARNING] The following patterns were never triggered in this artifact exclusion filter: 
o 'org.tanukisoftware:wrapper:exe:3.3.5' 

Processing DependencySet (output=/bin) 
[WARNING] The following patterns were never triggered in this artifact inclusion filter: 
o 'org.tanukisoftware:wrapper:exe:3.3.5' 

Répondre

6

Je ne sais pas si cela va aider, mais ce que je fais toujours est dans le pom du parent mis les dépendances dans un bloc de dependencyManagement;

<dependencyManagement> 
    <!-- dependencies with exclusions --> 
    <dependencies> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-aop</artifactId> 

      <version>${version.springframework}</version> 

      <exclusions> 
       <exclusion> 
        <groupId>commons-logging</groupId> 
        <artifactId>commons-logging</artifactId> 
       </exclusion> 
      </exclusions> 
     </dependency> 

Puis, dans le pom de l'enfant, la liste des dépendances à nouveau, mais sans la version et les exclusions

<dependencies> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-aop</artifactId> 
    </dependency> 

Mais pour être honnête, pour ma première et seule assemblée, je ne pouvais pas l'obtenir travailler dans un module enfant et le mettre dans le pom du parent. Voici mon dossier d'assemblage, pour faire un fichier zip pour un programme Java autonome, géré par Cron:

<?xml version="1.0" encoding="UTF-8"?> 

<assembly> 
    <id>${project.layer}-both</id> 

    <formats> 
     <format>zip</format> 
    </formats> 

    <includeBaseDirectory>false</includeBaseDirectory> 

    <baseDirectory>/</baseDirectory> 

    <moduleSets> 
     <moduleSet> 
      <includes> 
       <include>edu.berkeley.ist.cars:cars_upload</include> 
      </includes> 

      <binaries> 
       <unpack>false</unpack> 
       <useStrictFiltering>true</useStrictFiltering> 
       <includeDependencies>true</includeDependencies> 
       <outputDirectory>upload</outputDirectory> 
      </binaries> 
     </moduleSet> 

     <moduleSet> 
      <includes> 
       <include>edu.berkeley.ist.cars:cars_download</include> 
      </includes> 

      <binaries> 
       <unpack>false</unpack> 
       <useStrictFiltering>true</useStrictFiltering> 
       <includeDependencies>true</includeDependencies> 
       <outputDirectory>download</outputDirectory> 
      </binaries> 
     </moduleSet> 
    </moduleSets> 

    <!-- 
     crontab.txt is put in twice, in both upload and download, just in case. 
     --> 
    <files> 
     <!-- upload files --> 
     <file> 
      <source>src/stuff/scripts/cars_upload.sh</source> 
      <lineEnding>unix</lineEnding> 
      <filtered>true</filtered> 
      <outputDirectory>upload</outputDirectory> 
     </file> 

     <file> 
      <source>src/stuff/notes/crontab-${project.layer}.txt</source> 
      <destName>crontab.txt</destName> 
      <lineEnding>unix</lineEnding> 
      <filtered>true</filtered> 
      <outputDirectory>upload</outputDirectory> 
     </file> 

     <!-- download files --> 
     <file> 
      <source>src/stuff/scripts/cars_download.sh</source> 
      <lineEnding>unix</lineEnding> 
      <filtered>true</filtered> 
      <outputDirectory>download</outputDirectory> 
     </file> 

     <file> 
      <source>src/stuff/notes/crontab-${project.layer}.txt</source> 
      <destName>crontab.txt</destName> 
      <lineEnding>unix</lineEnding> 
      <filtered>true</filtered> 
      <outputDirectory>download</outputDirectory> 
     </file> 
    </files> 
</assembly> 

Il y a deux répertoires de haut niveau dans le fichier zip, télécharger et télécharger.

Questions connexes