m2eclipse和/或wtp没有正确打包依赖?

时间:2012-01-20 16:04:29

标签: eclipse maven eclipse-wtp

Eclipse Indigo SR 1,wtp 3.3.0,m2eclipse 1.0.100。

将项目发布到WTP时,我的其中一个依赖项出现了奇怪的行为;它不是将jar放在WEB-INF/lib文件夹中,而是创建一个以预期jar命名的文件夹,然后将源项树(显然)放在该文件夹下。我无法在依赖项的pom.xml或此项目的pom.xml中看到任何可能导致此问题的内容。

正如罐子那样,其他依赖性正好被带来了。

我的测试项目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/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>test</groupId>
  <artifactId>dwhwtptest</artifactId>
  <packaging>war</packaging>
  <version>0.0.1-SNAPSHOT</version>
  <name>dwhwtptest Maven Webapp</name>
  <url>http://maven.apache.org</url>
  <dependencies>
    <dependency>
      <groupId>org.onebusaway</groupId>
      <artifactId>onebusaway-nyc-transit-data</artifactId>
      <version>2.0.3-SNAPSHOT</version>
    </dependency>
  </dependencies>
  <build>
    <finalName>dwhwtptest</finalName>
  </build>
</project>

以下是最终在workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps发布的内容:

$ find  dwhwtptest/
dwhwtptest/
dwhwtptest//index.jsp
dwhwtptest//META-INF
dwhwtptest//META-INF/MANIFEST.MF
dwhwtptest//META-INF/maven
dwhwtptest//META-INF/maven/test
dwhwtptest//META-INF/maven/test/dwhwtptest
dwhwtptest//META-INF/maven/test/dwhwtptest/pom.properties
dwhwtptest//META-INF/maven/test/dwhwtptest/pom.xml
dwhwtptest//WEB-INF
dwhwtptest//WEB-INF/lib
dwhwtptest//WEB-INF/lib/onebusaway-nyc-transit-data-2.0.3-SNAPSHOT.jar
dwhwtptest//WEB-INF/lib/onebusaway-nyc-transit-data-2.0.3-SNAPSHOT.jar/META-INF
dwhwtptest//WEB-INF/lib/onebusaway-nyc-transit-data-2.0.3-SNAPSHOT.jar/META-INF/MANIFEST.MF
dwhwtptest//WEB-INF/lib/onebusaway-nyc-transit-data-2.0.3-SNAPSHOT.jar/org
dwhwtptest//WEB-INF/lib/onebusaway-nyc-transit-data-2.0.3-SNAPSHOT.jar/org/onebusaway
dwhwtptest//WEB-INF/lib/onebusaway-nyc-transit-data-2.0.3-SNAPSHOT.jar/org/onebusaway/nyc
dwhwtptest//WEB-INF/lib/onebusaway-nyc-transit-data-2.0.3-SNAPSHOT.jar/org/onebusaway/nyc/transit_data
dwhwtptest//WEB-INF/lib/onebusaway-nyc-transit-data-2.0.3-SNAPSHOT.jar/org/onebusaway/nyc/transit_data/model
dwhwtptest//WEB-INF/lib/onebusaway-nyc-transit-data-2.0.3-SNAPSHOT.jar/org/onebusaway/nyc/transit_data/model/NycQueuedInferredLocationBean.java
dwhwtptest//WEB-INF/lib/onebusaway-nyc-transit-data-2.0.3-SNAPSHOT.jar/org/onebusaway/nyc/transit_data/model/NycVehicleManagementStatusBean.java
dwhwtptest//WEB-INF/lib/onebusaway-nyc-transit-data-2.0.3-SNAPSHOT.jar/org/onebusaway/nyc/transit_data/services
dwhwtptest//WEB-INF/lib/onebusaway-nyc-transit-data-2.0.3-SNAPSHOT.jar/org/onebusaway/nyc/transit_data/services/ConfigurationService.java
dwhwtptest//WEB-INF/lib/onebusaway-nyc-transit-data-2.0.3-SNAPSHOT.jar/org/onebusaway/nyc/transit_data/services/VehicleTrackingManagementService.java
dwhwtptest//WEB-INF/web.xml

这是依赖项的pom.xmlonebusaway-nyc-transit-data模块:

<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>onebusaway-nyc</artifactId>
        <groupId>org.onebusaway</groupId>
        <version>2.0.3-SNAPSHOT</version>
    </parent>
    <groupId>org.onebusaway</groupId>
    <artifactId>onebusaway-nyc-transit-data</artifactId>
    <packaging>jar</packaging>

    <name>onebusaway-nyc-transit-data</name>
    <description>Common interfaces and classes for exchanging transit data between UI front-end and transit back-end data sources.</description>

    <build>
        <finalName>onebusaway-nyc-transit-data</finalName>
    </build>
</project>

连连呢?还有什么我可以调查试图找出这里发生了什么?

3 个答案:

答案 0 :(得分:6)

我的一位同事为我提供了解决问题的方法,但它只需要很少的手动步骤。

  • 从日食中删除项目

  • 使用终端转到您的maven根文件夹并使用此命令终止所有日食内容(您必须执行此操作两次):

    $&GT;找 。 -iname“.settings”-exec rm -rf'{}'\; ;找 。 -iname“.project”-exec rm -rf'{}'\; ;找 。 -iname“.classpath”-exec rm -rf'{}'

  • 在你的maven root上
  • ,执行以下命令:

    $&GT; mvn -Dwtpversion = 2.0 eclipse:eclipse

  • 在eclipse中导入你的项目:现在一切都会工作,eclipse会发布包含代码的jar:)

HTH,Bruno(归功于西奥多!)

答案 1 :(得分:1)

我建议您尝试使用m2e-wtp插件以及当前安装的m2e插件(不包含对基于WTP的项目的支持)此插件可通过嵌入式Marketplace客户端或网络在Eclipse Marketplace中获得( http://marketplace.eclipse.org/content/maven-integration-eclipse-wtp)。它提供了与WTP更紧密的Maven集成,并且应该通过WTP体验改善整体Maven。

答案 2 :(得分:0)

如果仍然无效,请删除发布文件夹。它看起来像:

<Path To Your IDE>\.metadata\.plugins\org.eclipse.wst.server.core\tmp0

首先确保使用IDE从Tomcat或您正在使用的任何其他服务器下删除项目。然后关闭ID或您无法删除该文件夹。

执行此操作后,您可以运行maven clean / build / install命令并部署项目。

如果这不起作用,则此问题与IDE或Application Server无关。