Генерал Мавен баггиг - PullRequest
0 голосов
/ 14 марта 2012

Итак, я обнаружил, что чем больше я использую Maven, тем сложнее он мне кажется, особенно при создании одного и того же проекта с использованием разных версий Maven. Этого следовало ожидать?

Пара примеров:

У меня есть. Год, когда я развертываюсь на JBoss. Поскольку я добавляю wsdls, xsds и сгенерированные классы, введенные в путь классов, я добавляю .jar как зависимость, а затем распаковываю его в .ear. Для этого я использую цель распаковки зависимостей. Выглядит примерно так ...

<plugin>              
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-dependency-plugin</artifactId>
                <version>2.4</version>
            <executions>
                <execution>
                    <id>unpack-wsimport</id>
                    <phase>prepare-package</phase>
                <goals>
                    <goal>unpack-dependencies</goal>
                </goals>
                    <configuration>
                        <includeGroupIds>url.projectName</includeGroupIds>
                        <includeArtifactIds>projectName-wsimport</includeArtifactIds>
                        <outputDirectory>${project.build.outputDirectory}</outputDirectory>
                    </configuration>
                </execution>
            </executions>
</plugin>

Используя Maven 3.0.3 (что и было изначально заложено в проект), это работает отлично. Переключитесь на Maven 2.0.9, и вдруг это не так. На сайте Maven говорится, что этот плагин поддерживается с версии 1.0, так почему он не работает?

В том же духе, но наоборот, когда я пытаюсь сделать maven релиз этого проекта, использование Maven 2.0.9 подготовит и выполнит правильно, однако 3.0.3 не копирует определенные файлы при пометке тегами. версия в SVN.

Кто-нибудь еще обнаружил такие ошибки при переключении между версиями Maven для создания проектов?

1 Ответ

0 голосов
/ 14 марта 2012

Сначала кажется, что вы не поняли мавенский способ делать что-то вроде уха, потому что в EAR вы должны добавить зависимости, которые должны быть вставлены в EAR, а не через плагин для зависимостей, который вы должны использовать. вместо зависимостей.

Например:

  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-ear-plugin</artifactId>
        <version>2.6</version>
      </plugin>
    </plugins>
  </build>

  <dependencies>
    <dependency>
      <groupId>${project.groupId}</groupId>
      <artifactId>webgui</artifactId>
      <version>${project.version}</version>
      <type>war</type>
    </dependency>
    <dependency>
      <groupId>${project.groupId}</groupId>
      <artifactId>service</artifactId>
      <version>${project.version}</version>
      <type>ejb</type>
    </dependency>
  </dependencies>

, но лучше использовать правильную конфигурацию для maven-ear-plugin .

Исходя из информации, которую вы предоставили, я ожидал иметь многомодульную сборку, которая будет содержать ваши различные модули (например, веб-часть, wsdl-часть и т. Д.), Которые будут упакованы в EAR. Это привело бы к структуре, подобной следующей:

   +-- root
        +-- pom.xml 
        +-- war
             +-- pom.xml 
        +-- wsdl
             +-- pom.xml 
        +-- ...
        +-- ejb
             +-- pom.xml 
        +-- ear 
             +-- pom.xml 

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

Что касается вашей проблемы, я не могу это признать, потому что я долго работаю с Maven в действительно большом проекте (100 модулей +) ... Кроме того, я хотел бы знать, где указано, что этот плагин работает с версией 1.0.

Несмотря на то, что это не выглядит так, что вы читаете заметки о выпуске. Существует большое количество различий между версиями Maven, в частности между Maven 2.0.X, 2.2.X и 3.0.X .. Если вам действительно нужно запустить сборку с различными версиями Maven, такими как 2.0, 2.2 и 3.0. Это можно сделать и работает, но есть некоторые недостатки, основанные на технических деталях, в частности, между 2.2.X и 3.0.X (отчеты есть). Я бы предложил использовать только одну версию Maven для создания ваших артефактов (в настоящее время 3.0.3 / 3.0.4). Другой намек - то, что сборка Maven, которая работает для Maven 2/3, никогда не будет работать с Maven 1, потому что POM был сильно изменен.

...