У меня возникли проблемы с использованием зависимостей test-jar
в многомодульном проекте. Например, когда я заявляю, что cleartk-syntax
модуль зависит от cleartk-token
модуля test-jar
как это (полный код here):Зачем нужна «тестовая банка» для «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>
Я получаю следующее сообщение об ошибке, если я бегу mvn compile
с использованием 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
Если я использую Maven 3 я получаю ошибку:
[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
в последнем случае я вол особенно смущенный, потому что я бы подумал, что он должен искать артефакт типа test-jar
не типа jar
.
С maven 2 или maven 3, я могу заставить его скомпилировать, запустив mvn compile package -DskipTests
. С maven 3 я также могу его скомпилировать, запустив mvn compile test-compile
.
Но почему же maven 2 или maven 3 ищет зависимость test-jar
во время фазы compile
? Разве он не должен ждать фазы test-compile
для поиска таких зависимостей?
Обновление: Ответ был тот, что maven-exec-plugin, используемый во время моей фазы компиляции, requires dependency resolution of artifacts in scope:test. Я создал a feature request to remove the scope:test dependency.
Я подтвердил, что первая фаза maven для работы является тестовой. process-test-resources терпит неудачу. –
Рад слышать, что я не одинок, столкнувшись с этой ошибкой. В вашем случае вы также используете плагин 'exec: java', который, казалось, был частью проблемы для меня. Если нет, связываете ли вы какие-либо другие плагины с этапами выполнения? – Steve
Что я недавно обнаружил, но еще не размотал, это то, что я могу вызвать проблему с очень уменьшенным набором из 3 файлов pom. Если эти три (мой проект) наследуют от ничего, он работает. Если они наследуют от org.apache: apache, он ломается. Таким образом, один из плагинов, определенных там, вероятно, нарушает его. Там нет exec: java plugin, но один из этих плагинов и exec, вероятно, зависит от чего-то еще сломанного вверх по течению. Я прокомментирую здесь, если смогу сузить его. –