设置maven webapp项目的正确形式是什么?
它应该能够:
- 使用嵌入 eclipse 的 tomcat 运行(在服务器选项卡中可用(。这样,我可以像常规Web应用程序一样运行/调试应用程序。
- 使用 maven 插件 tomcat7 运行。到目前为止,我只能运行运行战争目标,无法使"运行"目标起作用=/
我遵循了一些教程,但无法使所有这些事情正常工作。当我遵循 MkYong 建议时,我可以使用嵌入式 tomcat 运行,但项目依赖项更改为类路径变量。这根本不是一个好的结果,因为项目失去了动态设置依赖项的能力。
我使用 Eclipse Juno(我宁愿等开普勒几个月来检查它是否真的稳定(、m2e 和 m2e-wtp 插件,并且有两种项目:一种基于 JSF(前端(,另一种基于 Apache CXF(后端(。我希望这两个可以在开发环境中热部署(当资源发生变化时,嵌入式tomcat会自动发布它(以提高生产力。
来源
于:由 Eclipse IDE 创建的 Web 应用程序包含一个烦人的文件夹 WebContent,用于承载 Web 资源和部署描述符。对于 Eclipse 用户来说,这个特性忽略了 Maven 约定,并迫使开发人员破解 pom 文件,以便在 Eclipse 中启动和运行项目。在这方面,Eclipse在Maven支持方面远远落后于其他IDE,即使你认为M2Eclipse插件非常好。所以,对于懒惰的圣诞节黑客来说,这是基于 maven-war-plugin 的 Eclipse 中 Maven 集成问题的解决方案。
勘误表:请使用WTP插件,而不是更改项目结构。 写完这篇博客后,我想出了wtp插件,所以我建议您只检查以下说明的第1步和第3步。我保留了原始博客信息,以防您确实需要或想要更改项目结构。
在 Eclipse 中创建 Web 项目:右键单击项目资源管理器
新建>项目> Web \ 动态 Web 项目
在项目根文件夹中创建一个 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>
编译并准备日食项目:
mvn -Dwtpversion=2.0 compile eclipse:eclipse
请注意插件 -Dwtpversion 的用法,以使 Maven 能够将 Eclipse WTP 支持添加到项目中。这个简单的标志可以:)解决问题。实际上,仅使用该标志即可,但并非所有 Eclipse 插件都可以在没有 WebContent 文件夹的情况下开箱即用 - 由您决定是否值得修改您的项目结构或直接使用普通的 Maven 文件夹。
完成,现在您可以在 Eclipse 中刷新项目并继续工作。请记住,jjust 资源文件夹在 Eclipse 中是硬编码的,src/main/java 会像 Maven 预期的那样继续。也许有一天我们可以在Maven和Eclipse的约定之间融合在一起,然后我们最终将摆脱这种日常的基础黑客。
我们正在使用开普勒,我们发现它非常稳定。您可以创建一个普通的动态 Web 项目,然后右键单击并使项目启用 Maven。然后,您就有了热部署和专家管理 POM。你也可以在那里拥有所有的Maven目标。