2014-12-04 19 views
1

我正嘗試使用GWT從Java文件生成Javascript。
我正在使用Maven構建我的GWT項目,但現在我試圖縮短Maven構建時間。
我不是Maven專家,所以我來到這裏..
看來Maven是從我的Java文件生成.class文件,我不認爲這是必要的,因爲我只需要Javascript文件,而GWT是一個源代碼編譯器。
我不需要任何罐子,戰爭或其他任何東西。只是Javascript文件。
這裏是我的POM文件:
Maven GWT - 僅輸出Javascript文件

<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/xsd/maven-4.0.0.xsd"> 
<modelVersion>4.0.0</modelVersion> 

<groupId>com.app</groupId> 
<artifactId>webapp</artifactId> 
<version>1.0</version> 
<packaging>jar</packaging> 

<dependencies> 
    <dependency> 
     <groupId>org.timepedia.exporter</groupId> 
     <artifactId>gwtexporter</artifactId> 
     <version>2.4.0</version> 
     <scope>provided</scope> 
    </dependency> 
    <dependency> 
     <groupId>com.google.gwt</groupId> 
     <artifactId>gwt-user</artifactId> 
     <version>2.7.0</version> 
     <scope>provided</scope> 
    </dependency> 
</dependencies> 

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <version>3.2</version> 
      <configuration> 
       <source>1.6</source> 
       <target>1.6</target> 
      </configuration> 
     </plugin> 

     <plugin> 
      <groupId>org.codehaus.mojo</groupId> 
      <artifactId>gwt-maven-plugin</artifactId> 
      <version>2.7.0</version> 

      <executions> 
       <execution> 
        <configuration> 
         <webappDirectory> 
          ${WEBAPP_DIRECTORY} 
         </webappDirectory> 
        </configuration> 
        <goals> 
         <goal>compile</goal> 
        </goals> 
       </execution> 
      </executions> 
     </plugin> 
    </plugins> 

    <sourceDirectory>src</sourceDirectory> 
</build> 

回答

1
  1. 這是確定Maven在編譯你的java文件,產生的.class使用javac,它保證你的Java語法是正確的,你可以在任何IDE中使用您的源代碼。所以忽略它們。
  2. 爲了將你的代碼編譯成JS,你必須配置maven來執行GWT編譯器,它使用gwt-maven plugin來完成。請注意,你的java代碼應該與emulated GWT JRE兼容,所以有一些限制要考慮。
  3. 一切工作完成後,您將在文件夾target/artifactId-version/moduleName中獲得JS代碼。您將獲得需要在Web服務器上發佈的所有內容。因此,您將獲得一個module.nocache.js文件,該文件是加載代碼的引導腳本,以及一些MD5.cache.jsMD5.cache.html文件,具體取決於您在項目中使用的鏈接器以及所選的排列數。
  4. 當然,如果您使用single script linker,則您可以製作一個唯一的輸出文件collapse all permutations

根據您的配置,看來你要導出您的Java API使用gwt-exporter給JS,你可以使用jsUpload Maven項目作爲參考這是JS導出的gwtupload圖書館寫在GWT的版本。

[編輯]

爲了生產JS一個Web服務,我會打電話給編譯器,而不是直接通過行家做的。這將節省很多時間mvn花費解析配置,檢查依賴項,運行不需要的任務等。您可以簡單地運行maven編譯並獲取ps -feawww的輸出或查看gwt-maven CompileMojo以瞭解如何編寫參數列表。我將考慮使用帶增量選項的草稿模式編譯。

+0

1.我想要構建的是一個Web服務,它接受Java代碼並將其轉換爲Javascript,因此對於我來說,構建將會很快,因爲我在我的服務器上執行Maven時會很快。 2. gwt-maven-plugin已經在我提供的POM中工作。 JavaScript文件生成,一切工作正常。我試圖改進的唯一事情就是構建時間。 jsUpload看起來很有趣。 – 2014-12-04 10:07:37

+0

跳過java-> class將爲您節省遠不到構建時間的1% - java-> js是昂貴的部分(儘管速度一直很快)。一個更好的主意可能是考慮避免優化(以及更大的JS),以便發出超級開發模式代碼(可以在一兩秒內重新編譯以進行小的更改)。 – 2014-12-04 17:18:58

+0

考慮使用草稿模式和增量選項,並直接調用編譯器從您的服務而不是fork到mvn,編輯我的響應。 – 2014-12-05 08:47:03