2009-06-23 23 views
6

El descriptor de mi ensamblaje aplica las inclusiones y las exclusiones correctamente cuando las dependencias se incluyen directamente en el archivo pom.el ensamblaje de maven ignora las dependencias principales

Sin embargo, cuando pongo las dependencias en el archivo pom principal, el ensamblado: objetivo de directorio informa que las inclusiones y las exclusiones no se han activado.

¿Sabe por qué maven-assembly-plugin ignora las dependencias de los padres? ¿Cómo puedo arreglarlo?

Éstos son los maven y montaje descriptores: descriptor

Asamblea:

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

POM Niño montaje plug-in definición:

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

dependencias POM Padres:

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

advertencias en el informe de compilación:

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

Respuesta

6

No sé si esto ayuda, pero lo que siempre hago es en pom de los padres a poner las dependencias en un bloque 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> 

Luego, en el pom niño, listar las dependencias de nuevo, pero sin la versión y exclusiones

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

Pero para ser honesto, para mi primera y única asamblea, no pude conseguirlo para trabajar en un módulo hijo y ponerlo en el pom del padre. Aquí está mi archivo de ensamblaje, para la fabricación de un archivo zip para un programa Java independiente, dirigido por 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> 

Hay dos directorios de nivel superior en el archivo zip, cargar y descargar.

Cuestiones relacionadas