Это заметка о настройке maven проекта для ear приложения с несколькими подпроектами и работа с ним в IDE Eclipse. Версии программного обеспечения следующие: maven 3.0, eclipse 3.6(Helios), m2eclipse 0.10.2, glassfish 3.0.1, jdk 1.6.0_22-b04, debian squeeze. Для продолжения необходимо чтобы все программное обеспечение было настроено и готово к работе.
Создадим директорию, в которой будут расположены все подпроекты. Назовем ее my-project. Инициируем подпроект с помощью maven:
$mvn archetype:generate, затем выбираем
... 191: remote -> ear-javaee6 (Archetype for EAR package using Java EE 6) ... Choose a number: 82: 191
, и заполняем артефакт, группу, версию и пакет следующими значениями:
Choose version: 1: 1.0 2: 1.3 Choose a number: : 2 Define value for property 'groupId': : my.project Define value for property 'artifactId': : my-ear Define value for property 'version': 1.0-SNAPSHOT: : Define value for property 'package': my.project: : Confirm properties configuration: groupId: my.project artifactId: my-ear version: 1.0-SNAPSHOT package: my.project Y: : y [INFO] --------------------------------------------------------- [INFO] BUILD SUCCESS [INFO] --------------------------------------------------------- [INFO] Total time: 1:02.428s [INFO] Finished at: Sat Oct 23 13:23:15 ALMT 2010 [INFO] Final Memory: 9M/119M [INFO] ---------------------------------------------------------
В текущей директории должна появиться директория my-ear. Далее инициируем два подпроекта с web приложениями.
$mvn archetype:generate ... 205: remote -> webapp-javaee6 (Archetype for a web application using Java EE 6.) ... Choose a number: 82: 205 Choose version: 1: 1.0 2: 1.0.1 3: 1.0.2 4: 1.3 Choose a number: : 4 Define value for property 'groupId': : my.project.web1 Define value for property 'artifactId': : web1 Define value for property 'version': 1.0-SNAPSHOT: : Define value for property 'package': my.project.web1: : Confirm properties configuration: groupId: my.project.web1 artifactId: web1 version: 1.0-SNAPSHOT package: my.project.web1 Y: : y [INFO] --------------------------------------------------------- [INFO] BUILD SUCCESS [INFO] --------------------------------------------------------- [INFO] Total time: 28.087s [INFO] Finished at: Sat Oct 23 13:28:50 ALMT 2010 [INFO] Final Memory: 9M/151M [INFO] --------------------------------------------------------- $mvn archetype:generate ... 205: remote -> webapp-javaee6 (Archetype for a web application using Java EE 6.) ... Choose a number: 82: 205 Choose version: 1: 1.0 2: 1.0.1 3: 1.0.2 4: 1.3 Choose a number: : 4 Define value for property 'groupId': : my.project.web2 Define value for property 'artifactId': : web2 Define value for property 'version': 1.0-SNAPSHOT: : Define value for property 'package': my.project.web2: : Confirm properties configuration: groupId: my.project.web2 artifactId: web2 version: 1.0-SNAPSHOT package: my.project.web2 Y: : y [INFO] --------------------------------------------------------- [INFO] BUILD SUCCESS [INFO] --------------------------------------------------------- [INFO] Total time: 16.627s [INFO] Finished at: Sat Oct 23 13:29:46 ALMT 2010 [INFO] Final Memory: 9M/119M [INFO] ---------------------------------------------------------
К этому моменту мы должны иметь такую структуру директории my-project:
├── my-ear │ ├── pom.xml │ └── src │ └── main │ └── application │ └── META-INF │ └── MANIFEST.MF ├── web1 │ ├── pom.xml │ └── src │ ├── main │ │ ├── java │ │ │ └── my │ │ │ └── project │ │ │ └── web1 │ │ └── webapp │ │ └── index.jsp │ └── test │ └── java │ └── my │ └── project │ └── web1 └── web2 ├── pom.xml └── src ├── main │ ├── java │ │ └── my │ │ └── project │ │ └── web2 │ └── webapp │ └── index.jsp └── test └── java └── my └── project └── web2
Создаем в директории my-project файл pom.xml, это будет родительская конфигурация для подпроектов. Она обеспечит одновременную сборку всех подпроектов.
4.0.0 my.project project 1.0-SNAPSHOT pom My project my-ear web1 web2
Теперь необходимо модифицировать файлы с моделями в my-ear, web1 и web2. В pom файлы web приложений необходимо добавить ссылку на родительскую модель в область project:
my.project project 1.0-SNAPSHOT
В pom файл my-ear добавляем зависимости, ссылку на родительскую конфигурацию и конфигурацию maven-ear-plugin:
my.project.web1 web1 1.0-SNAPSHOT war my.project.web2 web2 1.0-SNAPSHOT war my.project project 1.0-SNAPSHOT org.apache.maven.plugins maven-ear-plugin 2.4.2 6 lib true
Если все изменения были сделаны корректно, то теперь при вызове стадии package в директории my-project, должна происходить сборка всех проектов. И в директории my-project/my-ear/target/ находиться файл с my-ear.ear с нашим приложением. Параметр generateApplicationXml, который мы добавили, отвечает за автоматическое генерирование файла application.xml. Итак мы имеем готовый каркас проекта и его объектную модель для maven.
Приступим к настройке IDE eclipse. Вся настройка заключается в установке плагинов m2eclipse и m2e-extras. Теперь импортируем наш проект в eclipse.
Работа с импортированными проектами происходит точно также, как и с созданными в eclipse проектами Java EE.
Дополнительные источники
Архив с проектом
http://maven.apache.org/plugins/maven-ear-plugin/
http://www.eclipse.org/downloads/
http://maven.apache.org/eclipse-plugin.html
Комментариев нет:
Отправить комментарий