MPECLIPSE-127 : add support for wtp 1.5 Dynamically set java and servlet versions in the facet descriptor Add a new property maven.eclipse.enable to avoid to have to define some natures to enable wtp Update documentation Generates project settings to store the compiler source and target levels git-svn-id: https://svn.apache.org/repos/asf/maven/maven-1/plugins/trunk@531133 13f79535-47bb-0310-9956-ffa450edef68
145 lines
8.8 KiB
XML
145 lines
8.8 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
|
<!--
|
|
/*
|
|
* Copyright 2001-2006 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.
|
|
*/
|
|
-->
|
|
|
|
<faqs title="FAQs">
|
|
|
|
<part id="general">
|
|
<title>General</title>
|
|
|
|
<faq id="junit">
|
|
<question>I can't seem to get JUnit to show up in the classpath. What gives?</question>
|
|
<answer>
|
|
<p>You must have some unit tests for your project, otherwise JUnit is ignored.</p>
|
|
</answer>
|
|
</faq>
|
|
|
|
<faq id="project dependencies">
|
|
<question>How can I define dependencies as eclipse projects ?</question>
|
|
<answer>
|
|
<p>The dependencies defined in the POM don't need to be jars strictly. They can be projects in the eclipse workspace. If a dependency is an eclipse project a property needs to be added to that dependency to indicate so.</p>
|
|
<source>
|
|
<![CDATA[
|
|
<dependency>
|
|
<groupId>group</groupId>
|
|
<artifactId>artifact</artifactId>
|
|
<version>version</version>
|
|
<properties>
|
|
<eclipse.dependency>true</eclipse.dependency>
|
|
</properties>
|
|
</dependency>
|
|
]]>
|
|
</source>
|
|
<p>This indicates that the dependency is another project in the workspace. Note that the name of the referenced project is the artifactId.</p>
|
|
<p>The inverse also works. If you have included extra jars that shouldn't be in the eclipse classpath then you can set <code>eclipse.dependency=false</code></p>
|
|
</answer>
|
|
</faq>
|
|
</part>
|
|
|
|
<part id="source">
|
|
<title>Source Code Integration w/ Eclipse</title>
|
|
|
|
<faq id="source-dep">
|
|
<question>How can I attach source code to libraries defined in dependencies ?</question>
|
|
<answer>
|
|
<p>Frequently you will want to include for compiled jars the source .java files to help with debugging.</p>
|
|
<p>The plugin is able to download sources archive at <code>${groupId}/java-sources/${artifactId}-${version}-sources.jar</code> from the repository. This behavior can be disabled by configuring the <code>maven.eclipse.src.download</code> property. As an example, the source archive for the dependency <code>MAVEN_REPO/eclipse/<em>jars</em>/eclipse-ui-3.0.0<em>.jar</em></code> will be mapped to <code>MAVEN_REPO/eclipse/<em>java-sources</em>/eclipse-ui-3.0.0<em>-sources.jar</em></code> </p>
|
|
<p>For backward compatibility the plugin still accepts source archives located at <code>MAVEN_REPO/${groupId}/src/${artifactId}-${version}.${maven.eclipse.src.extension}</code> but it won't download them from the repository. </p>
|
|
</answer>
|
|
</faq>
|
|
|
|
<faq id="generated-sources">
|
|
<question>How must I setup generated source code ?</question>
|
|
<answer>
|
|
<p>When Eclipse is not generating source code for you there is a conflict between Maven generating the source code and then Eclipse treating it as compiled code. Typically when generating code using Maven the code ends up in the target/classes directory. This is fine as long as Maven is doing the build. However, if Eclipse is then setup to do the build, when Eclipse performs a clean build all the generated code in target/classes will be removed.</p>
|
|
<p>The alternatives typically are to place the generated code in the /src/java directory and allow Maven and Eclipse to treat it the same. However, this leads to a tendency to check generated code into source control, which typically is not appropriate for generated code. Alternatively, it can be placed in some sort of /src/generated or target/generated directory. In Maven2, generated code lives in target/generated-sources, in a manner similiar to generated xdoc's live in target/generated-xdocs. Within the target/generated-sources would be each type of generated code.</p>
|
|
<p>By default, the plugin will load as seperate source folders any directory found in <code>${maven.build.dir}/generated-sources</code>. So, if you generate your mock objects into <code>${maven.build.dir}/generated-sources/mocks</code> and your wsdl classes into <code>${maven.build.dir}/generated-sources/wsdl</code> then each of these directories will be mounted as source folders. Note: You must have already created these directories, otherwise the plugin won't know to add them as source folders. Before running <code>maven eclipse</code> just ensure you have already generated all of your source code.</p>
|
|
<p>For example, if you used the XDoclet Plugin for Maven to generate Hibernate mapping files, they would be placed in <code>/target/generated-sources/xdoclet/</code>. While, if you used the Hibernate Plugin for Maven to generate the SQL scripts for generating a database then that would be placed in <code>/target/generated-sources/schema/</code>.<br />Settings in project.properties:</p>
|
|
<source>
|
|
maven.xdoclet.hibernatedoclet.destDir=${maven.build.dir}/generated-sources/xdoclet
|
|
maven.hibernate.output.dir=${maven.build.dir}/generated-sources/schema
|
|
</source>
|
|
</answer>
|
|
</faq>
|
|
|
|
</part>
|
|
|
|
<part id="eclipse-multiproject">
|
|
<title>Multiproject support</title>
|
|
<faq id="hierarchical">
|
|
<question>Eclipse doesn't support hierarchical project structure. How am i supposed to organize my multiproject ?</question>
|
|
<answer>
|
|
<p>If you use Eclipse, you may already have encountered the Infamous Layout Issue: Eclipse doesn't handle (yet ?) overlapping projects. Thus if you work in a multiproject context with a classical non flat layout, Eclipse integration becomes quite problematic. You surely don't want to use one big Eclipse project because you'll then lose visibility on dependencies (inter-project dependencies as well as library dependencies) and this will quickly become quite hard to manage - and promotes cycles.</p>
|
|
<p>Best solution found so far is to refactor your project structure to rather use a flat layout, as described below:</p>
|
|
<source>
|
|
<pre>
|
|
/project-root | /project-root
|
|
+- subproject1 | +- project.xml
|
|
+- project.xml ===> /subproject1
|
|
+- subproject2 | +- project.xml
|
|
+- project.xml | /subproject2
|
|
+- project.xml | +- project.xml
|
|
</pre>
|
|
</source>
|
|
<p>And alter your properties in a similar way than the example below:</p>
|
|
<source>
|
|
maven.multiproject.basedir=${basedir}/..
|
|
maven.multiproject.includes=*/project.xml
|
|
maven.multiproject.excludes=project-root/project.xml
|
|
</source>
|
|
<p>If you really can't (or don't want to) flatten your layout, the only solutions that are offered to you are a few tricks, each with its own drawback.</p>
|
|
<ul>
|
|
<li>
|
|
Edit root files outside Eclipse - almost safe but implies switching between tools. Note that initial
|
|
checkout must be done through command line in this case, because parent project shouldn't be in the
|
|
workspace folder.
|
|
</li>
|
|
<li>
|
|
Create a virtual project which contains links to root files - doesn't support refactoring well, and
|
|
implies identical paths on every developer machines.
|
|
</li>
|
|
</ul>
|
|
<p><i>Use those tricks at your own risk</i></p>
|
|
<p>if this issue really annoys you, then please vote for <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=35973">https://bugs.eclipse.org/bugs/show_bug.cgi?id=35973</a></p>
|
|
</answer>
|
|
</faq>
|
|
</part>
|
|
|
|
<part id="WTP">
|
|
<title>WTP support</title>
|
|
<faq id="version">
|
|
<question>How can I set the version of WTP ?</question>
|
|
<answer>
|
|
<p>To specify the version of WTP configuration files, set the property <a href="properties.html">maven.eclipse.wtp.version</a> .</p>
|
|
</answer>
|
|
</faq>
|
|
<faq id="activation">
|
|
<question>How can I activate WTP support for my project ?</question>
|
|
<answer>
|
|
<p>To activate WTP you have to set the property <a href="properties.html">maven.eclipse.wtp.enable</a> to true.</p>
|
|
</answer>
|
|
</faq>
|
|
<faq id="multiproject">
|
|
<question>Can I use WTP in a multiproject ?</question>
|
|
<answer>
|
|
<p>Yes, the plugin will read the value of the property maven.multiproject.type to generate the settings for libraries and for the web application.</p>
|
|
</answer>
|
|
</faq>
|
|
</part>
|
|
</faqs>
|