------ | |
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. |