2014-09-02 115 views
0

我只是将项目从简单的Java Web应用程序转换为Maven项目。并尝试使用目标mvn tomcat7:run和相应的插件来运行这个项目在Eclipse中运行maven项目

<plugin> 
       <groupId>org.apache.tomcat.maven</groupId> 
       <artifactId>tomcat7-maven-plugin</artifactId> 
       <version>2.1</version> 
       <configuration> 
        <path>/</path> 
       </configuration> 
      </plugin> 

我的项目不具有非标准Maven的布局结构,这就是为什么我改变我的生成设置在POM

<build> 
     <sourceDirectory>src</sourceDirectory> 
     <resources> 
      <resource> 
       <directory>src</directory> 
       <excludes> 
        <exclude>**/*.java</exclude> 
       </excludes> 
      </resource> 
     </resources> 
     <plugins> 
      <plugin> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <version>3.1</version> 
       <configuration> 
        <source>1.7</source> 
        <target>1.7</target> 
       </configuration> 
      </plugin> 
      <plugin> 
       <artifactId>maven-war-plugin</artifactId> 
       <version>2.3</version> 
       <configuration> 
        <warSourceDirectory>WebContent</warSourceDirectory> 
        <failOnMissingWebXml>false</failOnMissingWebXml> 
       </configuration> 
      </plugin> 
      <plugin> 
       <groupId>org.apache.tomcat.maven</groupId> 
       <artifactId>tomcat7-maven-plugin</artifactId> 
       <version>2.1</version> 
       <configuration> 
        <path>/</path> 
       </configuration> 
      </plugin> 
     </plugins> 
    </build> 

每次当我尝试运行项目时,我得到一个错误

java.lang.IllegalArgumentException: Document base <path-to-app>\src\main\webapp does not exist or is not a readable directory 
    at org.apache.naming.resources.FileDirContext.setDocBase(FileDirContext.java:138) 
    at org.apache.catalina.core.StandardContext.resourcesStart(StandardContext.java:4912) 
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5092) 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559) 
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549) 
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334) 
    at java.util.concurrent.FutureTask.run(FutureTask.java:166) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
    at java.lang.Thread.run(Thread.java:722) 

请帮我明白为什么我得到这个错误(我甚至删除Tomcat服务器文件夹)

+0

你在哪里保存了你的jsp/html文件?他们应该通过maven惯例进入src/main/webapp'目录。 – Adi 2014-09-02 14:47:13

+0

@Adi我把jsp放在'WebContent'中,据我所知' WebContent'这一行有助于浏览默认的webapp文件夹位置 – Ray 2014-09-02 14:52:35

回答

2

Maven正在等待特定目录布局以“理解”您的项目。例如,必须公地是:

的src/main/java的

的src/main /资源

的src/test/java下

我有同样的问题,因为你做的。我将META-INFWEB-INF转换为src/main/webapp并删除了WebContent目录。我也添加了之前提到的源代码目录,它可以工作。

你可以看到更多关于Maven的标准目录布局:here

希望它可以帮助你。