2009-06-23 24 views
6

Il mio descrittore di assembly applica gli include e si esclude correttamente quando le dipendenze sono incluse direttamente nel file pom.assembly maven ignora le dipendenze parent

Tuttavia, quando inserisco le dipendenze nel file padre pom l'assembly: l'obiettivo della directory segnala che non sono stati attivati ​​gli include e gli esclusi.

Sapete perché il plug-in maven-assembly-ignora le dipendenze dei genitori? Come posso ripararlo?

Ecco l'esperto e assemblaggio descrittori:

Assemblea descrittore:

<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> 

Bambino POM definizione plugin di montaggio:

<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> 

dipendenze 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> 

avvertenze contenute nella relazione di compilazione:

[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' 

risposta

6

Non so se questo aiuterà, ma quello che faccio sempre è nel pom del genitore messo le dipendenze in un blocco 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> 

Poi, nel pom bambino, elencare di nuovo le dipendenze, ma senza la versione e le esclusioni

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

Ma ad essere onesti, per la mia prima e unica assemblea, non ho potuto farlo lavorare in un modulo figlio e inserirlo nel pom del genitore. Ecco il mio file di assiemi, per fare un file zip per un programma Java autonomo, gestito da 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> 

Ci sono due directory primarie nel file zip, caricare e scaricare.