Как скомпилировать проект GWT, используя ТОЛЬКО maven

#java #maven #gwt #compilation

#java #maven #gwt #Сборник

Вопрос:

У меня есть проект GWT, который я в настоящее время использую для компиляции Eclipse GWT plugin , но теперь я хотел бы сделать свой проект компилируемым независимо от IDE, и подход заключается в использовании только Maven.

Из моих исследований я выяснил, что вам нужно добавить GWT Compiler plugin pom.xml в, чтобы скомпилировать код из Java в файлы Javascript (файлы JS могут быть позже упакованы внутри war), но, похоже, я не могу найти зависимость компилятора в репозитории maven или хорошую документацию о компиляторе. Можете ли вы опубликовать «базовую» рабочую pom.xml файл, который можно использовать для компиляции проекта Hello world GWT, был бы очень признателен, спасибо.

Редактировать:

  • Я использую GWT 2.7.0

Комментарии:

1. Какую версию GWT вы используете?

2. @tgdavies Я использую GWT 2.7.0

3. Вы пытались использовать архетип GWT для создания начального pom.xml ?

4. Вы смотрели на tbroyer.github.io/gwt-maven-plugin/index.html ?

5. Архетипы @Yassir должны помочь в большинстве таких случаев, потому что они могут генерировать остальную часть шаблона, необходимого для конкретного стека проекта. Я помню кодирование в GWT 5-6 лет назад, и по какой-то причине я не использовал архетипы, пытаясь выяснить весь цикл сборки и запуска для модульного проекта GWT. Это привело к большой потере времени, пытаясь выяснить, что пошло не так. Итак, либо идея tgdavies, либо gwt-maven-plugin.github.io/gwt-maven-plugin (последний в 2017 году), скорее всего, сработает для вас.

Ответ №1:

Вы можете использовать gwt-maven-plugin . Вы упомянули, что у вас уже есть плагин Eclipse GWT, поэтому вы можете создать новый проект GWT (например, щелкните правой кнопкой мыши на Project Explorer -> New -> Other… -> Проект веб-приложения GWT). Введите имя проекта и пакет и убедитесь, что установлен флажок «Создать проект Maven». Тогда у вас есть рабочий образец pom.xml:

 <?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">
   <!-- POM file generated with GWT webAppCreator -->
   <modelVersion>4.0.0</modelVersion>
   <groupId>com.world.hello</groupId>
   <artifactId>HelloWorld</artifactId>
   <packaging>war</packaging>
   <version>1.0-SNAPSHOT</version>
   <name>com.world.hello.HelloWorld</name>
   <properties>
      <!-- Setting maven.compiler.source to something different to 1.8
         needs that you configure the sourceLevel in gwt-maven-plugin since
         GWT compiler 2.8 requires 1.8 (see gwt-maven-plugin block below) -->
      <maven.compiler.source>1.8</maven.compiler.source>
      <maven.compiler.target>1.8</maven.compiler.target>
      <!-- Don't let your Mac use a crazy non-standard encoding -->
      <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
      <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
   </properties>
   <dependencyManagement>
      <dependencies>
         <!-- ensure all GWT deps use the same version (unless overridden) -->
         <dependency>
            <groupId>com.google.gwt</groupId>
            <artifactId>gwt</artifactId>
            <version>2.9.0</version>
            <type>pom</type>
            <scope>import</scope>
         </dependency>
      </dependencies>
   </dependencyManagement>
   <dependencies>
      <dependency>
         <groupId>com.google.gwt</groupId>
         <artifactId>gwt-servlet</artifactId>
         <scope>runtime</scope>
      </dependency>
      <dependency>
         <groupId>com.google.gwt</groupId>
         <artifactId>gwt-user</artifactId>
         <scope>provided</scope>
      </dependency>
      <dependency>
         <groupId>com.google.gwt</groupId>
         <artifactId>gwt-dev</artifactId>
         <scope>provided</scope>
      </dependency>
      <dependency>
         <groupId>junit</groupId>
         <artifactId>junit</artifactId>
         <version>4.11</version>
         <scope>test</scope>
      </dependency>
   </dependencies>
   <build>
      <!-- Output classes directly into the webapp, so that IDEs and "mvn process-classes" update them in DevMode -->
      <outputDirectory>${project.build.directory}/${project.build.finalName}/WEB-INF/classes</outputDirectory>
      <plugins>
         <!-- GWT Maven Plugin-->
         <plugin>
            <groupId>net.ltgt.gwt.maven</groupId>
            <artifactId>gwt-maven-plugin</artifactId>
            <version>1.0-rc-8</version>
            <executions>
               <execution>
                  <goals>
                     <goal>compile</goal>
                     <goal>test</goal>
                  </goals>
               </execution>
            </executions>
            <configuration>
               <moduleName>com.world.hello.HelloWorld</moduleName>
               <moduleShortName>HelloWorld</moduleShortName>
               <failOnError>true</failOnError>
               <!-- GWT compiler 2.8 requires 1.8, hence define sourceLevel here if you use
               a different source language for java compilation -->
               <sourceLevel>1.8</sourceLevel>
               <!-- Compiler configuration -->
               <compilerArgs>
                  <!-- Ask GWT to create the Story of Your Compile (SOYC) (gwt:compile) -->
                  <arg>-compileReport</arg>
                  <arg>-XcompilerMetrics</arg>
               </compilerArgs>
               <!-- DevMode configuration -->
               <warDir>${project.build.directory}/${project.build.finalName}</warDir>
               <classpathScope>compile runtime</classpathScope>
               <!-- URL(s) that should be opened by DevMode (gwt:devmode). -->
               <startupUrls>
                  <startupUrl>HelloWorld.html</startupUrl>
               </startupUrls>
            </configuration>
         </plugin>
         <!-- Skip normal test execution, we use gwt:test instead -->
         <plugin>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.17</version>
            <configuration>
               <skip>true</skip>
            </configuration>
         </plugin>
      </plugins>
   </build>
</project>
 

Запуск mvn clean install на консоли скомпилирует ваш проект с использованием Maven. Или щелкните правой кнопкой мыши свой проект в обозревателе проектов и выберите Maven -> Обновить проект…

Иногда после создания проекта GWT Maven Eclipse автоматически не распознает его как проект Maven. Если это так, щелкните правой кнопкой мыши свой проект в обозревателе проектов и выберите Настроить -> Преобразовать в проект Maven.