2011-01-31 12 views
6

Ho bisogno di copiare solo una dipendenza e tutte le sue dipendenze transitive in una cartella specificata. So di poter escludere artefatti con "excludeArtifactIds", ma ho anche bisogno di escludere le dipendenze transitive di quegli artefatti, che, apparentemente "excludeArtifactIds", non fanno.maven-dependency-plugin, copy-dependencies: esclude alcuni id artefatti e le loro dipendenze

C'è un modo per farlo?

+0

hai trovato una soluzione a questo? Sto affrontando lo stesso problema e non riesco a trovare una soluzione. – vanval

risposta

1

Come impostare l'excludeTransitive su true?

+1

Ho bisogno di dipendenze transitive per una sola dipendenza. Voglio escludere le altre dipendenze e le loro defe transitive. – calin014

+0

Ho bisogno di questo! Nella mia situazione non ho bisogno di dipendenze transitive! grazie – eleforest

6

Sembra che la dipendenza plugin di Maven è non progettato per questo, come hanno chiuso one request per questa funzionalità "WONTFIX" e another request è stato aperto dal 2007.

Tuttavia, è possibile utilizzare il Maven-assemblaggio -Plugin per svolgere un compito simile.

Di seguito sono elencati due POM di esempio. Il primo è il progetto dipendente (quello che si desidera copiare) che a sua volta ha una dipendenza (ad esempio). Il secondo è il progetto aggregato in cui copi l'altro progetto e la sua dipendenza. Ho anche allegato il file del descrittore dell'assembly che utilizzerai per copiare la dipendenza.

In sostanza, questo copierà il primo progetto ed è una dipendenza dalla directory di destinazione/destinazione (configurabile) del secondo progetto.

Prima POM (progetto dipendente): /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> 

Seconda POM (progetto di aggregazione): /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> 

Descrittore dell'Assemblea: /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

Risposta interessante, ma l'autore desidera * escludere * una dipendenza specifica con le sue dipendenze transitive, non includerne una. Questo è possibile con il plugin di assemblaggio? – firtydank

Problemi correlati