使用maven编译GWT时,WEB-INF/lib中缺少GWT -servlet.jar



在我的pom文件中,我已经包含了gwt-servlet的依赖,但是如果我运行mvn clean installmvn eclipse:eclipse并在eclipse中打开项目,我得到以下错误

GWT SDK JAR WEB-INF/lib目录中缺少GWT -servlet. JAR

编辑:

以下是我的依赖项(我们使用自定义maven存储库):

<dependency>
    <groupId>com.google.gwt</groupId>
    <artifactId>gwt-user</artifactId>
    <version>2.4.0</version>
</dependency>
<dependency>
    <groupId>com.google.gwt</groupId>
    <artifactId>gwt-servlet</artifactId>
    <version>2.4.0</version>
</dependency>
<dependency>
    <groupId>com.smartgwt</groupId>
    <artifactId>smart-gwt</artifactId>
    <version>2.5</version>
</dependency>

EDIT 2 (main pom):

<build>
    <extensions>
      <extension>
        <groupId>org.apache.maven.wagon</groupId>
        <artifactId>wagon-ftp</artifactId>
      </extension>
    </extensions>
....

我注意到两件事。

1)您指定的smartgw依赖不能从maven中央存储库中解析

<dependency>
    <groupId>com.smartgwt</groupId>
    <artifactId>smart-gwt</artifactId>
    <version>2.5</version>
</dependency>

它只有2.4版本的smartgw(见这里http://search.maven.org/#search%7Cga%7C1%7Csmartgwt)而我不得不使用这个

<dependency>
    <groupId>com.smartgwt</groupId>
    <artifactId>smartgwt</artifactId>
    <version>2.4</version>
</dependency>

注意工件ID也是不同的。(如果您有包含此内容的自定义存储库,请更新您的问题)

2)你不需要执行eclipse:相反,你可以发出

File> Import>现有Maven项目

这将自动从您的pom.xml

生成eclipse项目

我测试了以下内容:

gwttest2文件夹中的父文件夹

<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.test</groupId>
    <artifactId>gwttest2-main</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>pom</packaging>
    <modules>
        <module>gwttest2-module1</module>
    </modules>
    <build>
        <extensions>
            <extension>
                <groupId>org.apache.maven.wagon</groupId>
                <artifactId>wagon-ftp</artifactId>
            </extension>
        </extensions>
    </build>

    <dependencies>
        <dependency>
            <groupId>com.google.gwt</groupId>
            <artifactId>gwt-user</artifactId>
            <version>2.4.0</version>
        </dependency>
        <dependency>
            <groupId>com.google.gwt</groupId>
            <artifactId>gwt-servlet</artifactId>
            <version>2.4.0</version>
        </dependency>
        <dependency>
            <groupId>com.smartgwt</groupId>
            <artifactId>smartgwt</artifactId>
            <version>2.4</version>
        </dependency>
    </dependencies>
</project>

子pom在gwttest2/gwttest2-module1文件夹

<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.test</groupId>
    <artifactId>gwttest2-module1</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>war</packaging>
    <parent>
        <artifactId>gwttest2-main</artifactId>
        <groupId>com.test</groupId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>
    <build>
        <extensions>
            <extension>
                <groupId>org.apache.maven.wagon</groupId>
                <artifactId>wagon-ftp</artifactId>
            </extension>
        </extensions>
    </build>

    <dependencies>
        <dependency>
            <groupId>com.google.gwt</groupId>
            <artifactId>gwt-user</artifactId>
            <version>2.4.0</version>
        </dependency>
        <dependency>
            <groupId>com.google.gwt</groupId>
            <artifactId>gwt-servlet</artifactId>
            <version>2.4.0</version>
        </dependency>
        <dependency>
            <groupId>com.smartgwt</groupId>
            <artifactId>smartgwt</artifactId>
            <version>2.4</version>
        </dependency>
    </dependencies>
</project>

告诉Eclipse使用Maven依赖项,方法是右键单击Project文件夹并选择

Configure>转换为Maven项目。

似乎即使在运行mvn eclipse:eclipse之后,您也必须手动执行此操作以使eclipse实际上让Maven来处理您的依赖项。

如果您没有看到这个选项,您可能没有在Eclipse中安装M2Eclipse插件…

相关内容

最新更新