2010-11-07 115 views
4

我需要設置Maven來:如何使用Maven將GWT模塊打包爲Jar文件?

一)編譯GWT模塊

二)* .java文件複製在罐子裏(這樣它可以在其他GWT模塊導入)

Ç )將編譯步驟的結果複製到jar中(因此它可以在服務器上原樣使用)

有沒有人知道如何做到這一點?

其基本思想是我想從我的Spring MVC項目中分離出我的GWT項目,並刪除Spring應用程序可能具有的任何依賴項,以便GWT罐子&插件。

這樣我就可以使用GWT模塊作爲純JavaScript庫,並直接從Jar文件中使用org.springframework.js.resource.ResourceServlet加載它們,同時仍然保持在其他GWT項目中重用模塊的靈活性。

任何幫助,將不勝感激。

回答

2

我安裝我想出瞭解決方案,以便其他人可以使用它:

<!-- Set the output directory to something gwt:run can use in hosted mode --> 
<outputDirectory>${project.build.directory}/${project.build.finalName}/WEB-INF/classes</outputDirectory> 
      <finalName>gwt-build-name</finalName> 
      <plugins> 
       <plugin> 
        <groupId>org.apache.maven.plugins</groupId> 
        <artifactId>maven-compiler-plugin</artifactId> 
        <configuration> 
         <source>1.6</source> 
         <target>1.6</target> 
        </configuration> 
       </plugin> 
       <plugin> 
        <groupId>org.codehaus.mojo</groupId> 
        <artifactId>gwt-maven-plugin</artifactId> 
        <version>${gwt.version}</version> 
        <executions> 
         <execution> 
          <goals> 
           <goal>compile</goal> 
           <goal>test</goal> 
          </goals> 
         </execution> 
        </executions> 
        <configuration> 
         <hostedWebapp>${project.build.directory}/${project.build.finalName}</hostedWebapp> 
        </configuration> 
       </plugin> 
       <!-- Attach the resources plugin to the prepare-package phase to include the host page & generated javascript files --> 
       <plugin> 
        <artifactId>maven-resources-plugin</artifactId> 
        <executions> 
         <execution> 
          <id>package-generated-javascript</id> 
          <phase>prepare-package</phase> 
          <goals> 
           <goal>copy-resources</goal> 
          </goals> 
          <configuration> 
           <!-- shove everything the compiler produced into the JAR/META-INF/ folder so that Spring resourceServlet can find it --> 
           <outputDirectory>${project.build.outputDirectory}/META-INF</outputDirectory> 
           <resources> 
            <resource> 
             <directory>${project.build.directory}/${project.build.finalName}</directory> 
             <includes> 
              <include>org.yournamehere.Main/**</include> 
             </includes> 
            </resource> 
           </resources> 
          </configuration> 
         </execution> 
         <execution> 
          <id>include-host-page</id> 
          <phase>compile</phase> 
          <goals> 
           <goal>copy-resources</goal> 
          </goals> 
          <configuration> 
          <outputDirectory>${project.build.directory}/${project.build.finalName}</outputDirectory> 

           <resources> 
            <resource> 
             <directory>${basedir}/src/main/webapp</directory> 
             <includes> 
              <include>**</include>           
             </includes> 
            </resource> 
           </resources> 
          </configuration> 
         </execution> 
        </executions> 
       </plugin> 

什麼上面所做的是改變輸出目錄爲目標/ finalName讓一切都在同一目錄下結束了和將資源插件附加到編譯,準備包階段以將GWT編譯器輸出複製到構建目錄。一旦有了它,默認情況下它會在最終的jar中結束。

通過這種方式,構建目錄包含託管模式需要運行的所有內容以及Spring資源servlet需要爲GWT模塊提供服務而無需任何對GWT的直接依賴關係。

相關問題