2016-04-19 4 views
1

Ich habe eine Abhängigkeit in meinem Pom mit <scope>test</scope>. Wie ich das Scope-Konzept von Maven verstanden habe, sollte die Abhängigkeit nur während Test-Builds benötigt werden. Dennoch Maven Trys die Abhängigkeit während eines mvn package zum Download, die, warum ich nach erfolg bekommen bauen:Maven Scope Test muss Dependenzen auflösen

[INFO] BUILD FAILURE 
[INFO] ------------------------------------------------------------------------ 
[INFO] Total time: 0.278 s 
[INFO] Finished at: 2016-04-19T22:11:59+02:00 
[INFO] Final Memory: 5M/15M 
[INFO] ------------------------------------------------------------------------ 
[ERROR] Failed to execute goal on project my-module: Could not resolve dependencies for project com.mycompany.app:my-module:jar:1: Failure to find group-a:artifact-b:jar:tests:1.0 in https://repo.maven.apache.org/maven2 was cached in the local repository, resolution will not be reattempted until the update interval of central has elapsed or updates are forced -> [Help 1]0 

Ich verwende folgende pom:

<project> 
<modelVersion>4.0.0</modelVersion> 
<groupId>com.mycompany.app</groupId> 
<artifactId>my-module</artifactId> 
<version>1</version> 
<dependencies> 
    <dependency> 
    <groupId>group-a</groupId> 
    <artifactId>artifact-b</artifactId> 
    <version>1.0</version> 
    <scope>test</scope> 
    </dependency> 
</dependencies> 
</project> 
  1. dieses Verhalten von Maven gedacht?
  2. Gibt es irgendwelche Milderungen, um die Abhängigkeit während Paket/Installation/Bereitstellung zu ignorieren?

Jede Hilfe ist willkommen

+1

Mögliche Duplikat [Force-Maven-Update] (http://stackoverflow.com/questions/4701532/force-maven-update) – Tunaki

+0

Blick auf die verknüpfte Frage, müssen Sie Maven mit der "-U" -Taste aufrufen. – Tunaki

+0

-U soll ein depdendeny Update erzwingen. Ich muss die Verwendung der Dependency während der Paket-Builds vermeiden. –

Antwort

0

Ich konnte das Problem nicht lösen, aber ich fand einen bequemen Weg, um das Problem zu mildern. Bei meinem Paket verwende ich -Dmaven.test.skip=true Parameter. Also habe ich zwei Profile definiert, eins mit der Abhängigkeit und eins ohne. Wenn Tests übersprungen werden, deaktiviere ich das Profil mit der Abhängigkeit.

Trotzdem würde ich eine Lösung mit dem scope Tag schätzen

<project> 
<modelVersion>4.0.0</modelVersion> 
<groupId>com.mycompany.app</groupId> 
<artifactId>my-module</artifactId> 
<version>1</version> 
    <profiles> 
     <profile> 
     <id>default</id> 
     <activation> 
     <activeByDefault>true</activeByDefault> 
     </activation> 
     <dependencies> 
      <dependency> 
      <groupId>group-a</groupId> 
      <artifactId>artifact-b</artifactId> 
      <version>1.0</version> 
      </dependency> 
     </dependencies> 
     </profile> 
     <profile> 
     <id>skip-tests</id> 
     <activation> 
      <property> 
      <name>maven.test.skip</name> 
      <value>true</value> 
      </property> 
     </activation> 
     </profile> 
    </profiles> 
</project> 
Verwandte Themen