использование build-helper-maven-plugin и multi-модуля пропускает тест

Я использую build-helper-maven-plugin для устаревшего проекта с нестандартной древовидной папкой.

Я использую это так:

        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>build-helper-maven-plugin</artifactId>
            <executions>
                <execution>
                    <id>add-source</id>
                    <phase>generate-sources</phase>
                    <goals>
                        <goal>add-source</goal>
                    </goals>
                    <configuration>
                        <sources>
                            <source>${basedir}/firstmodule/src</source>
                            <source>${basedir}/secondmodule/src</source>
                        </sources>
                    </configuration>
                </execution>
                <execution>
                    <id>add-test-source</id>
                    <phase>generate-sources</phase>
                    <goals>
                        <goal>add-test-source</goal>
                    </goals>
                    <configuration>
                        <sources>
                            <source>${basedir}/firstmodule/tests</source>
                            <source>${basedir}/secondmodule/tests</source>
                                                        </sources>
                    </configuration>
                </execution>
            </executions>
        </plugin>

Работает корректно, если запустить mvn install в корне проекта, тесты пройдены.

Однако этот проект является подмодулем в более крупном проекте. Если я запускаю mvn install в корневой папке родительского проекта, maven не выполняет тест.

кажется, работает, но уверенный не обнаруживает никаких тестов:

[INFO] Building MyLegacyProject
[INFO]    task-segment: [clean, install]
[INFO] ------------------------------------------------------------------------
[INFO] [clean:clean {execution: default-clean}]
[INFO] Deleting directory C:\DEV\perforce\1992\depot\MyProject\release\BUG_FIXING\MyLegacyProject\target
[INFO] [build-helper:add-source {execution: add-source}]
[INFO] Source directory: C:\DEV\perforce\1992\depot\MyProject\release\BUG_FIXING\MyLegacyProject\firstmodule\src added.
[INFO] Source directory: C:\DEV\perforce\1992\depot\MyProject\release\BUG_FIXING\MyLegacyProject\secondmodule\src added.
[INFO] [build-helper:add-test-source {execution: add-test-source}]
[INFO] Test Source directory: C:\DEV\perforce\1992\depot\MyProject\release\BUG_FIXING\MyLegacyProject\firstmodule\tests added.
[INFO] Test Source directory: C:\DEV\perforce\1992\depot\MyProject\release\BUG_FIXING\MyLegacyProject\secondmodule\tests added.
[debug] execute contextualize
[INFO] [resources:resources {execution: default-resources}]
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 40 resources
[INFO] Copying 40 resources
[WARNING] While downloading com.sun.xml:saaj-impl:1.3
  This artifact has been relocated to com.sun.xml.messaging.saaj:saaj-impl:1.3.


[WARNING] While downloading javax.xml:jaxb-api:2.1
  This artifact has been relocated to javax.xml.bind:jaxb-api:2.1.


[INFO] [compiler:compile {execution: default-compile}]
[INFO] Compiling 752 source files to C:\DEV\perforce\1992\depot\MyProject\release\BUG_FIXING\MyLegacyProject\target\classes
[debug] execute contextualize
[INFO] [resources:testResources {execution: default-testResources}]
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 2 resources
[INFO] Copying 34 resources
[INFO] [compiler:testCompile {execution: default-testCompile}]
[INFO] Compiling 15 source files to C:\DEV\perforce\1992\depot\MyLegacyProject\release\BUG_FIXING\MyLegacyProject\target\test-classes
[INFO] [surefire:test {execution: default-test}]
[INFO] Surefire report directory: C:\DEV\perforce\1992\depot\MyLegacyProject\release\BUG_FIXING\MyLegacyProject\target\surefire-reports

-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Running TestSuite
Tests run: 0, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.381 sec

Results :

Tests run: 0, Failures: 0, Errors: 0, Skipped: 0

есть идеи, как это сделать?


person Hugo Lassiège    schedule 13.02.2012    source источник
comment
Итак, составлено 15 тестовых классов. Есть ли у вас индивидуальная конфигурация безотказной работы?   -  person Raghuram    schedule 13.02.2012
comment
Нет, surefire не настроен, я использую настройки по умолчанию   -  person Hugo Lassiège    schedule 13.02.2012


Ответы (3)


Попробуйте запустить mvn в режиме отладки (-X), чтобы проверить, подходят ли свойства, используемые surefire, для вашей древовидной папки.

person Emmanuel Venisse    schedule 13.02.2012

Вы используете Maven 3? $ {basedir} распознается только maven 3 (и игнорируется maven 2 :() Как вы понимаете использование basedir? Это путь к каталогу POM, где началась сборка. Таким образом, это будет путь к каталог родительского проекта или один из его модулей в зависимости от того, откуда вы запускаете сборку. Во втором случае путь будет неправильным. Я полагаю, вы ожидали, что всегда будете иметь путь к корневому каталогу вашего проекта?

person Arnaud Héritier    schedule 14.02.2012
comment
Я использую maven2. Я использовал код, чтобы попытаться воспроизвести его с помощью простого проекта: bitbucket.org/hlassiege / maven-build-helper / src Однако он работает с этим примером. Я попытался выяснить разницу в моем реальном проекте. А что касается baseir, я сначала попробовал без него, но подозревал проблему с путями. Так что я пробовал наивно их обосновать. @ emmanuel-venisse - person Hugo Lassiège; 14.02.2012

Хорошо, я нашел !!!

У кого-то была такая же проблема: https://stackoverflow.com/a/6925096/242658

Однако понять это было действительно сложно.

Это не было связано с build-helper-maven-plugin, и я не знаю, почему у меня не было этой проблемы в режиме одного модуля.

Я использовал powermock и powermock, которые использовались в TestNG. А с testng мои тесты не обнаруживаются безошибочно. Поэтому мне пришлось исключить testng:

<dependency>
  <groupId>org.powermock</groupId>
  <artifactId>powermock-mockito-release-full</artifactId>
  <version>1.4.9</version>
  <classifier>full</classifier>
  <exclusions>
    <exclusion>
      <artifactId>powermock-module-testng</artifactId>
      <groupId>org.powermock</groupId>
    </exclusion>
  </exclusions>
</dependency>
person Hugo Lassiège    schedule 14.02.2012