GWT получает унаследованный модуль на пути к классам компилятора - PullRequest
2 голосов
/ 20 мая 2011

У меня есть проект с несколькими модулями gwt, один из которых является библиотечным модулем без точки входа, от которой наследуются другие модули. Все модули содержатся в одном проекте, построенном с использованием maven и gwt-maven-plugin. К сожалению, сборка проекта не удалась, потому что gwt: compile ищет унаследованный модуль в пути к классам, когда он компилирует основные модули, которые его наследуют. Как получить библиотечный модуль на пути к классам для компиляции основных модулей?

Ответы [ 3 ]

5 голосов
/ 08 июня 2011

Вам нужно будет сделать несколько творческих "Maven-ing", как я только что придумал термин, чтобы описать это. (На самом деле это, вероятно, вообще не творческий подход, но я сам немного новичок в Maven, так что это меня тоже немного озадачило).

В некотором смысле вы правы, GWT-компилятор ищет унаследованный модуль source в пути к классам, когда он пытается скомпилировать ваш "основной" модуль. Чтобы достичь этого, вам нужно будет добавить зависимость к pom основного модуля от источников библиотечного модуля (строго для фазы компиляции).

Примерно так:

...
<artifactId>main-module</artifactId>
...
<dependency>
  <groupId>library-group</groupId>
  <artifactId>library-artifact</artifactId>
  <type>jar</type>
  <version>0.1-SNAPSHOT</version>
  <classifier>sources</classifier>
  <scope>compile</scope>
</dependency>
...

Теперь, откуда вы берете эти источники, могут отличаться. Если вы просто пытаетесь сделать это из IDE, например Eclipse, этого, вероятно, достаточно, потому что плагин m2eclipse достаточно умен, чтобы знать, где взять эти источники (если библиотечный модуль также находится в вашем рабочем пространстве). Если это ваш фактический процесс сборки, то вам нужно будет изменить pom библиотечного модуля для создания артефакта -sources вместе со стандартным «библиотечным артефактом». Таким образом, вы получите в итоге оба:

library-artifact-0.1-SNAPSHOT.jar

и

library-artifact-0.1-SNAPSHOT-sources.jar

Надеюсь, более понятно, как плагин gwt-maven поступает с этого момента.

Почти забыл, еще один вопрос, на который я здесь ответил, также может быть полезным: Структура проекта GWT .

2 голосов
/ 16 августа 2011

Хорошо, я смог решить эту проблему путем явного перечисления моих модулей GWT в конфигурации gwt-maven-plugin файла pom проекта. Сделав это, я смог обеспечить порядок компиляции GWT, гарантируя, что общий модуль был скомпилирован первым и доступен для других модулей, которые наследуют его во время их компиляции.

Вот пример конфигурации:

<configuration>
  <modules>
    <module>com.foo.gwt.shared.Shared</module>
    <module>com.foo.feature.one.gwt.One</module>
    <module>com.foo.feature.two.gwt.Two</module>
  </modules>
</configuration>

Спасибо Jason482 за помощь.

0 голосов
/ 17 сентября 2014

Я бы предпочел прокомментировать ответ выше, но у меня недостаточно представителей, чтобы сделать это.Так что я публикую свои выводы здесь.

Ответ Jason482 работал для меня.Добавление:

<classifier>sources</classifier> <scope>compile</scope>

к каждой из моих зависимостей подмодулей внутри реактора помогла решить мою проблему.

Решение, которое применило mreynolds, добавив ссылки на модуль GWT в конфигурацию gwt-maven-plugin основного файла pom, кажется необходимым ТОЛЬКО, если у вас есть другие точки входа в ваших подмодулях GWT.Я не сделал, так что этот шаг не был необходим для меня.

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