2011-01-31 13 views
6

Necesito copiar solo una dependencia y todas sus dependencias transitivas en una carpeta especificada. Sé que puedo excluir artefactos con "excludeArtifactIds", pero también debo excluir las dependencias transitivas de esos artefactos, que, aparentemente, "excluyeArtifactIds" no funciona.maven-dependency-plugin, copy-dependencies: excluye algunos identificadores de artefactos y sus dependencias

¿Hay alguna forma de hacerlo?

+0

¿Encontró una solución a esto? Estoy enfrentando el mismo problema y no puedo encontrar una solución. – vanval

Respuesta

1

¿Qué hay de configuración excludeTransitive a true?

+1

Necesito dependencias transitivas para una sola dependencia. Quiero excluir las otras dependencias y sus depsitos transitivos. – calin014

+0

¡Necesito esto! ¡En mi situación, no necesito dependencias transitivas! gracias – eleforest

6

Parece que la dependencia plugin de Maven es no diseñado para esto, ya que cerraron one request para esta funcionalidad como "WONTFIX" y another request ha estado abierto desde 2007.

Sin embargo, se puede utilizar el experto-ensamblaje -plugin para realizar una tarea similar.

A continuación he adjuntado dos muestras de POM. El primero es el proyecto dependiente (el que usted quería copiar) que a su vez tiene una dependencia (por ejemplo). El segundo es el proyecto agregado donde está copiando el otro proyecto y su dependencia a. También adjunté el archivo de ensamblador que usará para copiar la dependencia.

Básicamente, esto copiará el primer proyecto y es una dependencia del directorio destino/destino (configurable) del segundo proyecto.

primer POM (proyecto dependiente): /sample-dependency/pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>sample-dependency</groupId> 
    <artifactId>sample-dependency</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <dependencies> 
    <dependency> 
     <groupId>commons-lang</groupId> 
     <artifactId>commons-lang</artifactId> 
     <version>2.5</version> 
    </dependency> 
    </dependencies> 
</project> 

Segunda POM (proyecto de agregación): /sample-dependency-aggregator/pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>sample-dependency-aggregator</groupId> 
    <artifactId>sample-dependency-aggregator</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <name>sample-dependency-aggregator</name> 
    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-assembly-plugin</artifactId> 
       <version>2.2</version> 
       <executions> 
        <execution> 
         <id>aggregate</id> 
         <phase>package</phase> 
         <goals> 
          <goal>single</goal> 
         </goals> 
         <configuration> 
          <descriptor>src/main/assembly/default.xml</descriptor> 
         </configuration> 
        </execution> 
       </executions> 
       <configuration> 
        <attach>false</attach> 
        <finalName>dest</finalName> 
        <appendAssemblyId>false</appendAssemblyId> 
       </configuration> 
      </plugin> 
     </plugins> 
    </build> 
    <dependencies> 
     <dependency> 
      <groupId>sample-dependency</groupId> 
      <artifactId>sample-dependency</artifactId> 
      <version>0.0.1-SNAPSHOT</version> 
     </dependency> 
    </dependencies> 
</project> 

Descriptor de ensamblado: /sample-dependency-aggregator/src/main/assembly/default.xml

<?xml version="1.0" encoding="UTF-8"?> 
<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.1 http://maven.apache.org/xsd/assembly-1.1.1.xsd "> 
    <id>default</id> 
    <formats> 
     <format>dir</format> 
    </formats> 
    <includeBaseDirectory>false</includeBaseDirectory> 
    <dependencySets> 
     <dependencySet> 
      <outputDirectory>/</outputDirectory> 
      <includes> 
       <include>sample-dependency:sample-dependency</include> 
      </includes> 
      <useTransitiveDependencies>true</useTransitiveDependencies> 
      <useTransitiveFiltering>true</useTransitiveFiltering> 
     </dependencySet> 
    </dependencySets> 


</assembly> 
+0

Interesante respuesta, pero el autor quiere * excluir * una dependencia específica con sus dependencias transitivas, no incluir una. ¿Es esto posible con el plugin de ensamblaje? – firtydank

Cuestiones relacionadas