2012-08-27 39 views
2

這在技術上不是一個編程問題,而是一個關於從Maven項目部署我的war文件時出現的錯誤的問題。構建一個可以由Maven Tomcat插件部署的war文件

我建立我的戰爭文件,運行後Tomcat7,並打開瀏覽器,我得到的錯誤是:

HTTP Status 404 - /vaadin-test/ 

type Status report 

message /vaadin-test/ 

description The requested resource (/vaadin-test/) is not available. 

我使用Vaadin作爲我的web應用程序平臺。我有一個非常簡單的項目,我試圖運行測試。我在我的POM文件中使用了tomcat7-maven-pluginmaven-war-plugin。戰爭插件配置看起來像這樣(我不認爲我甚至需要過濾):

 <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-war-plugin</artifactId> 
      <version>2.2</version> 

      <configuration> 
       <packagingExcludes>WEB-INF/web.xml</packagingExcludes> 
       <warName>vaadin-test</warName> 

       <webResources> 
        <resource> 
         <directory>src/main/webapp/</directory> 
         <filtering>true</filtering> 

         <includes> 
          <include>**/*.xml</include> 
         </includes> 
        </resource> 
       </webResources> 
      </configuration> 
     </plugin> 

的web.xml文件看起來是這樣的:

<servlet> 
    <servlet-name>myservlet</servlet-name> 
    <servlet-class>com.vaadin.terminal.gwt.server.ApplicationServlet</servlet-class> 

    <init-param> 
     <param-name>application</param-name> 
     <param-value>com.catalystitservices.vaadin.TestApp</param-value> 
    </init-param> 
</servlet> 

<servlet-mapping> 
    <servlet-name>myservlet</servlet-name> 
    <url-pattern>/test-app</url-pattern> 
</servlet-mapping> 

無論我嘗試運行mvn tomcat7:run或部署創建的war文件到外部Tomcat服務器(通過管理器頁面)我得到相同的錯誤。這導致我認爲我沒有正確構建戰爭文件。沒有錯誤日誌,我可以找到(但也許我想念他們)。

任何想法?

回答

4

如果不是在你的<build>塊指定<finalName>有別, Maven將在以下格式創建一個戰名稱:

vaadin-test-1.0.war 

哪裏vaadin-test是神器的名字和1.0是版本字符串。

因此,你必須參考的URL是/vaadin-test-1.0/vaadin-test

另外等你以後添加finalName標記您的vaadin的servlet綁定到一個URL /測試應用程序,一個完整的URL應該是這樣的: /vaadin-test/test-app

注意!請注意,1.0這裏僅僅是一個例子,請參考你自己的pom.xml爲真實值

+0

我可以看到我的戰爭文件,它看起來像'vaadin-test.war'。另外,Tomcat經理告訴我這個URL是vaadin-test。但是我會嘗試在我的'maven-war-plugin'中添加一個finalName。 – ksnortum

+0

它轉到構建塊,而不是maven-war-plugin。另外,嘗試將/ test-app添加到URL,如下所示:/ vaadin-test/test-app – anttix

+0

我將finalName更改爲vaadin-test,並且Maven的INFO消息表示「在http:// localhost:9090上運行war/VaadinTest'。當我運行這個URL時,我得到了同樣的錯誤。當我運行'localhost:9090/vaadin-test'並讓我的瀏覽器說它找不到URL。 – ksnortum