我通过命令行程序创建了一个maven web项目。我在Eclipse Indigo中安装了m2e
,WTP
,tomcat
个插件。我通过m2e插件将项目导入eclipse
我在settings.xml
节点
<servers>
中添加了这些内容
<server>
<id>tomcatserver</id>
<username>admin</username>
<password>adminadmin</password>
</server>
在tomcat-users.xml
我有
<tomcat-users>
<user name="admin" password="adminadmin" roles="admin-gui,manager-gui" />
</tomcat-users>
在pom.xml
我有
<build>
<finalName>FirstWebApp</finalName>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>tomcat-maven-plugin</artifactId>
<configuration>
<server>tomcatserver</server>
<path>/FirstWebApp</path>
</configuration>
</plugin>
</plugins>
</build>
现在右键点击我的项目-> Run as -> Maven build
现在没用了。即在Run as - &gt;下“服务器上运行”选项未显示。所以我
right click on project -> properties -> project facets -> selected Dynamic web module, java, javascript
Maven自己建造了这个项目。现在Run on Server
出现了。当我运行应用程序时,它成功运行,但index.jsp没有出现在我的welcome-file-list
web.xml
中。
我的项目中出现了一个红十字标记的方块。当我点击部署描述符标题下的Error Pages
时,它说:
Resource '/FirstWebApp/WebContent/WEB-INF/web.xml' does not exist.
实际上它不存在,因为当我创建maven项目时,它存在于
中/src/main/webapp/WEB-INF/web.xml
它仍然存在于那里。我的index.jsp也出现在webapp目录中 问题出在哪里?现在我对maven web项目的目录结构感到困惑 任何人都可以向我解释一下我的web项目的目录结构。这是:
->src
->main
resources
->webapp
index.jsp
->WEB-INF
web.xml
->target
-> it's sub-directories
->WebContent
->META-INF
->WEB-INF
lib
这让我很头疼。请指导我,我正在以正确的方式在eclipse中开发maven web项目吗?
哪里我应该将我的POJO,Servlet和其他类放在这个结构中。
感谢很多
答案 0 :(得分:2)
Eclipse WTP对文件系统布局使用不同于maven的约定。例如,WTP期望您的jsp页面和配置将在WebContent中,这可以更改,但它需要在许多不同的项目属性设置上进行更改。
解决此问题的最快方法是从eclispe中创建一个使用m2e的maven web项目,这样你就可以得到一个为maven和eclipse正确配置的wtp项目。然后我会将您的代码复制到新项目的适当位置。你将把你放入src / main / webapp的web内容中的任何内容放入src / main / java中。阅读maven目录约定是个好主意。
你想让maven和eclipse发挥得很好的基本概念是,eclipse和maven都会尝试负责你的项目配置,这会导致问题。所以你想使用maven作为maven可以设置的所有项目设置的源,例如maven可以告诉eclipse项目是否是动态web模块,以及要使用的java编译器的级别......等等。用于设置maven可以配置使用maven。对于maven无法配置的设置,例如eclipse源代码格式化程序,请使用eclipse项目属性来设置这些设置。
WTP和maven之间的另一个重要区别是WTP希望您配置一个服务器,并且对于每个项目,它假定项目具有目标运行时,以便可以解决诸如servlets api之类的问题。另一方面,Maven期望你的项目应该编译并构建你将运行它的应用程序服务器,因此它希望你从maven中心事物如servlet api,jsp api jars,...中依赖于api jar。等等。它希望那些标有提供的范围。例如。
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>javax.servlet.jsp-api</artifactId>
<scope>provided</scope>
<version>2.2.1</version>
</dependency>
答案 1 :(得分:2)
如果您使用的是最新的Eclipse版本之一(Indigo或Juno),您可能也应该安装m2e-wtp
插件。它将在Maven配置和WTP期望项目布局的方式之间架起桥梁。
http://www.eclipse.org/m2e-wtp/
这个问题看起来与您尝试做的类似,它更详细地解释了如何设置项目结构:Maven/Tomcat Projects In Eclipse Indigo/3.7