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