【问题标题】:Can Eclipse import a Maven Web project as a "Dynamic Web Application"?Eclipse 可以将 Maven Web 项目作为“动态 Web 应用程序”导入吗?
【发布时间】:2011-08-05 00:17:12
【问题描述】:

高级目标:创建一个可以在 Netbeans 和 Eclipse 中正确使用的 Maven Web 应用程序项目

将 Maven 项目转换为 Eclipse 时,使用命令时项目类型似乎没有设置为 Dynamic Web App:mvn eclipse:eclipse -Dwtpversion=2.0

在 Eclipse 中,如果创建一个动态 Web 应用程序,项目资源管理器中会显示更多选项,例如:JAX-WS Web Services、部署描述符等。这是一个完全不同的框架结构.

此外,在使用上述命令转换为 Eclipse 后,即使转换的输出显示:[INFO] 用作 WTP 服务器:Apache Tomcat v7.0,我也无法“运行”它。它不想作为 Web 服务运行,而是询问我这是 Java Servlet、Applet 还是单元测试。

使用动态 Web 应用程序(本机 Eclipse),运行项目时会显示以下内容:

也许我对 Eclipse 的要求太高了,为了获得内置的 Web 应用功能,它不能来自 Maven?

还有一个我可以试试。我可以在 Eclipse 中创建一个动态 Web 应用程序,然后点击 "Convert to Maven" 。拿那个 POM,修改,然后看看 netbeans 是否也会加载它。

我的“pom.xml”:

<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.voxel</groupId>
<artifactId>servermap</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging>

<name>userprofile</name>

<properties>
    <endorsed.dir>${project.build.directory}/endorsed</endorsed.dir>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>

<dependencies>
    <dependency>
        <groupId>javax</groupId>
        <artifactId>javaee-web-api</artifactId>
        <version>6.0</version>
        <scope>provided</scope>
    </dependency>

    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.8.2</version>
        <scope>test</scope>
    </dependency>

    <dependency>
        <groupId>com.sun.jersey</groupId>
        <artifactId>jersey-server</artifactId>
        <version>1.8</version>
    </dependency>
    <dependency>
        <groupId>com.sun.grizzly</groupId>
        <artifactId>grizzly-servlet-webserver</artifactId>
        <version>1.9.18-m</version>
    </dependency>
</dependencies>

<repositories>
    <repository>
        <id>maven2-repository.dev.java.net</id>
        <name>Java.net Repository for Maven</name>
        <url>http://download.java.net/maven/2</url>
    </repository>
</repositories>

【问题讨论】:

    标签: eclipse maven jersey


    【解决方案1】:

    根据 jhericks 的建议,如果您使用 m2eclipse ,则不需要使用 eclipse:eclipse goaleclipse:eclipse goal 所做的事情,m2eclipse 也可以做到。

    要将项目转换为动态 Web 应用程序,您可以在项目属性中配置 Project Facets 选项

    【讨论】:

    • 这似乎基本上是我所缺少的。项目方面的概念。我还有很多工作要做来调整它以在 Eclipse + Netbeans + IntelliJ 上工作,但这让我解决了我遇到的主要问题:)
    • 嗯...当我导入我的 Maven 模块时,这个 Project Facet 会自动为我设置好,所以我不知道我和 @jsidlosky 有什么不同。
    • 回答我的子问题:可以通过单击“可用的进一步配置...”来配置用于 Web 内容的目录
    • @NicolasRaoul:我错了! “可用的进一步配置”选项实际上可用,但仅在您首次添加动态 Web 模块方面时可用。一旦你点击 OK 并返回 Properties >> Project Facets,它就不会出现了!
    • @AdrienBe:确实!那个时候配置要非常小心,因为点击确定后就不能再修改了。
    【解决方案2】:

    我在 Sonatype 的 m2eclipse plugin 上获得了更好的运气。当我开始时,我错误地尝试同时使用 m2eclipse 和 eclipse:eclipse 目标。他们做的事情并不完全相同,所以如果你安装了插件,请停止执行 mvn eclipse:eclipse。无论如何,它对我来说非常适用于单个 Web 项目,也适用于多项目反应器风格的项目。

    我遇到的唯一问题是尝试将战争文件部署到在 eclipse 中配置的服务器,如果该战争文件是使用覆盖构建的,但这对您来说似乎不是问题。

    【讨论】:

    • 我使用了m2eclipse插件导入方式,看起来比mvn eclipse:eclipse方式好!非常感谢你的帮忙。但是,从 Eclipse 的角度来看,它仍然不是“动态 Web 应用程序”。我意识到也许我要求太多,但我认为这是可能的。我用屏幕截图更新了我的帖子,以使其更清晰。谢谢先生。
    • 当我在我的项目上这样做时,它可以工作。我的 Web 应用程序有在服务器上运行选项(它实际上会在我的服务器上启动它)。不过,我不确定它在我的项目中看到了什么神奇的东西来使它工作。您可以尝试的一件事是确保在导入时还没有 .project 文件。另外,我无法从您的屏幕截图中看出,但我假设您有一个 src/main/webapp/WEB-INF 目录。如果没有,可能就是这样。最后一件事要尝试 - 右键单击​​项目,选择 Maven,然后选择更新项目配置。在那之后,我没有想法了。
    • 我试过这个,当做“在服务器上运行”时我得到Document base /home/nico/eclipse-workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/MyWebapp does not exist or is not a readable directory
    【解决方案3】:

    m2e-wtp 插件会自动执行此操作,如下所述:Import Existing Maven in Eclipse as WTP

    导入后将正确设置所有构面、源文件夹等。

    https://www.eclipse.org/m2e-wtp/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-05-12
      • 1970-01-01
      • 1970-01-01
      • 2012-04-16
      • 1970-01-01
      • 2011-12-06
      • 2014-09-10
      • 1970-01-01
      相关资源
      最近更新 更多