2015-01-14 8 views
6

Ich habe folgend in meiner Frühling Boot-Anwendung pom per the documentation auszuschließen: weilWie transitive Abhängigkeiten von Feder-boot-Abhängigkeiten von Maven Import Umfang

<dependencyManagement> 
    <dependencies> 
     <!-- Spring --> 
     <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-dependencies</artifactId> 
     <version>${spring-boot.version}</version> 
     <type>pom</type> 
     <scope>import</scope> 
     </dependency> 
    </dependencies> 
    </dependencyManagement> 

Ich brauche zu verwenden Verwendung dependencyManagement und <scope>import</scope> Ich brauche eine Standard-Firmenbasis pom. Es scheint jedoch nicht möglich, transitive Abhängigkeiten von spring-boot-dependencies auszuschließen. In meinem speziellen Fall bringt Spring Boot 1.2.1.RELEASE eine Version von Jetty, die in Bezug auf einige meiner anderen <dependencies> zu neu ist. Ich habe versucht, ein <exclusion> der Form unter Verwendung von:

<dependencyManagement> 
    <dependencies> 
     <!-- Spring --> 
     <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-parent</artifactId> 
     <version>${spring-boot.version}</version> 
     <type>pom</type> 
     <scope>import</scope> 

     <!-- Doesn't work --> 
     <exclusions> 
      <exclusion> 
      <groupId>org.eclipse.jetty</groupId> 
      <artifactId>*</artifactId> 
      </exclusion> 
     </exclusions> 

     </dependency> 

    </dependencies> 
    </dependencyManagement> 

Maven 3.2.1's wildcard support verwenden, aber es scheint nicht zu übernehmen.

Gibt es eine Lösung für dieses Problem, außer explizit alle Jetty-Abhängigkeiten zu überschreiben? Es gibt viele Jetty-Bibliotheken, und dieser Ansatz wäre ziemlich brüchig. Darüber hinaus scheint es, dass ich das gleiche mit Jettys transitiven Abhängigkeiten tun müsste.

Antwort

1

Sieht aus wie diese isn't possible with Maven import scope:

Der Import Umfang genutzt werden kann Abhängigkeitsmanagement Informationen von einem entfernten POM in das aktuelle Projekt einzubeziehen. Eine der Einschränkungen davon ist, dass es nicht erlaubt, zusätzliche Ausnahmen zu für ein Multi-Modul-Projekt definiert werden.

Ebenso gibt es eine Bestätigung der Spring Boot documentation:

Wenn Sie Feder-boot-Abhängigkeiten in Ihrem eigenen dependencyManagement Abschnitt mit <scope>import</scope>hinzugefügt haben Sie haben das Artefakt neu definieren sich [ ...].

+0

Dies könnte auch eine Option sein: http://maven.40175.n5.nabble.com/exclude-on-scope-import-td5781856.html – btiernay

+0

, wie Sie es endlich achive hat? Ich habe genau das gleiche Problem. – chaosguru

+0

@chaosguru Ich habe das Artefakt neu definiert. Es ist ein Schmerz, aber das ist mehr Maven Schuld als Spring Boot. – btiernay

Verwandte Themen