Maven: Как включить зависимость на этапе тестирования и исключить ее на этапе тестирования интеграции? - PullRequest
1 голос
/ 22 ноября 2011

Я использую Maven 3.0.3.
Можно ли включить зависимость только для моей фазы тестирования, а затем еще одну зависимость только для моей фазы интеграции?Когда эти две зависимости включены вместе

<dependency> 
    <groupId>com.google.gwt</groupId> 
    <artifactId>gwt-dev</artifactId> 
    <version>${gwtVersion}</version> 
    <scope>test</scope> 
</dependency> 
... 
<dependency> 
    <groupId>org.seleniumhq.selenium</groupId> 
    <artifactId>selenium-java</artifactId> 
    <version>2.13.0</version> 
    <scope>test</scope> 
</dependency> 

, я получаю ошибку java.lang.NoSuchMethodError: org.apache.http.conn.scheme.Scheme.<init> при выполнении моих интеграционных тестов Selenium.Когда зависимость GWT исключается, тесты Selenium запускаются.Мне все еще нужна зависимость GWT для фазы тестирования, tho.

Ответы [ 3 ]

1 голос
/ 23 ноября 2011

Использовать профили . Профиль позволяет добавлять зависимости в зависимости от аргументов параметра командной строки -P.

1 голос
/ 28 ноября 2011

Что касается приведенных ответов, то мне больше всего понравился простой добавление «classpathDependencyExcludes» к выполнению моего аварийного плагина ...

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-failsafe-plugin</artifactId>
            <version>2.10</version>
            <executions>
                <execution>
                    <goals>
                        <goal>integration-test</goal>
                        <goal>verify</goal>
                    </goals>
                    <configuration>
                        <includes>
                            <include>**/integration/**</include>
                        </includes>
                        <systemPropertyVariables>
                            <tomcat.port>${tomcat.servlet.port}</tomcat.port>
                            <project.artifactId>${project.artifactId}</project.artifactId>
                        </systemPropertyVariables>
                        <classpathDependencyExcludes>
                            <classpathDependencyExcludes>com.google.gwt:gwt-dev</classpathDependencyExcludes>
                        </classpathDependencyExcludes>
                    </configuration>
                </execution>
            </executions>
        </plugin>

Это гарантировало, что проблемная зависимость (в данном случае gwt-dev) не будет появляться при запуске фазы интеграционного теста.

0 голосов
/ 23 ноября 2011

Разные наборы зависимостей в профилях Maven - единственный способ достичь этого, поскольку «test» scope включает в себя как «test», так и «интеграционный тест» phase .

...