Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用maven将GWT应用程序打包到胖罐子中?_Java_Maven_Gwt_Jar - Fatal编程技术网

Java 如何使用maven将GWT应用程序打包到胖罐子中?

Java 如何使用maven将GWT应用程序打包到胖罐子中?,java,maven,gwt,jar,Java,Maven,Gwt,Jar,我的GWT应用程序目前使用maven打包成war,然后部署到tomcat。我想改为在jar中打包,这样就可以用java-jar执行,并让应用程序从Jetty这样的嵌入式web服务器上运行。类似于在开发模式下运行时发生的情况,但我希望它发生在一个易于部署的fat/uber jar中,包括html和GWT js文件。我只能为Jetty with spring找到这样做的说明,但还不能将其应用于GWT。类似的东西很接近了,只需要与GWT一起工作。您只需更改maven项目的打包即可: <proje

我的GWT应用程序目前使用maven打包成war,然后部署到tomcat。我想改为在jar中打包,这样就可以用java-jar执行,并让应用程序从Jetty这样的嵌入式web服务器上运行。类似于在开发模式下运行时发生的情况,但我希望它发生在一个易于部署的fat/uber jar中,包括html和GWT js文件。我只能为Jetty with spring找到这样做的说明,但还不能将其应用于GWT。类似的东西很接近了,只需要与GWT一起工作。

您只需更改maven项目的打包即可:

<project>
    ...
    <packaging>jar</packaging>
    ...
</project>

...
罐子
...
请注意,您是


接下来,我将确保依赖项
gwt-dev
提供了作用域(因为此依赖项已经包含jetty的旧版本)。之后,您可以添加jersey依赖项并启动为GWT应用程序服务的嵌入式服务器(例如)。

您只需更改maven项目的打包:

<project>
    ...
    <packaging>jar</packaging>
    ...
</project>

...
罐子
...
请注意,您是

接下来,我将确保依赖项
gwt-dev
提供了作用域(因为此依赖项已经包含jetty的旧版本)。之后,您可以添加jersey依赖项并启动一个为GWT应用程序服务的嵌入式服务器(例如)。


4.0.0
com.mycompany.project


4.0.0
com.mycompany.project

结合和@mam10eks的答案,我想我已经设法为一个简单的GWT应用程序找到了答案:

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">

<modelVersion>4.0.0</modelVersion>
<groupId>com.example.HelloJettyGwt</groupId>
<artifactId>HelloJettyGwt</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>HelloJettyGwt</name>

<properties>
    <gwtVersion>2.7.0</gwtVersion>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <jetty-version>9.3.2.v20150730</jetty-version>
</properties>

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>com.google.gwt</groupId>
            <artifactId>gwt</artifactId>
            <version>${gwtVersion}</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>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>3.1.0</version>
    </dependency>
    <dependency>
        <groupId>org.eclipse.jetty</groupId>
        <artifactId>jetty-servlet</artifactId>
        <version>${jetty-version}</version>
    </dependency>
    <dependency>
        <groupId>org.eclipse.jetty.websocket</groupId>
        <artifactId>javax-websocket-server-impl</artifactId>
        <version>${jetty-version}</version>
    </dependency>

</dependencies>

<build>
    <resources>
        <resource>
            <directory>src/main/resources</directory>
            <filtering>true</filtering>
        </resource>
    </resources>

    <outputDirectory>${project.build.directory}/${project.build.finalName}/WEB-INF/classes</outputDirectory>

    <plugins>
        <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>app.html</runTarget>
                <modules>
                    <module>com.example.HelloJettyGwt.app</module>
                </modules>
            </configuration>
        </plugin>

        <plugin>
            <artifactId>maven-resources-plugin</artifactId>
            <version>2.5</version>
            <executions>
                <execution>
                    <id>copy-resources</id>
                    <phase>prepare-package</phase>
                    <goals>
                        <goal>copy-resources</goal>
                    </goals>
                    <configuration>
                        <outputDirectory>${project.build.outputDirectory}</outputDirectory>
                        <resources>
                            <resource>
                                <directory>
                                    src/main/webapp
                                </directory>
                                <filtering>true</filtering>
                                <includes>
                                    <include>**/*.html</include>
                                    <include>**/*.css</include>
                                    <include>**/web.xml</include>
                                </includes>
                            </resource>

                            <resource>
                                <directory>
                                    ${project.build.directory}/${project.build.finalName}/
                                </directory>
                                <filtering>true</filtering>
                                <includes>
                                    <include>**/app/**</include>
                                </includes>
                            </resource>
                        </resources>
                    </configuration>
                </execution>
            </executions>
        </plugin>


        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>2.3.2</version>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
            </configuration>
        </plugin>

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <version>2.5</version>
            <configuration>
                <archive>
                    <manifest>
                     <mainClass>com.example.HelloJettyGwt.ServerMain</mainClass>
                    </manifest>
                    <manifestEntries>
                        <Implementation-Version>${jetty-version}</Implementation-Version>
                    </manifestEntries>
                </archive>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-shade-plugin</artifactId>
            <version>2.4.3</version>
            <executions>
                <execution>
                    <id>rebuild-war</id>
                    <phase>package</phase>
                    <goals>
                        <goal>shade</goal>
                    </goals>
                    <configuration>
                        <createDependencyReducedPom>false</createDependencyReducedPom>
                        <artifactSet>
                            <includes>
                                <include>*:*</include>
                            </includes>
                        </artifactSet>
                        <filters>
                            <filter>
                                <artifact>*:*</artifact>
                                <excludes>
                                    <exclude>META-INF/VERSION.txt</exclude>
                                    <exclude>META-INF/LICENSE.txt</exclude>
                                </excludes>
                            </filter>
                            <!-- exclude the MANIFEST.MF entries that will cause problems -->
                            <filter>
                                <artifact>javax.annotation:*</artifact>
                                <excludes>
                                    <exclude>META-INF/MANIFEST.MF</exclude>
                                </excludes>
                            </filter>
                            <filter>
                                <artifact>javax.servlet:*</artifact>
                                <excludes>
                                    <exclude>META-INF/MANIFEST.MF</exclude>
                                </excludes>
                            </filter>
                            <filter>
                                <artifact>javax.websocket:*</artifact>
                                <excludes>
                                    <exclude>META-INF/MANIFEST.MF</exclude>
                                </excludes>
                            </filter>
                            <filter>
                                <artifact>org.eclipse.jetty:*</artifact>
                                <excludes>
                                    <exclude>META-INF/MANIFEST.MF</exclude>
                                </excludes>
                            </filter>
                            <filter>
                                <artifact>org.eclipse.jetty.websocket:*</artifact>
                                <excludes>
                                    <exclude>META-INF/MANIFEST.MF</exclude>
                                </excludes>
                            </filter>
                            <filter>
                                <artifact>org.ow2.asm:*</artifact>
                                <excludes>
                                    <exclude>META-INF/MANIFEST.MF</exclude>
                                </excludes>
                            </filter>
                        </filters>
                        <transformers>
                            <transformer
                                implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer" />
                        </transformers>
                    </configuration>
                </execution>
            </executions>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-enforcer-plugin</artifactId>
            <version>1.1.1</version>
            <executions>
                <execution>
                    <id>enforce-java</id>
                    <goals>
                        <goal>enforce</goal>
                    </goals>
                    <configuration>
                        <rules>
                            <requireMavenVersion>
                                <version>[3.0.0,)</version>
                            </requireMavenVersion>
                            <requireJavaVersion>
                                <version>[1.8,)</version>
                                <message>[ERROR] OLD JDK [${java.version}] in use.
                                    Jetty
                                    ${jetty-version} requires JDK 1.8 or newer</message>
                            </requireJavaVersion>
                        </rules>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>
结合和@mam10eks的答案,我想我已经设法为一个简单的GWT应用程序找到了答案:

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">

<modelVersion>4.0.0</modelVersion>
<groupId>com.example.HelloJettyGwt</groupId>
<artifactId>HelloJettyGwt</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>HelloJettyGwt</name>

<properties>
    <gwtVersion>2.7.0</gwtVersion>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <jetty-version>9.3.2.v20150730</jetty-version>
</properties>

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>com.google.gwt</groupId>
            <artifactId>gwt</artifactId>
            <version>${gwtVersion}</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>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>3.1.0</version>
    </dependency>
    <dependency>
        <groupId>org.eclipse.jetty</groupId>
        <artifactId>jetty-servlet</artifactId>
        <version>${jetty-version}</version>
    </dependency>
    <dependency>
        <groupId>org.eclipse.jetty.websocket</groupId>
        <artifactId>javax-websocket-server-impl</artifactId>
        <version>${jetty-version}</version>
    </dependency>

</dependencies>

<build>
    <resources>
        <resource>
            <directory>src/main/resources</directory>
            <filtering>true</filtering>
        </resource>
    </resources>

    <outputDirectory>${project.build.directory}/${project.build.finalName}/WEB-INF/classes</outputDirectory>

    <plugins>
        <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>app.html</runTarget>
                <modules>
                    <module>com.example.HelloJettyGwt.app</module>
                </modules>
            </configuration>
        </plugin>

        <plugin>
            <artifactId>maven-resources-plugin</artifactId>
            <version>2.5</version>
            <executions>
                <execution>
                    <id>copy-resources</id>
                    <phase>prepare-package</phase>
                    <goals>
                        <goal>copy-resources</goal>
                    </goals>
                    <configuration>
                        <outputDirectory>${project.build.outputDirectory}</outputDirectory>
                        <resources>
                            <resource>
                                <directory>
                                    src/main/webapp
                                </directory>
                                <filtering>true</filtering>
                                <includes>
                                    <include>**/*.html</include>
                                    <include>**/*.css</include>
                                    <include>**/web.xml</include>
                                </includes>
                            </resource>

                            <resource>
                                <directory>
                                    ${project.build.directory}/${project.build.finalName}/
                                </directory>
                                <filtering>true</filtering>
                                <includes>
                                    <include>**/app/**</include>
                                </includes>
                            </resource>
                        </resources>
                    </configuration>
                </execution>
            </executions>
        </plugin>


        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>2.3.2</version>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
            </configuration>
        </plugin>

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <version>2.5</version>
            <configuration>
                <archive>
                    <manifest>
                     <mainClass>com.example.HelloJettyGwt.ServerMain</mainClass>
                    </manifest>
                    <manifestEntries>
                        <Implementation-Version>${jetty-version}</Implementation-Version>
                    </manifestEntries>
                </archive>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-shade-plugin</artifactId>
            <version>2.4.3</version>
            <executions>
                <execution>
                    <id>rebuild-war</id>
                    <phase>package</phase>
                    <goals>
                        <goal>shade</goal>
                    </goals>
                    <configuration>
                        <createDependencyReducedPom>false</createDependencyReducedPom>
                        <artifactSet>
                            <includes>
                                <include>*:*</include>
                            </includes>
                        </artifactSet>
                        <filters>
                            <filter>
                                <artifact>*:*</artifact>
                                <excludes>
                                    <exclude>META-INF/VERSION.txt</exclude>
                                    <exclude>META-INF/LICENSE.txt</exclude>
                                </excludes>
                            </filter>
                            <!-- exclude the MANIFEST.MF entries that will cause problems -->
                            <filter>
                                <artifact>javax.annotation:*</artifact>
                                <excludes>
                                    <exclude>META-INF/MANIFEST.MF</exclude>
                                </excludes>
                            </filter>
                            <filter>
                                <artifact>javax.servlet:*</artifact>
                                <excludes>
                                    <exclude>META-INF/MANIFEST.MF</exclude>
                                </excludes>
                            </filter>
                            <filter>
                                <artifact>javax.websocket:*</artifact>
                                <excludes>
                                    <exclude>META-INF/MANIFEST.MF</exclude>
                                </excludes>
                            </filter>
                            <filter>
                                <artifact>org.eclipse.jetty:*</artifact>
                                <excludes>
                                    <exclude>META-INF/MANIFEST.MF</exclude>
                                </excludes>
                            </filter>
                            <filter>
                                <artifact>org.eclipse.jetty.websocket:*</artifact>
                                <excludes>
                                    <exclude>META-INF/MANIFEST.MF</exclude>
                                </excludes>
                            </filter>
                            <filter>
                                <artifact>org.ow2.asm:*</artifact>
                                <excludes>
                                    <exclude>META-INF/MANIFEST.MF</exclude>
                                </excludes>
                            </filter>
                        </filters>
                        <transformers>
                            <transformer
                                implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer" />
                        </transformers>
                    </configuration>
                </execution>
            </executions>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-enforcer-plugin</artifactId>
            <version>1.1.1</version>
            <executions>
                <execution>
                    <id>enforce-java</id>
                    <goals>
                        <goal>enforce</goal>
                    </goals>
                    <configuration>
                        <rules>
                            <requireMavenVersion>
                                <version>[3.0.0,)</version>
                            </requireMavenVersion>
                            <requireJavaVersion>
                                <version>[1.8,)</version>
                                <message>[ERROR] OLD JDK [${java.version}] in use.
                                    Jetty
                                    ${jetty-version} requires JDK 1.8 or newer</message>
                            </requireJavaVersion>
                        </rules>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

谢谢回答,但这并不包括我问过的所有问题,例如GWT编译jar中的js文件、嵌入式web服务器等。谢谢回答,但这并不包括我问过的所有问题,例如GWT编译jar中的js文件、嵌入式web服务器等。谢谢我尝试了链接,它帮助我更接近,但我仍然无法让maven完全发挥作用,我正在寻找一个解决方案,在这个解决方案中,我可以得到一个胖罐子,即在罐子中运行webapp所需的一切,包括html、GWT js文件等,而不需要单独的war文件。感谢我尝试了链接,它帮助我更接近,但我仍然无法让maven完全发挥作用,我正在寻找一个解决方案,在这个解决方案中,我可以得到一个胖jar,即在jar中运行webapp所需的所有东西,包括html、GWT js文件等,而不需要单独的war文件。我刚刚发现,尽管这可以与mvn包和java-jar一起工作。。。它不能通过mvn gwt与超级开发模式一起工作:runJust发现,尽管它可以与mvn包和java-jar一起工作。。。它不能通过mvn gwt:run使用超级开发模式