Модули плагинов Maven EAR

#java #maven #ejb #java-ee-7

#java #maven #ejb #java-ee-7

Вопрос:

Для создания приложения Java EE с помощью Maven можно использовать следующую конфигурацию:

             <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-ear-plugin</artifactId>
                <version>3.0.2</version>
                <configuration>
                    <modules>
                        <webModule>
                           [..]
                        </webModule>
                        <ejbModule>
                            [..]
                        </ejbModule>
                        <jarModule>
                            [..]
                        </jarModule>
                    </modules>
                </configuration>
            </plugin>
  

Я понимаю, что веб-модуль упакован иначе, чем другие модули, то есть, например, расположен в корне ear и упакован в собственные зависимости WEB-INF/lib .

Но как насчет модулей jar и ejb? Чем они отличаются друг от друга? И в чем разница определения jar как обычной зависимости и / или определения его как jarModule or ejbModule ?

Если быть более точным, в чем разница между следующими настройками:

1. модуль ejb определяется как ejbModule

 <build>
    <pluginManagement>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-ear-plugin</artifactId>
                <version>3.0.2</version>
                <configuration>
                    <modules>
                        <webModule>
                            [..]
                        </webModule>
                        <ejbModule>
                             <groupId>org.example</groupId>
                             <artifactId>helloworld-model</artifactId>
                            <version>1.0-SNAPSHOT</version>
                        </ejbModule>
                    </modules>
                </configuration>
            </plugin>
        </plugins>
    </pluginManagement>
</build>


<dependencies>
    
</dependencies>
  

2. модуль ejb определяется как зависимость

 <build>
    <pluginManagement>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-ear-plugin</artifactId>
                <version>3.0.2</version>
                <configuration>
                    <modules>
                        <webModule>
                            [..]
                        </webModule>
                    </modules>
                </configuration>
            </plugin>
        </plugins>
    </pluginManagement>
</build>


<dependencies>
    <depdendency>
        <groupId>org.example</groupId>
        <artifactId>helloworld-model</artifactId>
        <version>1.0-SNAPSHOT</version>
    </dependency>
</dependencies>
  

3. ejb / jar определяется как jarModule

 <build>
    <pluginManagement>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-ear-plugin</artifactId>
                <version>3.0.2</version>
                <configuration>
                    <modules>
                        <webModule>
                            [..]
                        </webModule>
                        <jarModule>
                            <groupId>org.example</groupId>
                             <artifactId>helloworld-model</artifactId>
                            <version>1.0-SNAPSHOT</version>
                        </jarModule>
                    </modules>
                </configuration>
            </plugin>
        </plugins>
    </pluginManagement>
</build>
  

4. ejb / jar определяется как зависимость

 <build>
    <pluginManagement>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-ear-plugin</artifactId>
                <version>3.0.2</version>
                <configuration>
                    <modules>
                        <webModule>
                            [..]
                        </webModule>
                    </modules>
                </configuration>
            </plugin>
        </plugins>
    </pluginManagement>
</build>


<dependencies>
    <depdendency>
        <groupId>org.example</groupId>
        <artifactId>helloworld-model</artifactId>
        <version>1.0-SNAPSHOT</version>
    </dependency>
</dependencies>
  

Ответ №1:

Чтобы ответить на часть вашего вопроса:

Артефакты EJB отправляются в основной каталог EAR, а артефакты JAR отправляются в lib каталог.

Комментарии:

1. Спасибо, вы знаете, в чем разница, лежит ли jar в корне или в папке lib?