2012-07-02 70 views
1

我創建了我的項目的maven構建。構建成功。但是當我將它部署在服務器(apache tomcat 6)上時,它提供了有關jar文件的各種錯誤。但這些jar文件可用但當我將這些jar文件保存在服務器的lib目錄中時,那個錯誤就會得到解決。所以,任何人對此有任何想法..我在使用maven構建時做了任何錯誤。Maven構建未運行

我的pom.xml

http://maven.apache.org/xsd/maven-4.0.0.xsd「> 4.0.0 Test1的 Test1的 0.0.1-SNAPSHOT 戰爭 Test1的 http://maven.apache.org

<properties> 
    <project.build.sourceEncoding>ISO-8859-1</project.build.sourceEncoding> 
</properties> 
<repositories> 
    <repository> 
     <id>central</id> 
     <name>Maven Repository Switchboard</name> 
     <layout>default</layout> 
     <url>http://repo1.maven.org/maven2</url> 
     <snapshots> 
      <enabled>false</enabled> 
     </snapshots> 
    </repository> 
</repositories> 
<dependencies> 
    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>3.8.1</version> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
     <groupId>javax.servlet</groupId> 
     <artifactId>servlet-api</artifactId> 
     <version>2.5</version> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.struts</groupId> 
     <artifactId>struts-core</artifactId> 
     <version>1.3.10</version> 
    </dependency> 
    <dependency> 
     <groupId>com.googlecode.json-simple</groupId> 
     <artifactId>json-simple</artifactId> 
     <version>1.1</version> 
    </dependency> 
    <dependency> 
     <groupId>javax.mail</groupId> 
     <artifactId>mail</artifactId> 
     <version>1.4</version> 
    </dependency> 
    <dependency> 
     <groupId>commons-dbcp</groupId> 
     <artifactId>commons-dbcp</artifactId> 
     <version>1.2.2</version> 
    </dependency> 
    <dependency> 
     <groupId>commons-io</groupId> 
     <artifactId>commons-io</artifactId> 
     <version>2.0.1</version> 
    </dependency> 
    <dependency> 
     <groupId>log4j</groupId> 
     <artifactId>log4j</artifactId> 
     <version>1.2.8</version> 
    </dependency> 
    <dependency> 
     <groupId>net.sourceforge.jexcelapi</groupId> 
     <artifactId>jxl</artifactId> 
     <version>2.6.10</version> 
    </dependency> 
    <dependency> 
     <groupId>org.ow2.orchestra.eclipse.birt</groupId> 
     <artifactId>org.ow2.orchestra.eclipse.birt.core</artifactId> 
     <version>3.7.0</version> 
    </dependency> 
    <dependency> 
     <groupId>org.ow2.orchestra.eclipse.birt</groupId> 
     <artifactId>org.ow2.orchestra.eclipse.birt.report.engine</artifactId> 
     <version>3.7.0</version> 
    </dependency> 
    <dependency> 
     <groupId>openforecast</groupId> 
     <artifactId>openforecast</artifactId> 
     <version>1.0.16</version> 
     <scope>system</scope> 
     <systemPath>D:/testing/WebContent/WEB-INF/lib/OpenForecast-0.5.0.jar</systemPath> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.poi</groupId> 
     <artifactId>poi</artifactId> 
     <version>3.7</version> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.commons</groupId> 
     <artifactId>commons-math</artifactId> 
     <version>2.0</version> 
    </dependency> 
    <dependency> 
     <groupId>net.sf.jsci</groupId> 
     <artifactId>jsci</artifactId> 
     <version>1.2</version> 
    </dependency> 
    <dependency> 
     <groupId>commons-collections</groupId> 
     <artifactId>commons-collections</artifactId> 
     <version>1.0</version> 
    </dependency> 
    <dependency> 
     <groupId>taglibs</groupId> 
     <artifactId>standard</artifactId> 
     <version>1.1.2</version> 
     <scope>runtime</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.struts</groupId> 
     <artifactId>struts-taglib</artifactId> 
     <version>1.3.10</version> 
     <scope>runtime</scope> 
    </dependency> 
    <dependency> 
     <groupId>struts</groupId> 
     <artifactId>struts-bean</artifactId> 
     <version>1.2.7</version> 
     <type>tld</type> 
     <scope>runtime</scope> 
    </dependency> 
    <dependency> 
     <groupId>net.sourceforge.jtds</groupId> 
     <artifactId>jtds</artifactId> 
     <version>1.2</version> 
    </dependency> 
    <dependency> 
     <groupId>commons-logging</groupId> 
     <artifactId>commons-logging</artifactId> 
     <version>1.1.1</version> 
    </dependency> 

</dependencies> 
<build> 
    <plugins> 
     <plugin> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <configuration> 
       <source>1.6</source> 
       <target>1.6</target> 
       <properties> 
        <maven.compiler.target>1.6</maven.compiler.target> 
        <maven.compiler.source>1.6</maven.compiler.source> 
       </properties> 
       <encoding>ISO-8859-1</encoding> 
      </configuration> 
     </plugin> 
     <plugin> 
      <artifactId>maven-war-plugin</artifactId> 
      <version>2.1.1</version> 
      <configuration> 
       <packagingExcludes>D:/Test1/src/main/webapp/WEB-INF/web.xml</packagingExcludes> 
      </configuration> 
     </plugin> 
    </plugins> 
</build> 

+0

可能是因爲範圍設置爲「提供」。如果您確切地告訴我們您遇到麻煩的瓶子,並且可以向我們展示POM的完整依賴部分,我們可以爲您解決這個問題。 –

回答

3

你不部署在一個Tomcat罐子:您部署war文件 戰爭包含一個WEB-INF/lib文件夾,其中包含您的庫。

Tomcat根目錄下的lib文件夾僅用於在所有已部署的應用程序之間共享的庫。例如,數據庫驅動程序。

檢查您的Maven依賴項是否在範圍提供的。 它們應該包含在您的WEB-INF/lib文件夾中。

+0

感謝您的回覆我分享我的pom.xml – Ankit

+0

我認爲他意味着依賴jar文件。 –

0

第一件事喜歡你依賴於Servlet API的:

<dependency> 
    <groupId>javax.servlet</groupId> 
    <artifactId>servlet-api</artifactId> 
    <version>2.5</version> 
</dependency> 

必須有一個範圍「提供」這樣的,這意味着它們將需要編譯,但在運行時,它會被Tomcat在此提供案件。

<dependency> 
    <groupId>javax.servlet</groupId> 
    <artifactId>servlet-api</artifactId> 
    <version>2.5</version> 
    <scope>provided</scope> 
</dependency> 

以下:

openforecast openforecast 1.0.16 系統 d:/testing/WebContent/WEB-INF/lib/OpenForecast-0.5.0.jar

表明您沒有使用真正必須的Repository。切勿在構建中使用系統範圍的依賴項,因爲它們會使您構建特定於環境的內容。 開始使用存儲庫管理器(Nexus,Artifactory或Archive)並在那裏安裝openforecast。 你的pom中的bad practice to define repositories,特別是Maven Central,就像你一樣。

如果你已經在你的POM中定義以下爲你:

<properties> 
    <project.build.sourceEncoding>ISO-8859-1</project.build.sourceEncoding> 
</properties> 

不需要maven-compiler-plugin的配置是這樣,導致編碼參數使用默認爲上述財產。

<plugin> 
    <artifactId>maven-compiler-plugin</artifactId> 
    <configuration> 
     <source>1.6</source> 
     <target>1.6</target> 
     <properties> 
      <maven.compiler.target>1.6</maven.compiler.target> 
      <maven.compiler.source>1.6</maven.compiler.source> 
     </properties> 
     <encoding>ISO-8859-1</encoding> 
    </configuration> 
</plugin> 

您可以使用以下方法:

<plugin> 
    <artifactId>maven-compiler-plugin</artifactId> 
    <configuration> 
     <source>1.6</source> 
     <target>1.6</target> 
    </configuration> 
</plugin> 

但你必須定義使用插件的版本:

<plugin> 
    <artifactId>maven-compiler-plugin</artifactId> 
    <version>2.3.2</version> 
    <configuration> 
     <source>1.6</source> 
     <target>1.6</target> 
    </configuration> 
</plugin> 

做的最好的是使用pluginManagement部分。

我想到的另外一件事是,您正在使用一箇舊的maven-war-plugin,並且您在配置中使用了絕對路徑,在任何情況下都應該避免這種情況。

<plugin> 
    <artifactId>maven-war-plugin</artifactId> 
    <version>2.1.1</version> 
    <configuration> 
    <packagingExcludes>D:/Test1/src/main/webapp/WEB-INF/web.xml</packagingExcludes> 
    </configuration> 
</plugin> 

最新版本爲the web-site says。如果您需要排除這樣的事情你應該這樣做以下列方式:

<plugin> 
    <artifactId>maven-war-plugin</artifactId> 
    <version>2.2</version> 
    <configuration> 
    <packagingExcludes>${basedir}/src/main/webapp/WEB-INF/web.xml</packagingExcludes> 
    </configuration> 
</plugin> 

但在這種情況下,我不明白你爲什麼要排除的web.xml文件,因爲它是的一個重要組成部分戰爭文件。也許你可以詳細說明一點。

+0

嗨khmarbaise謝謝你的回覆,因爲我是新的maven,所以我已經做出了你指定的更改,但我仍然面臨以下異常.. org.apache.jasper.JasperException:javax.servlet.ServletException:java.lang。 NoClassDefFoundError的:無法初始化類org.apache.struts.taglib.html.FormTag \t org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:500) \t org.apache.jasper.servlet.JspServletWrapper.service (JspServletWrapper.java:410 \t org.apache.jasper.servlet.JspServlet.serviceJspFile – Ankit

+0

我沒有找到行家依賴於openforecast這就是爲什麼我從系統中添加它。 – Ankit

+0

由於我使用一個倉庫管理中提到的開始。 – khmarbaise