Выполнение плагина Maven GWT на другой кодовой базе (модуле), отличной от текущего проекта

#java #maven #google-app-engine #gwt

#java #maven #google-app-engine #gwt

Вопрос:

У меня есть проект GWT с несколькими модулями (клиентский, серверный, общий, ..), И у меня есть требование, чтобы режим Super Dev должен запускаться на сервере разработчиков App engine. После компиляции клиентской части я использую Ant-скрипт, который копирует файлы компиляции клиента GWT в каталог серверного модуля «war», и я использую следующую конфигурацию из серверного модуля:

 <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>gwt-maven-plugin</artifactId>
            <version>2.7.0</version>
            <executions>
                <execution>
                    <goals>
                        <goal>compile</goal>
                        <goal>test</goal>
                        <goal>generateAsync</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <runTarget>index.html</runTarget>
                <modules>
                    <module>module1</module>
                    <module>module2</module>
                </modules>
                <codeServerPort>9997</codeServerPort>
                <executedProject>
                   <basedir>../${basedir}/the-project-with-the-client-side-classes/</basedir>
                  <artifactId>client-artifact-id</artifactId>
                    <version>1.0</version>
                </executedProject>
                <server>com.google.appengine.tools.development.gwt.AppEngineLauncher</server>
                <warSourceDirectory>${project.build.directory}/${project.build.finalName}</warSourceDirectory>
            </configuration>
        </plugin>
  

Я попробовал <executedProject> вариант, в котором я пытаюсь указать basedir, где я хочу, чтобы плагин выполнял компиляцию GWT, но я не уверен, правильно ли я его использую. Он выдает исключение нулевого указателя:

 org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.codehaus.mojo:gwt-maven-plugin:2.7.0:run (default-cli) on project server: Execution default-cli of goal org.codehaus.mojo:gwt-maven-plugin:2.7.0:run failed.
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:212)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:116)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80)
at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:307)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:193)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:106)
at org.apache.maven.cli.MavenCli.execute(MavenCli.java:863)
at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:288)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:199)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
Caused by: org.apache.maven.plugin.PluginExecutionException: Execution    default-cli of goal org.codehaus.mojo:gwt-maven-plugin:2.7.0:run failed.
at    org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:145)
at    org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:207)
... 20 more
 Caused by: java.lang.NullPointerException
at java.io.File.<init>(File.java:277)
at   org.codehaus.mojo.gwt.ClasspathBuilder.buildClasspathList(ClasspathBuilder.java:82)
at   org.codehaus.mojo.gwt.AbstractGwtMojo.getClasspath(AbstractGwtMojo.java:223)
at org.codehaus.mojo.gwt.shell.RunMojo.doExecute(RunMojo.java:327)
at org.codehaus.mojo.gwt.shell.AbstractGwtShellMojo.execute(AbstractGwtShellMojo.java:159)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:134)
... 21 more
  

Любая помощь будет оценена

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

1. Зачем вам нужно запускать его из сборки Maven?

2. Ну, чтобы упростить задачу для других людей, работающих над проектом, я мог бы использовать другой Ant-скрипт, но я оставляю это на крайний случай

3. Причина, по которой я спрашиваю, мне проще запускать приложение из среды IDE, но могут быть веские причины против этого

4. Я согласен. Фактически, проект был в формате eclipse, но он преобразуется в формат Maven по многим причинам, в основном из-за большого количества зависимостей.