Ho problemi a utilizzare le dipendenze in un progetto a più moduli. Per esempio, quando dichiaro che il modulo cleartk-syntax
dipende dalla cleartk-token
modulo del test-jar
come questo (il codice completo è here):perché è richiesta la dipendenza da "test-jar" per "mvn compile"
<modelVersion>4.0.0</modelVersion>
<groupId>org.cleartk</groupId>
<artifactId>cleartk-syntax</artifactId>
<version>0.5.0-SNAPSHOT</version>
<name>cleartk-syntax</name>
...
<dependencies>
...
<dependency>
<groupId>org.cleartk</groupId>
<artifactId>cleartk-token</artifactId>
<version>0.7.0-SNAPSHOT</version>
<type>test-jar</type>
<scope>test</scope>
</dependency>
ricevo il seguente errore se corro mvn compile
usando Maven 2:
[INFO] ------------------------------------------------------------------------
[ERROR] BUILD ERROR
[INFO] ------------------------------------------------------------------------
[INFO] Failed to resolve artifact.
Missing:
----------
1) org.cleartk:cleartk-token:test-jar:tests:0.7.0-SNAPSHOT
Se uso Maven 3 ottengo l'errore:
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 4.654s
[INFO] Finished at: Mon Jan 24 21:19:17 CET 2011
[INFO] Final Memory: 16M/81M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal on project cleartk-syntax: Could not resolve
dependencies for project org.cleartk:cleartk-syntax:jar:0.5.0-SNAPSHOT: Could
not find artifact org.cleartk:cleartk-token:jar:tests:0.7.0-SNAPSHOT
In quest'ultimo caso, io sono il par particolarmente confuso perché avrei pensato che dovrebbe essere alla ricerca di un artefatto di tipo test-jar
non di tipo jar
.
Con Maven 2 o Maven 3, posso farlo compilare eseguendo mvn compile package -DskipTests
. Con maven 3, posso anche farlo compilare eseguendo mvn compile test-compile
.
Ma perché Maven 2 o Maven 3 cercano una dipendenza test-jar
durante la fase compile
? Non dovrebbe aspettare fino alla fase test-compile
per cercare tali dipendenze?
Aggiornamento: La risposta è stata che il plug-in maven-exec, utilizzato durante la fase di compilazione, requires dependency resolution of artifacts in scope:test. Ho creato a feature request to remove the scope:test dependency.
Ho confermato che la prima fase di Maven a funzionare è test-compile. processo-test-risorse non riesce. –
Felice di sentire che non sono il solo a incappare in questo bug. Nel tuo caso stai anche usando il plugin 'exec: java' - che sembrava essere parte del problema per me. In caso contrario, stai vincolando altri plug-in alle fasi di esecuzione? – Steve
Quello che ho scoperto di recente, ma che non ho ancora svolto, è che posso causare il problema con un set molto ridotto di 3 file pom. Se questi tre (il mio progetto) ereditano dal nulla, funziona. Se ereditano da org.apache: apache si rompe. Quindi uno dei plugin definiti probabilmente lo sta violando. Non c'è exec: java plugin lì - ma uno di quei plug-in e quello exec probabilmente dipendono da qualcos'altro che va a monte. Commenterò qui se riesco a ridurlo. –