2014-09-02 120 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

希望它可以幫助你。