| ------ | |
| Eclipse and Maven integration | |
| ------ | |
| Chris Graham | |
| Robert Scholte | |
| ------ | |
| 2013-11-19 | |
| ~~ Copyright 2013 The Apache Software Foundation. | |
| ~~ | |
| ~~ Licensed under the Apache License, Version 2.0 (the "License"); | |
| ~~ you may not use this file except in compliance with the License. | |
| ~~ You may obtain a copy of the License at | |
| ~~ | |
| ~~ http://www.apache.org/licenses/LICENSE-2.0 | |
| ~~ | |
| ~~ Unless required by applicable law or agreed to in writing, software | |
| ~~ distributed under the License is distributed on an "AS IS" BASIS, | |
| ~~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
| ~~ See the License for the specific language governing permissions and | |
| ~~ limitations under the License. | |
| ~~ NOTE: For help with the syntax of this file, see: | |
| ~~ http://maven.apache.org/doxia/references/apt-format.html | |
| Eclipse and Maven Integration (without m2e) | |
| This page describes how to integrate an EAR project in Eclipse or Eclipse-based IDE <<without>> {{{http://www.eclipse.org/m2e/}m2e}} support. | |
| Normally however, using m2e (and m2e-wtp) should be the preferred way to integrate Maven and Eclipse. But in some rare cases that might not be possible. | |
| If you have used <<<mvn eclipse:eclipse>>> to generate the metadata for an EAR project, it will want the <<<application.xml>>> file in the <<<src/main/application/META-INF>>> directory. | |
| If you edit <<<application.xml>>> using the WTP based Application Deployment Descriptor editor, it will use the name of the projects (Web, EJB etc) as the name of the modules. Here is an example: | |
| +------------------------+ | |
| <?xml version="1.0" encoding="UTF-8"?> | |
| <application xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | |
| xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/application_1_4.xsd" version="1.4"> | |
| <display-name>FireDragon</display-name> | |
| <module> | |
| <web> | |
| <web-uri>FireDragonWeb.war</web-uri> | |
| <context-root>firedragon</context-root> | |
| </web> | |
| </module> | |
| </application> | |
| +------------------------+ | |
| Obviously this does not have the typical Maven based version naming convention applied to it. This allows us to run the application internally within Eclipse using the test environments. | |
| When Maven is used to create the ear using <<<mvn package>>>, it will create the versionized <<<application.xml>>> file, if told to. | |
| However, by default it will not pick up the generated (versionized) one, it will use the existing one in the <<<src/main/application/META-INF>>> directory. | |
| The solution to resolve this conflict is to have Maven generate the <<<application.xml>>> and use the generated one as opposed to the existing one. | |
| This can be achieved via these two directives: | |
| +------------------------+ | |
| <generateApplicationXml>true</generateApplicationXml> | |
| <applicationXml>\${project.build.directory}/application.xml</applicationXml> | |
| +------------------------+ | |
| The first line tells Maven to generate a new <<<application.xml>>> file, by default in the target directory. | |
| The second line tells Maven to use it. |