|
|
|
IntelliJ указывает тестовые зависимости в classpath
|
|||
|---|---|---|---|
|
#18+
Джентльмены, кто-нибудь сталкивался со следующей проблемой? Проект собирается через Maven. Есть библиотека "блабла-test-framework", которая подключена в test scope. Этот test-framework в свою очередь использует для компиляции еще ряд библиотек, объявляя их в compile scope. Схема зависимостей в проекте получается следующая: --- maven-dependency-plugin:2.8:tree (default-cli) @ my-webapp --- a.b.c.my-webapp:jar:1.0-SNAPSHOT +- x.y.z.test-framework:test-framework-core:jar:1.0:test | +- x.y.z.test-framework:test-framework-util:jar:1.0:compile <-- Попадает в classpath Проблема заключается в том, что при запуске проекта через IntelliJ Run configuration в classpath оказываются compile-зависимости тестовой библиотеки: /path/to/java -classpath "...:.../x.y.z.test-framework/test-framework-util/test-framework-util-1.0.jar:..." a.b.c.Main Мне кажется, что это баг, а именно что IntelliJ при сборке зависимостей тупо собирает все библиотеки, которые объявлены в compile scope, игнорируя тот факт, что в дереве зависимостей путь к этим библиотекам проходит исключительно через узел, объявленный в test scope. Проверено на версиях 15.0 и 16.0. Или я как-то неправильно понимаю концепцию scope в Maven? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2017, 13:21 |
|
||
|
IntelliJ указывает тестовые зависимости в classpath
|
|||
|---|---|---|---|
|
#18+
Отвечу сам себе. Судя по https://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html я понимаю все правильно и для библиотеки, объявленной в test scope, ее transitive зависимости должны тоже восприниматься как объявленные в test scope. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2017, 13:28 |
|
||
|
IntelliJ указывает тестовые зависимости в classpath
|
|||
|---|---|---|---|
|
#18+
Andrei TПроблема заключается в том, что при запуске проекта через IntelliJ Run configuration в classpath оказываются compile-зависимости тестовой библиотеки Это проблема? Т.е. это ломает какую-то логику? Размер дистрибутива не меняется. Если да- сабмить им баг. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2017, 13:51 |
|
||
|
IntelliJ указывает тестовые зависимости в classpath
|
|||
|---|---|---|---|
|
#18+
Alexey Tomin, Это потенциально может стать проблемой, если возникнет конфликт версий. Размер дистрибутива тоже меняется, если собирать fat jar. Я бы зафайлил баг, но пока не могу понять, в чем косяк. Пытаюсь воспроизвести проблему на чистом проекте. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2017, 14:04 |
|
||
|
IntelliJ указывает тестовые зависимости в classpath
|
|||
|---|---|---|---|
|
#18+
Кому интересно -- все дело в Maven. Воспроизвести можно по ссылке в конце сообщения [1]. Структура проекта (согласно POM): Код: java 1. 2. 3. 4. 5. 6. maven-dependency-plugin (2.8, 2.10, 3.0.0) использует nearest-first стратегию в случае конфликтов и делает вывод, что javax.servlet-api для project1 должен быть версии 3.0.1, несмотря на то, что версия 3.0.1 объявлена в test scope, который не transitive (и с моей т.з. тут никакого конфликта вообще быть не должно) [1]: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. [1] https://github.com/atomashpolskiy/maven-transitive-test-dependencies ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2017, 18:27 |
|
||
|
|

start [/forum/topic.php?fid=59&gotonew=1&tid=2123148]: |
0ms |
get settings: |
7ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
75ms |
get topic data: |
9ms |
get first new msg: |
5ms |
get forum data: |
2ms |
get page messages: |
46ms |
get tp. blocked users: |
2ms |
| others: | 225ms |
| total: | 388ms |

| 0 / 0 |
