2015-08-30 1 views
0

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

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

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

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

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

Я использую плагин версии 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 (так что модуль будет скомпилирован до запуска любого метода тестирования).
+0

Спасибо Томас. Не идеально, но я думаю, что я иду на первый вариант, даже если он будет содержать только несколько классов/конфигурационных файлов в начале. Это легко понять другими (ремонтопригодность) и следовать текущей настройке, которой мы следуем. Благодаря... – edbras

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