Maven 2 Eclipse - PullRequest
       46

Maven 2 Eclipse

2 голосов
/ 04 мая 2011

С плагином maven2eclipse проблема заключается в отсутствии документации. Это дает мне один выбор, когда я щелкаю правой кнопкой мыши по проекту в eclipse «Включить управление зависимостями». Я попробовал его, но дал мне довольно разреженный файл POM.xml в дополнение к следующему выводу консоли:

04/05/11 14:57:54 BST: Generating sources /BenCode/pom.xml
04/05/11 14:57:54 BST: Build error for /BenCode/pom.xml; org.apache.maven.plugin.PluginResolutionException: Plugin org.apache.maven.plugins:maven-resources-plugin:2.4.3 or one of its dependencies could not be resolved: Failed to read artifact descriptor for org.apache.maven.plugins:maven-resources-plugin:jar:2.4.3
04/05/11 14:57:54 BST: Failed to determine compiler source setting, assuming default
04/05/11 14:57:54 BST: Failed to determine compiler target setting, assuming default
04/05/11 14:57:54 BST: Failed to determine compiler source setting, assuming default
04/05/11 14:57:54 BST: Failed to determine compiler target setting, assuming default
04/05/11 14:57:54 BST: Failed to determine compiler test inclusions, assuming defaults
04/05/11 14:57:54 BST: Failed to determine compiler test exclusions, assuming defaults
04/05/11 14:57:54 BST: Failed to determine compiler inclusions, assuming defaults
04/05/11 14:57:54 BST: Failed to determine compiler exclusions, assuming defaults
04/05/11 14:57:54 BST: Refreshing [/BenCode/pom.xml] 

Не использовать Maven до того, как пытаться понять, что делать, это скорее головоломка. У меня сложилось впечатление, что maven должен сканировать зависимости пути к классам, используя эту информацию для управления проектом, но не повезло: (

Ответы [ 3 ]

5 голосов
/ 04 мая 2011

Maven будет управлять только зависимостями, указанными в POM (и любыми транзитивными зависимостями (т. Е. Зависимостями зависимостей, которые вы непосредственно определяете). Например, ниже добавится JUnit в качестве зависимости в области теста

<dependencies>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.8.2</version>
        <scope>test</scope>
    </dependency>
    <!-- ... -->
</dependencies>

Если щелкнуть правой кнопкой мыши файл pom.xml, вы можете выбрать Maven -> Добавить зависимость - для поиска в репозиториях по умолчанию.

Также прочитайте Введение в механизм зависимости

2 голосов
/ 04 мая 2011

Документация есть ... но вы должны прочитать ее.

0 голосов
/ 05 мая 2011

Во-первых, я должен сказать, что хотя я использую плагин m2eclipse для Eclipse, я на самом деле использую только функцию «включить управление зависимостями»;все остальное я пишу от руки, в текстовом редакторе pom.xml.Это всего лишь личное предпочтение, а не правило.

Следует помнить о maven, что он работает на основе «соглашения о конфигурации» - что, в основном, означает, что, если вы не укажете это иначе,он делает множество предположений.

Первое предположение состоит в том, что ваша структура каталогов соответствует следующему:

Project Dir
    |
    |- src
    |    |- main
    |    |    |- java
    |    |    |- resources
    |    |
    |    |- test
    |    |    |- java
    |    |    |- resources
    |    |
    |    |- site
    |
    |- pom.xml

(Более подробную информацию о структуре каталогов можно найти на Введениек стандартному макету каталога )

Если ваш проект не соответствует этой структуре, вам необходимо сообщить об этом Maven, например:

  <build>
    <directory>target</directory>
    <outputDirectory>target/classes</outputDirectory>
    <testOutputDirectory>target/test-classes</testOutputDirectory>
    <sourceDirectory>src/main/java</sourceDirectory>
    <scriptSourceDirectory>src/main/scripts</scriptSourceDirectory>
    <testSourceDirectory>src/test/java</testSourceDirectory>
    <resources>
      <resource>
        <directory>src/main/resources</directory>
      </resource>
    </resources>
    <testResources>
      <testResource>
        <directory>src/test/resources</directory>
      </testResource>
    </testResources>
  </build>

Следующая часть, о которой нужно беспокоитьсяэто зависимости ... Вот где Maven достаточно силен, но только если вы действительно знаете, где находятся ваши зависимости, и это может быть довольно запутанным для кого-то, только начинающего с Maven (это расстроило меня до чертиков!).Вот пара добавленных зависимостей (JUnit - используется только на этапе тестирования - и log4j)

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.8.2</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>log4j</groupId>
      <artifactId>log4j</artifactId>
      <version>1.2.16</version>
    </dependency>
  </dependencies>

Maven должен быть достаточно умным, чтобы определять зависимости указанных зависимостей и т. Д., Поэтому вам нужно толькоссылаться на зависимости, которые вы используете напрямую.

Если требуемые зависимости не могут быть найдены в репозитории, который использует Maven, вам нужно будет добавить дополнительные репозитории - в этом случае Google - ваш друг.

Это, вероятно, должно решить ваши начальные проблемы.

В зависимости от размера вашей команды разработчиков, вы можете посчитать целесообразным установить локального менеджера репозитория и заставить Maven использовать локальное репо в качестве источника всех зависимостей, и это будетскачайте все, что не хранится внутри, но это еще одна червячная банка, когда вы лучше познакомитесь с самим Maven.

...