Google Analytics

суббота, 23 октября 2010 г.

Java EE, Maven и Eclipse

Это заметка о настройке 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

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

Отправить комментарий