2012-07-06 75 views
10

我對Maven和Eclipse WTP有一個很奇怪的問題。我有一個多模塊項目,我們稱之爲project。它由兩個模塊project-baseproject-web組成。我已經啓用了工作區分辨率(並且與其他幾個非常相似的Maven項目也能正常工作)。爲什麼WTP插件將一個Maven依賴項作爲文件夾而不是jar來部署?

project-baseproject-web的依賴關係,它通常部署爲jar文件。但幾天來,一直被部署爲一類文件夾中我本地的Tomcat,你可以在這裏看到: Dependency deployed as folder, not as jar

因此,我的Tomcat不承認有任何的我的類文件,因爲他們希望是罐子,而不是文件夾。 -tests後綴來自需要在我的web項目中進行測試。我不認爲這是問題。

project-web有三個從工作區解析的依賴關係。其中兩個正確部署,如罐子,但第三個不是。

project-base的的pom.xml如下所示:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <parent> 
     <artifactId>project</artifactId> 
     <groupId>com.company.project</groupId> 
     <version>4.0.0</version> 
    </parent> 
    <artifactId>project-base</artifactId> 
    <name>projectBase</name> 
    <packaging>jar</packaging> 

    <properties> 
     <project.build.sourceEncoding>windows-1251</project.build.sourceEncoding> 
    </properties> 

    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-jar-plugin</artifactId> 
       <version>2.3.2</version> 
       <executions> 
        <execution> 
         <goals> 
          <goal>jar</goal> 
          <goal>test-jar</goal> 
         </goals> 
        </execution> 
       </executions> 
      </plugin> 
      <plugin> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <configuration> 
        <source>1.6</source> 
        <target>1.6</target> 
       </configuration> 
      </plugin> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-site-plugin</artifactId> 
       <version>3.0</version> 
      </plugin> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-project-info-reports-plugin</artifactId> 
       <version>2.4</version> 
      </plugin> 
     </plugins> 
    </build> 
</project> 

的依賴project-base因爲它是在project-web定義是這樣的:

<dependency> 
    <groupId>com.company.project</groupId> 
    <artifactId>project-base</artifactId> 
    <version>${project.version}</version> 
</dependency> 

<dependency> 
    <groupId>com.company.project</groupId> 
    <artifactId>project-base</artifactId> 
    <version>${project.version}</version> 
    <type>test-jar</type> 
    <scope>test</scope> 
</dependency> 

我沒有一個想法,爲什麼一個依賴性以這樣一種奇怪的方式部署,我不知道如何解決這個問題。我清理了項目,tomcat,重新部署了web項目,清除了我的整個Maven倉庫,檢查了VCS的全部項目,沒有任何幫助。

什麼會導致Eclipse WTP將此依賴項作爲文件夾而不是jar文件進行部署?

+0

雖然它沒有解釋**爲什麼**,[這個問題](http://stackoverflow.com/questions/8944278/m2eclipse-and-or-wtp-not-packaging-a-dependency-correctly)提供了一個工作,幫助我們 – chrisbunney 2012-08-08 09:47:54

+0

@chrisbunney謝謝你的信息!我試過這個伎倆,但它對我沒有幫助。我刪除了所有Eclipse特定的文件,讓maven重新生成它們,但情況沒有改變。 – guerda 2012-08-09 10:45:47

回答

0

我最終解決了我的問題:我對project-base項目的屬性部分部署組件有問題。正如Eclipse所說,我無法保存它,當前頁面確實包含錯誤。

然後我查看了設置文件.settings/org.eclipse.wst.common.component。它完全是空的(我不知道爲什麼)。然後添加以下塊:

<?xml version="1.0" encoding="UTF-8"?> 
<project-modules id="moduleCoreId" project-version="1.5.0"> 
    <wb-module deploy-name="project-base"> 
     <wb-resource deploy-path="/" source-path="/src/main/java"/> 
     <wb-resource deploy-path="/" source-path="/src/main/resources"/> 
    </wb-module> 
</project-modules> 

在此之後,該設置頁面再次訪問和JAR是否正確組裝。工作區分辨率也可以工作。

2

我只是有同樣的問題。將m2e升級到版本1.2修復了它。

3

我通過刪除「部署程序集」項目設置頁面中的依賴關係並將其添加回來,解決了該問題。

+0

感謝您的提示。這對我來說沒有解決,因爲我甚至無法打開這個確切的設置頁面。詳情請參閱我的回答。 – guerda 2014-03-28 10:42:55

+0

這對我有用....多惱人的錯誤。我以前的工作是將jar手動複製/粘貼到部署lib文件夾中:/ – Selwyn 2015-05-15 05:45:14

0

如果該文件夾是分解JAR(所以它就像一個JAR文件,但顯示爲一個文件夾,未歸檔),在我的情況下,這是一個服務器連接器的問題。

儘管我使用JBoss而不是Tomcat,但這可能會對其他人解決這個問題很有幫助。

如果您在Eclipse上安裝了最新的JBoss Tools,則可以在「服務器」視圖中雙擊服務器以打開設置。

部署選項卡中,您可以選擇郵編模塊是/否爲每個項目。當我爲我的實用程序jar文件選擇YES時,JBoss隨後將依賴項部署爲普通JAR文件而不是文件夾。

相關問題