Eclipse + m2eclipse plugin + зависимости модуля EAR - PullRequest
1 голос
/ 18 мая 2010

Я пытаюсь создать проект eclipse с нуля, используя плагин m2eclipse, чтобы помочь разрешить зависимости.

Проект состоит из следующих модулей:

тест-ухо тест-EJB тест войны

Ухо ссылается как на другие проекты, так и pom-файлы готовы и работают в каждом проекте.

Тем не менее у меня есть одна ситуация:

Вместо того, чтобы просто строить свой проект maven, я хочу иметь возможность экспортировать ухо из затмения и иметь рабочий проект, чтобы я мог иметь возможность его горячего развертывания на сервере.

Но у меня есть одна проблема ... ejb использует внешний jar (jbpm), зависимость правильно указана в pom и появляется в определении пользовательской библиотеки "Maven Dependencies", и у меня нет ошибок компиляции.

Но чтобы успешно экспортировать EAR, мне нужно добавить jar (jbpm) в файл манифеста ejb. Переходя к свойствам проекта «Зависимости модуля Java EE», у меня есть только запись «Зависимости Maven», и ее выбор не добавит никакой информации в файл манифеста.

После этого при экспорте EAR будут показаны файлы jar зависимостей в корне EAR, но открытие включенного EJB показывает, что в манифесте вообще нет записи пути к классам.

Развертывание EAR завершается неудачно с информацией о ClassNotFoundException в EJB для класса, который находится внутри jar зависимости.

Чтобы обойти это, я могу включить jar в модуль EAR (project-> properties-> Зависимости модуля Java EE), затем я могу добавить его в EJB, и файл манифеста будет обновлен соответствующим образом.

Но у проекта будет множество банок, и я не хочу включать их все вручную в EAR, а затем собирать их все в каждом проекте.

Я знаю, что эти записи находятся в файле .settings / org.eclipse.wst.common.component, но не должен ли плагин maven автоматически обновлять его в проекте EAR? По крайней мере, в зависимости от модуля Java EE, чтобы я мог просто проверить jar-файл для каждого подпроекта (ejb, war, ...)

Спасибо

1 Ответ

0 голосов
/ 15 июля 2010

Если я правильно вас понимаю, вы хотите упаковать все сторонние библиотеки, которые используются вашими EJB-компонентами, в полученный EAR-файл. Если ваш EAR-проект имеет тип упаковки ear и зависимости от ваших модулей EJB указаны правильно с типом ejb, эти сторонние библиотеки должны автоматически включаться в полученный EAR-файл. Вы также можете указать пользовательский каталог lib внутри EAR.

Пример:

<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>yourGroup</groupId>
    <artifactId>test-ear</artifactId>
    <version>1.0.0-SNAPSHOT</version>
    <!-- We want the resulting artifact to be an .ear file -->
    <packaging>ear</packaging>

    <dependencies>
        <!-- Internal dependencies -->
        <dependency>
            <groupId>yourGrup</groupId>
            <artifactId>test-ejb</artifactId>
            <version>1.0.0-SNAPSHOT</version>
            <!-- We have an ejb dependency here - take care of it! -->
            <type>ejb</type>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <artifactId>maven-ear-plugin</artifactId>
                <configuration>
                    <version>5</version>
                    <!-- put all 3rd party libs into the lib directory -->
                    <defaultLibBundleDir>lib</defaultLibBundleDir>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>

Так что это не должно иметь ничего с m2e IMO. Возможно, вам придется обновить конфигурацию проекта в Eclipse.

...