2010-09-04 2 views
4

Я хотел бы иметь несколько проектов GWT, которые имеют общий код. Это возможно? AFAICT моим проектам GWT нужно, чтобы каждый из них имел свой собственный каталог, источник напрямую под ним, что, по-видимому, препятствует совместному использованию кода. Я пытался использовать связанные папки, но GWT, похоже, не понравилось (описано here).Как поделиться кодом между несколькими проектами Eclipse GWT?

Если я хочу сделать это, это мой единственный выбор, чтобы включить код, который я хочу передать в файл .jar, а затем наследовать его в каждом из XML-файлов моих проектов? Есть ли способ сделать eclipse автоматически делать эту упаковку, или мне нужен какой-то цикл «change-shared-code/compile-jar/use-in-other-project»?

Есть ли другие решения?

ответ

1

Я думаю, все, что вам нужно сделать, это сделать два отдельных проекта GWT, например. Проект А для общего кода и проект B, который использует код из проекта А.

После того, как у вас есть эти два проекта, требуется два шага:

  1. Добавить проект А проецировать путь сборки Б в Eclipse.
  2. проект Наследование gwt.xml A в проекте Б.

Теперь вы должны быть в состоянии использовать Hosted Mode/компиляции в Eclipse.

+0

Я с нетерпением жду этого. Благодарю. –

+0

Это только половина решения, так как при добавлении проекта A к пути сборки проекта B проект B будет видеть только скомпилированные классы A, а не файлы '.java', а компилятору GWT требуется' .java 'файлы тоже. Таким образом, вы должны добавить java-файлы в качестве «ресурсов» к выходу A. Вы можете сделать это, если A - проект Maven, как показано выше. – ddekany

4

Я решаю эту проблему с помощью maven. Общий код упакован как отдельный проект maven, а затем используется как библиотека. Вот фрагменты из pom.xml файла:

<dependency> 
    <groupId>com.google.gwt</groupId> 
    <artifactId>gwt-user</artifactId> 
    <version>2.0.4</version> 
    <scope>provided</scope> 
</dependency> 
<dependency> 
    <groupId>com.google.gwt</groupId> 
    <artifactId>gwt-dev</artifactId> 
    <version>2.0.4</version> 
    <scope>provided</scope> 
</dependency> 

<build> 
    <resources> 
    <resource> 
     <directory>src/main/java</directory> 
     <includes> 
     <include>**/client/**/*.java</include> 
     <include>**/client/**/*.properties</include> 
     <include>**/shared/**/*.java</include> 
     <include>**/shared/**/*.properties</include> 
     <include>**/*.gwt.xml</include> 
     </includes> 
    </resource> 
    </resource> 
</build> 

Вышеуказанные копии конфигурации сборки дополнительные исходные файлы, необходимые GWT компилятором в окончательном баночке.

В случае использования eclipse в качестве IDE плагин m2eclipse может использоваться для автоматической обработки всех зависимостей. Возможно, все проекты, открытые в одном рабочем пространстве, и classpath общего проекта будут совместно использоваться. Единственным недостатком является требование время от времени вызывать project > clean (заставит встроенный maven скопировать все ресурсы, указанные в вышеприведенном фрагменте).

+0

Я не много работал с Maven, но на данный момент это выглядит неизбежным, поэтому я попробую это, когда у меня появится шанс. Благодарю. –

+0

Он работал здесь, должен быть принят? Мне даже не нужно запускать сборку Maven, поскольку интеграция Eclipse Maven (а именно в Kepler) автоматически обновляет файлы '.java' в каталоге вывода, когда я их сохраняю. – ddekany