m2eclipse и / или wtp неправильно упаковывают зависимость? - PullRequest
6 голосов
/ 20 января 2012

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.xml для зависимости, модуль onebusaway-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 ]

6 голосов
/ 26 апреля 2012

Мой коллега предоставил мне подход, который устранил проблему, но он требует нескольких ручных шагов.

  • удалить проект из вашего затмения

  • перейдите в корневую папку maven с терминалом и уничтожьте все элементы eclipse, используя эту команду (вам придется сделать это дважды):

    $> find.-имя ".settings" -exec rm -rf '{}' \;;находить .-имя ".project" -exec rm -rf '{}' \;;находить .-iname ".classpath" -exec rm -rf '{}'

  • в корневом каталоге maven выполните следующую команду:

    $> mvn -Dwtpversion = 2.0 eclipse: eclipse

  • импортировать ваш проект обратно в eclipse: теперь все будет работать, и eclipse будет публиковать файлы, содержащие код:)

HTH, Bruno(кредит Теодору!)

1 голос
/ 10 февраля 2012

Я предлагаю попробовать плагин m2e-wtp в дополнение к установленному в настоящее время плагину m2e (который не поддерживает проекты на основе WTP). Этот плагин доступен в Eclipse Marketplace через встроенный клиент Marketplace или в Интернете ( http://marketplace.eclipse.org/content/maven-integration-eclipse-wtp). Он обеспечивает более тесную интеграцию Maven с WTP и должен улучшить общий опыт Maven с WTP.

0 голосов
/ 14 сентября 2012

Если что-то не работает, удалите папку публикации. Это будет выглядеть примерно так:

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

Сначала убедитесь, что вы УДАЛЯЕТЕ проект под Tomcat или любым другим сервером, который вы используете, из-под IDE. Затем закройте идентификатор или вы не можете удалить папку.

Как только вы это сделаете, вы можете запустить команду maven clean / build / install и развернуть ваш проект.

Если это не работает, эта проблема не связана с IDE или сервером приложений.

...