Как настроить maven-ejb-plugin на включение только необходимых классов в клиентский пакет EJB?

У меня довольно большой устаревший модуль, который содержит как EJB 3.0, так и некоторые классы бизнес-логики. Я пытаюсь преобразовать процесс сборки в Maven, и у меня возникают трудности с настройкой maven-ejb-plugin,

Я пытаюсь сгенерировать клиентский EJB-пакет, используя maven-ejb-plugin, но обратите внимание, что клиентский пакет также содержит все классы бизнес-логики - даже если на них не ссылаются EJB.

Моя текущая конфигурация: org.apache.maven.plugins maven-ejb-plugin default-ejb ${project.build.outputDirectory} ejb 3.0 true

К сожалению, не существует четкого разделения пакетов для бизнес-классов / моделей /DTO, поэтому нелегко точно определить, какие EJB-компоненты зависят от каких классов.

Есть ли механизм в maven-ejb-plugin поручить maven включить в клиентский пакет только требуемые интерфейсы / реализации EJB и зависимые классы и игнорировать / пропустить все остальное? Или мне нужно вручную выяснить, какие именно классы зависят от отдельных интерфейсов, и настроить плагин для включения только этих файлов?

1 ответ

Как я понимаю, у вас есть несколько пакетов, включая, например, интерфейсы вашего удаленного или локального EJB, и у вас есть определение (stateless fullfull, mdb и т. Д.) В том же пакете ваших интерфейсов, и вы хотите импортировать только классы (или интерфейсы), что нужно вашему клиенту, он не нуждается в реализации по логическим причинам.

Итак, у нас есть два момента: в качестве рекомендации вы должны иметь как минимум свои удаленные или локальные интерфейсы в отдельном проекте, чтобы отделить это (как проект Maven), и каждый, кто хочет их использовать, просто должен импортировать его как зависимость, без необходимости знать об их реализации.

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

Вы можете проверить ссылку выше:

http://maven.apache.org/surefire/maven-surefire-plugin/examples/inclusion-exclusion.html

Если вы используете некоторые соглашения, подобные этим: http://www.oracle.com/technetwork/java/namingconventions-139351.html

Вы сможете, например:

<plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>2.19.1</version>
        <configuration>
          <excludes>
            <include>**/Local*.java</include>
          </excludes>
        </configuration>
      </plugin>
    </plugins>

Недавно я начал работать над переносом проекта EJB в Maven Project. Мы используем EJB 2.0 в нашем проекте, я не знаю, как начать процесс миграции, в настоящее время существующий проект EJB включает STUBS & TIES(с помощью инструмента RAD мы генерируем файл jar.). Не уверен, как я могу заставить этот Maven включать эти STUBS & TIES в банку, которую я генерирую с помощью процесса Maven.

Я использую эту конфигурацию ниже в POM.xml

<profile>
    <id>xdoclet</id>
    <activation>
        <property>
            <name>xdoclet</name>
        </property>
    </activation>
    <build>
        <plugins>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>xdoclet-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <phase>generate-sources</phase>
                        <goals>
                            <goal>xdoclet</goal>
                        </goals>
                        <configuration>
                            <tasks>
                                <ejbdoclet
                                        destDir="${project.build.sourceDirectory}"
                                        force="true" ejbSpec="2.0"
                                        verbose="true">
                                    <fileset
                                            dir="${project.build.sourceDirectory}">
                                        <include name="**/*Bean.java" />
                                    </fileset>
                                    <packageSubstitution
                                            packages="service" useFirst="true"
                                            substituteWith="interface" />
                                    <homeinterface />
                                    <remoteinterface />
                                    <deploymentdescriptor
                                            displayname="Service Name"
                                            description=""
                                            destDir="${basedir}/src/main/resources/META-INF"
                                            validateXML="true" useIds="true" />
                                    <websphere
                                            destDir="${basedir}/src/main/resources/META-INF"
                                            validateXML="true" />
                                </ejbdoclet>
                            </tasks>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</profile>
<profile>
    <id>was-ejb</id>
    <activation>
        <property>
            <name>was-ejb</name>
        </property>
    </activation>
    <build>
        <plugins>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>was6-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <goals>
                            <goal>ejbdeploy</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <wasHome>C:/Program Files/IBM/WebSphere/AppServer</wasHome>
                </configuration>
            </plugin>
        </plugins>
    </build>
</profile>
Другие вопросы по тегам