Как скомпилировать модуль GWT, содержащийся в исходном коде теста, с помощью gwt-maven-plugin?

Я пытаюсь запустить GWT-компиляцию с maven через плагин: gwt-maven-plugin, но модуль GWT содержится в пути к исходному тексту теста, а именно: src/test/java. И плагин жалуется, что не может найти модуль GWT.

Однако модуль работает нормально при использовании его через файл запуска Eclipse, используя класс GWT DevMode. Почему плагин gwt maven не может найти модуль GWT?

Проект содержит 2 модуля Gwt, 1 GwtTotalProd содержался в основном источнике и GwtTotalTest содержался в тестовом источнике. Плагин gwt maven может создавать GwtTotalProd, но не GwtTotalTest, почему (оба работают нормально через файл запуска Eclipse)? Я пробую это с включением тестовых источников в сборку (см. Ниже), но не повезло.

Глядя на выходные данные отладки maven (ключ -X), я могу понять, что он не может его найти, потому что выполнение GWT SDK содержит src/main/java, но не src/test/java, и оно не включает зависимости определено в плагине. Так как же сказать плагину, чтобы он смотрел в пути к тестовому источнику?

Я мог бы сделать это, создав дополнительный проект "test/dev", который включает GwtTotalTest в основной источник (я делаю это для других проектов), но в этом случае это нежелательно, так как это был бы пустой проект только с Gwt файл конфигурации;)... Или, может быть, я должен связать его с другой фазой maven? Вместо цели "compile" я попробовал цель "test" (test-compile, похоже, не работает, maven говорит, что не может найти цель в своей программе), но тоже не повезло...

Я использую плагин версии 2.7.0 и конфиг maven:

            <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>gwt-maven-plugin</artifactId>
            <executions>
                <execution>
                    <phase>compile</phase>
                    <id>TotalProd</id>
                    <goals>
                        <goal>compile</goal>
                    </goals>
                    <configuration>
                        <module>com.total.GwtTotalProd</module>
                        <mode>htmlunit</mode>
                        <draftCompile>false</draftCompile>
                        <disableClassMetadata>true</disableClassMetadata> 
                        <compileReport>true</compileReport>
                        <warSourceDirectory>${gwt.war}</warSourceDirectory>
                        <webappDirectory>${gwt.output.total}</webappDirectory>
                        <gen>${gwt.output.total}/${gwt.gen}</gen>
                        <extra>${gwt.output.total}/${gwt.extra}</extra>
                        <fragmentCount>8</fragmentCount>
                        <extraJvmArgs>-Xms1G -Xmx1G -Xss1024k -Dgwt.persistentunitcache=false</extraJvmArgs>
                    </configuration>
                </execution>
                <execution>
                    <phase>compile</phase>
                    <id>TotalTest</id>
                    <goals>
                        <goal>compile</goal>
                    </goals>
                    <configuration>
                        <module>com.total.GwtTotalTest</module>
                        <mode>htmlunit</mode>
                        <draftCompile>false</draftCompile>
                        <disableClassMetadata>true</disableClassMetadata> 
                        <compileReport>false</compileReport>
                        <warSourceDirectory>${gwt.war}</warSourceDirectory>
                        <webappDirectory>${gwt.output.total.test}</webappDirectory>
                        <gen>${gwt.output.total.test}/${gwt.gen}</gen>
                        <extra>${gwt.output.total.test}/${gwt.extra}</extra>
                        <fragmentCount>8</fragmentCount>
                        <extraJvmArgs>-Xms1G -Xmx1G -Xss1024k -Dgwt.persistentunitcache=false</extraJvmArgs>
                        <dependencies>
                            <dependency>
                                <groupId>com.company.gwt</groupId>
                                <artifactId>total-gwt</artifactId>
                                <version>${version.gen}</version>
                                <classifier>test-sources</classifier>
                            </dependency>
                            <dependency> 
                                <groupId>com.company.gwt</groupId>
                                <artifactId>total-gwt</artifactId>
                                <version>${version.gen}</version>
                                <type>test-jar</type>
                            </dependency>
                        </dependencies>
                    </configuration>
                </execution>
            </executions>
        </plugin>

1 ответ

Решение

Плагин не предоставляет эту функцию. Как вы заметили, это (вероятно) будет testCompile цель, если это было сделано.

Есть несколько способов сделать это:

  • используйте отдельный модуль Maven, как вы заметили
  • использовать maven-invoker-plugin запускать модуль Maven во время сборки, источники которого содержатся в самом модуле (а не в качестве отдельного модуля в сборке реактора)
  • использовать GWTTestCase чья getModuleName() возвращается com.total.GwtTotalTest и ты бежишь с gwt:test с productionMode установлен в true (так что модуль будет скомпилирован до запуска любого метода тестирования).
Другие вопросы по тегам