2009-12-12 31 views
51

Có ai biết hướng dẫn tốt về việc tạo dự án với bản phát hành GWT 2.0 mới bằng cách sử dụng maven và nhật thực không? Tôi đang gặp rất nhiều vấn đề khiến họ chơi độc đáo với nhau.Maven GWT 2.0 và Eclipse

Đối với những gì đáng giá, tôi có thể tạo một dự án gwt bằng cách sử dụng plugin eclipse maven hoạt động tốt, nhưng việc chuyển nó vào maven không hoạt động (vì vậy hướng dẫn cho việc này sẽ tuyệt vời).

Tương tự như vậy, tôi có thể sử dụng plugin maven (gwt-maven-plugin), nhưng khi tôi nhập nó vào nhật thực (nhập -> materialize dự án maven), nó không được công nhận là một dự án GWT ...

Cảm ơn

Trả lời

42

EDIT: Tôi đã cập nhật câu trả lời của mình với các bước bổ sung do OP cung cấp. Tín dụng cho OP để biết chi tiết.

Tôi chỉ phá vỡ thiết lập Eclipse tôi cố gắng để cài đặt phiên bản mới nhất của Plugin Google cho Eclipse (đối với GWT 2.0) vì vậy tôi không thể xác nhận tất cả mọi thứ nhưng, chúng ta hãy giả định điều kiện tiên quyết sau đây được đáp ứng:

Bạn có cố gắng:

  1. Tạo một dự án mới từ Eclipse (New> Other ... sau đó chọn Maven Project và chọn gwt-maven-plugin nguyên mẫu).

  2. Chỉnh sửa tạo ra pom.xml, cập nhật gwt.version tài sản để 2.0.0 (đã được phát hành trong repo trung ương), thêm Codehaus Snapshot kho và thiết lập các phiên bản gwt-maven-plugin để 1.2-SNAPSHOT (phiên bản 1.2 không được phát hành vào trung tâm, điều này sẽ sớm xảy ra) 1.2 (cũng đã được phát hành ở trung tâm).

  3. Thêm <runTarget> vào cấu hình gwt-maven-plugin như được ghi trong Using the Google Eclipse Plugin.

  4. Định cấu hình plugin maven-war như được nêu trong trang được đề cập trong bước trước.

  5. thủ phép GWT về dự án từ sở thích dự án bằng cách thiết lập Sử dụng Google Web Toolkit hộp kiểm Bước này là không cần thiết vì bạn sẽ được xây dựng/chạy với cấu hình chạy Maven, không phải là Plugin cho Eclipse GWT .

Đây là cách pom.xml của tôi thực sự trông giống như:

<?xml version="1.0" encoding="UTF-8"?> 
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 
    <!-- 
    GWT-Maven archetype generated POM 
    --> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>com.mycompany.demo</groupId> 
    <artifactId>my-gwtapp</artifactId> 
    <packaging>war</packaging> 
    <version>0.0.1-SNAPSHOT</version> 
    <name>gwt-maven-archetype-project</name> 

    <properties> 

     <!-- convenience to define GWT version in one place --> 
     <gwt.version>2.0.0</gwt.version> 

     <!-- tell the compiler we can use 1.5 --> 
     <maven.compiler.source>1.5</maven.compiler.source> 
     <maven.compiler.target>1.5</maven.compiler.target> 

    </properties> 

    <dependencies> 

    <!-- GWT dependencies (from central repo) --> 
    <dependency> 
     <groupId>com.google.gwt</groupId> 
     <artifactId>gwt-servlet</artifactId> 
     <version>${gwt.version}</version> 
     <scope>runtime</scope> 
    </dependency> 
    <dependency> 
     <groupId>com.google.gwt</groupId> 
     <artifactId>gwt-user</artifactId> 
     <version>${gwt.version}</version> 
     <scope>provided</scope> 
    </dependency> 

    <!-- test --> 
    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>4.4</version> 
     <scope>test</scope> 
    </dependency> 
    </dependencies> 

    <build> 
    <outputDirectory>war/WEB-INF/classes</outputDirectory> 
    <plugins> 
     <plugin> 
     <groupId>org.codehaus.mojo</groupId> 
     <artifactId>gwt-maven-plugin</artifactId> 
     <version>1.2</version> 
     <executions> 
      <execution> 
      <goals> 
       <goal>compile</goal> 
       <goal>generateAsync</goal> 
       <goal>test</goal> 
      </goals> 
      </execution> 
     </executions> 
     <configuration> 
      <runTarget>com.mycompany.demo.gwt.Application/Application.html</runTarget> 
     </configuration> 
     </plugin> 
     <!-- 
      If you want to use the target/web.xml file mergewebxml produces, 
      tell the war plugin to use it. 
      Also, exclude what you want from the final artifact here. 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-war-plugin</artifactId> 
       <configuration> 
        <webXml>target/web.xml</webXml> 
        <warSourceExcludes>.gwt-tmp/**</warSourceExcludes> 
       </configuration> 
      </plugin> 
      --> 
     <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-war-plugin</artifactId> 
     <version>2.0.2</version> 
     <configuration> 
      <warSourceDirectory>war</warSourceDirectory> 
      <webXml>src/main/webapp/WEB-INF/web.xml</webXml> 
     </configuration> 
     </plugin>  
    </plugins> 
    </build> 

</project> 

Chạy gwt:eclipse mục tiêu (sử dụng m2eclipse Maven2> xây dựng ...) để thiết lập môi trường của bạn và tạo ra các cấu hình khởi chạy cho module GWT của bạn .

Chạy gwt:compile gwt:run để biên dịch và chạy mô-đun GWT trong chế độ Lưu trữ GWT.

+0

Cảm ơn bạn đã trả lời. Đã làm như trong bài đăng của bạn, nhưng cũng đã thực hiện các bước bổ sung để chỉ định SDK GWT (nhấp chuột phải vào dự án-> google-> Cài đặt Bộ công cụ web). Nó dường như để biên dịch, nhưng khi chạy dự án (trong nhật thực), tôi không nhận được bất kỳ liên kết nào trong tab Chế độ phát triển để mở ứng dụng ... Bất kỳ ý tưởng nào về lý do này? – Lehane

+0

Ok, vì vậy tôi (cuối cùng) đã làm cho nó hoạt động. Mặc dù vẫn có vẻ là một vấn đề với chế độ phát triển eclipse hiển thị một liên kết đến ứng dụng. Về cơ bản, hãy làm theo câu trả lời của Pascal, nhưng sau đó làm theo các hướng dẫn trên http://mojo.codehaus.org/gwt-maven-plugin-1.1/eclipse/google_plugin.html. Sau đó sử dụng "mvn gwt: compile gwt: run" để xem các trang. @Pascal - Nếu bạn muốn nối thêm câu trả lời để phản ánh rằng bạn phải (1) chỉ định trong nhật thực rằng dự án là một dự án, (2) thay đổi pom như được nêu trong trang ở trên và (3) chạy ' mvn gwt: eclipse 'trước khi biên dịch tôi sẽ chấp nhận câu trả lời. – Lehane

+1

Cảm ơn phản hồi. Tôi đã cập nhật câu trả lời của tôi cho phù hợp (Tôi đã thử nghiệm này, tất cả mọi thứ hoạt động tốt). Cảm ơn một lần nữa! –

1

Chỉ trong trường hợp. Nếu bạn sử dụng Google GIN trong dự án của mình, bạn nên thêm biên dịch mục tiêu trước gwt: biên dịch. Vì vậy, toàn bộ dãy sẽ là:

compile gwt:compile gwt:run 

Bạn có thể đọc lời giải thích ở đây: http://code.google.com/p/google-gin/wiki/GinTutorial#Compilation

1

Một vấn đề gây phiền nhiễu với GWT và m2eclipse:

GWT Development Mode đòi hỏi tất cả các lọ phải được đặt trong thư mục WEB-INF/lib. Đó là đặc biệt đau đớn khi các lập trình viên sử dụng m2eclipse, cung cấp hộp chứa classpath Eclipse của riêng mình .

http://code.google.com/p/google-web-toolkit/issues/detail?id=5693

tin tốt, thực hiện giải pháp đang làm việc cho tôi

0

chủ đề rất hữu ích

@Pascal: cảm ơn bạn (Tôi donot có đủ uy tín để nhận xét về bài viết khác, vì thế đây Tôi đang đăng bài về những gì đang làm việc cho tôi).

Tôi cần 2.5.1 GWT (không phải 2.6, mới nhất) làm việc với maven và nhật thực (vì sencha GXT chưa được hỗ trợ cho 2.6). Thử sau đây mà không may mắn

1) thử vài nguyên mẫu với trong nhật thực để tạo ra các dự án

2) sửa đổi tập tin pom (dựa trên thảo luận ở trên) để thay đổi phiên bản cho 2.5.1

Sau đây làm việc cho tôi http://mojo.codehaus.org/gwt-maven-plugin/user-guide/archetype.html

mvn archetype:generate -DarchetypeGroupId=org.codehaus.mojo -DarchetypeArtifactId=gwt-maven-plugin -DarchetypeVersion=2.5.1 
mvn gwt:eclipse 
mvn gwt:run 
Các vấn đề liên quan