2013-03-27 6 views
1

У меня есть родительский проект, который имеет зависимости с областью тестатест Maven зависимости от зависимости

<dependency> 
     <groupId>org.seleniumhq.selenium</groupId> 
     <artifactId>selenium-firefox-driver</artifactId> 
     <version>2.31.0</version> 
     <scope>test</scope> 
    </dependency> 

Теперь я «МВН установить» эд родительский проект, когда я включаю этот родительский проект как зависимость в моем ребенке проект

<dependency> 
     <groupId>group</groupId> 
     <artifactId>parentproject</artifactId> 
     <version>0.0.1-SNAPSHOT</version> 
    </dependency> 

selenium-firefox-driver не доступен. Доступны скопированные зависимости .

Как я могу сделать его доступным? Я не буду изменять область действия ни в родительском проекте, ни в дочернем проекте. Потому что мне нужны некоторые классы родителя во время выполнения

ответ

0

Dependency Scope сказал, что compile - это область по умолчанию, которая используется, если ни один не указан. Это влияет на транзитивные зависимости по-разному. По обозревателю, если зависимость равна compile области действия, транзитивная область test будет опущена. Дополнительную информацию см. На странице Maven: The Complete Reference: Project Dependencies.

3

Вместо включения родительского проекта в качестве зависимости от вашего дочернего помпа, вы должны сделать родительский проект как parent вашего дочернего пом.

<parent> 
    <groupId>group</groupId> 
    <artifactId>parentproject</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
</parent> 

Вы не можете назвать это parent project иначе.

2

Как указывает Charlee Chitsuk в своем ответе, ваша сфера (компилировать в проекте ребенка) будет опускать тест зависимостей прилагаемого проекта.

Чистое решение было бы разделить озабоченность родительского проекта на два отдельных проекта:

  • родитель-тест: Этот проект включает в себя ваши зависимостей между тестами (например selenium-firefox-driver) с компилировать сферы , Кроме того, этот проект содержит все ваши общие тестовые ресурсы, например. Базовые классы JUnit, в src/main/java.
  • parent-business: Этот проект содержит только бизнес-функциональность родительского проекта. Включите parent-test здесь с test scope.

В вашем детском проекте, теперь вы можете включить parent-test с областью тест, а также, что дает вам доступ к его ресурсам с правой области.

Эта настройка обеспечит четкую структуру проекта с чистой областью обзора, что позволит избежать проблем, о которых вы говорили. Да, это немного сложнее из-за дополнительного проекта, но он намного чище.

Смежные вопросы