【问题标题】:How to set an eclipse/webapp maven?如何设置 eclipse/webapp maven?
【发布时间】:2013-10-03 18:48:29
【问题描述】:

建立 maven webapp 项目的正确形式是什么?

它应该能够:

  • 使用 Eclipse 嵌入式 tomcat 运行(在服务器选项卡中可用)。 这样我就可以像普通的 webapp 一样运行/调试应用程序。
  • 使用 maven 插件 tomcat7 运行。到目前为止,我只能运行 run-war 目标,无法使“运行”目标发挥作用 =/

我遵循了一些教程,但无法使所有这些东西正常工作。 当我遵循MkYong 的建议时,我可以使用嵌入式tomcat 运行,但项目依赖项更改为类路径变量。这根本不是一个好的结果,因为项目失去了动态设置依赖项的能力。

我使用 Eclipse Juno(我宁愿等 Kepler 几个月来检查它是否真的稳定),m2e 和 m2e-wtp 插件,并且有两种项目:一种是基于 JSF(前端- end)和另一个在 Apache CXF(后端)中。我希望这两个可以在开发环境中热部署(当资源发生变化时,嵌入式tomcat自动发布)以提高生产力。

【问题讨论】:

    标签: java eclipse maven tomcat


    【解决方案1】:

    Source taken from

    由 Eclipse IDE 创建的 Web 应用程序包含一个令人讨厌的文件夹 WebContent,用于托管 Web 资源和部署描述符。对于 Eclipse 用户来说很自然,此功能忽略了 Maven 约定并迫使开发人员破解 pom 文件以使项目在 Eclipse 中启动和运行。在这方面,Eclipse 在 Maven 支持方面远远落后于其他 IDE,即使您认为 M2Eclipse 插件非常好。所以,对于各位懒惰的圣诞黑客来说,这里是一个基于maven-war-plugin的Eclipse中Maven集成问题的解决方案。

    勘误:请使用 WTP 插件而不是更改项目结构。我在写完这篇博客后发现了 wtp 插件,所以我建议你只检查以下说明的第 1 步和第 3 步。我保留了原始博客信息,以防您确实需要或想要更改项目结构。

    1. 在 Eclipse 中创建一个 Web 项目:右键单击 Project Explorer

      新建 > 项目 > Web \ 动态 Web 项目

    2. 在项目根文件夹中创建一个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/maven-v4_0_0.xsd">
      <modelVersion>4.0.0</modelVersion>
      <groupId>org.cejug</groupId>
      <artifactId>webapp-test</artifactId>
      <packaging>war</packaging>
      <version>1.0-SNAPSHOT</version>
      <name>webapp-test Maven Webapp</name>
      <url>http://maven.apache.org</url>
      <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>
      
      <build>
          <finalName>${project.name}</finalName>
          <plugins>
              <plugin>
                  <groupId>org.apache.maven.plugins</groupId>
                  <artifactId>maven-war-plugin</artifactId>
                  <version>2.0.2</version>
                  <configuration>
                      <webResources>
                          <resource>
                              <directory>${basedir}/WebContent</directory>
                          </resource>
                      </webResources>
                      <warSourceDirectory>WebContent</warSourceDirectory>
                      <warSourceExcludes>WebContent/WEB-INF/lib/*.jar</warSourceExcludes>
                      <archiveClasses>false</archiveClasses>
                      <archive>
                          <manifest>
                              <addClasspath>true</addClasspath>
                              <classpathPrefix />
                          </manifest>
                          <manifestEntries>
                              <url>${pom.url}</url>
                              <Implementation-Build>${buildNumber}</Implementation-Build>
                              <Implementation-Title>${project.name}</Implementation-Title>
                              <Implementation-Vendor>CEJUG</Implementation-Vendor>
                              <Implementation-Version>${project.version}</Implementation-Version>
                              <Built-By>${user.name}</Built-By>
                              <Built-OS>${os.name}</Built-OS>
                              <Build-Date>${timestamp}</Build-Date>
                              <SCM>${buildNumber}</SCM>
                          </manifestEntries>
                      </archive>
                  </configuration>
              </plugin>
          </plugins>
      </build>
      

    3. 为eclipse编译和准备项目:

      mvn -Dwtpversion=2.0 compile eclipse:eclipse
      

    注意插件 -Dwtpversion 的使用使 Maven 能够将 Eclipse WTP 支持添加到项目中。那个简单的标志就可以了:)。实际上,仅使用该标志即可,但并非所有 Eclipse 插件都可以在没有 WebContent 文件夹的情况下开箱即用 - 由您决定是否值得修改项目结构或直接使用普通 Maven文件夹。

    完成,现在您可以在 Eclipse 中刷新项目并继续工作。请记住,在 Eclipse 中只是对资源文件夹进行了硬编码,而 src/main/java 将继续按照 Maven 的预期进行。也许有一天我们可以融合 Maven 和 Eclipse 的约定,然后我们将最终摆脱这种日常黑客攻击。

    【讨论】:

      【解决方案2】:

      我们正在使用 Kepler,我们发现它非常稳定。您可以创建一个普通的动态 Web 项目,然后右键单击并使项目 Maven 启用。然后你就有了热部署和 Maven 管理 POM。 您也可以在那里拥有所有 Maven 目标。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-12-20
        • 2011-06-01
        • 1970-01-01
        • 2014-03-16
        • 2015-03-25
        相关资源
        最近更新 更多