Setup Eclipse
A preinstalled eclipse can be found at our files server Software:/MacOSX/Software/Eclipse
Install Eclipse (3.3.2)
Download the Java EE edition. It must include WTP.
Subversive (Subversion Plugin)
Register the following URLs in Help / Software Updates
- http://download.eclipse.org/technology/subversive/0.7/update-site/ (note: this is already part of the Eclipse 3.4 download, so no need to add if you have 3.4)
- http://www.polarion.org/projects/subversive/download/eclipse/2.0/update-site/
Maven integration
Register the following URLs in Help / Software Updates
JIRA integration
- Check Mylyn Extras and select JIRA integration
Setup Project
Create New Project
Select New / Other (not Project)
Select Maven checkout from SCM
Provide subversion URL
1. http://svn.magnolia-cms.com/svn/community/magnolia/trunk/
2. Enable eclipse profile in the advanced settings
Check if you got all the projects (the sub modules)
Create a Server
If not yet done create a server.
Deploy the Webapp project
Open Server Edit Pane
Doubleclick on the server item
Disable publishing
Make sure that the option Serve modules without publishing is selected. This ensures that the classes are taken from the target directories.
Freemarker specific settings
For using the tag libs with freemarker you will need to edit web.xml and add the following lines:
<jsp-config> <taglib> <taglib-uri>cms-taglib</taglib-uri> <taglib-location>cms-taglib.tld</taglib-location> </taglib> <taglib> <taglib-uri>cms-util-taglib</taglib-uri> <taglib-location>cms-util-taglib.tld</taglib-location> </taglib> </jsp-config>
And copy the files to webapp/WEB-INF
Known Poblems
Wrong maven version is used for dependency checks
If the project can't build because of the following message (printed in Maven Console)
[WARN] Rule 0: org.apache.maven.plugin.enforcer.RequireMavenVersion failed with message: Detected Maven Version: 2.1-SNAPSHOT is not in the allowed range [2.0.9,2.0.9].
The expected stacktrace on startup is:
SEVERE: Exception sending context initialized event to listener instance of class info.magnolia.cms.servlets.MgnlServletContextListener java.lang.NullPointerException at info.magnolia.cms.beans.config.PropertiesInitializer.loadAllModuleProperties(PropertiesInitializer.java:92) at info.magnolia.cms.beans.config.PropertiesInitializer.loadAllProperties(PropertiesInitializer.java:79) at info.magnolia.cms.servlets.MgnlServletContextListener.contextInitialized(MgnlServletContextListener.java:176) at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3843) at org.apache.catalina.core.StandardContext.start(StandardContext.java:4350)
You can either add the following to the pluginManagement section if your main project pom to disable the enforcer plugin or select the eclipse profile:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-enforcer-plugin</artifactId> <configuration> <skip>true</skip> </configuration> </plugin>
Then clean all projects
To ensure that everything is fine you have to check if magnolia-core/target/classes/mgnl-bean.properties exist.
Freemarker can't find tags (tlds)
Freemarker searches explicitly only in WEB-INF/lib for the tld files to load. But normally if you develop by using eclipse the jars won't lay there. A valid workaround is to copy the needed tld files to the WEB-INF folder and to edit the web.xml to make the tlds available.
<jsp-config> <taglib> <taglib-uri>cms-taglib</taglib-uri> <taglib-location>cms-taglib.tld</taglib-location> </taglib> <taglib> <taglib-uri>cms-util-taglib</taglib-uri> <taglib-location>cms-util-taglib.tld</taglib-location> </taglib> </jsp-config>
Project contains duplicate entry
Sometimes the same jar is references twice (by maven and EAR dependencies). To make the project compile again you must remove the ear dependency:
- right click project -> Java EE -> Update EAR libraries
Webapp project don't work
- make sure that you have only one webapp project open
- add the pom dependency (not only the war dependency) otherwise the dependencies defined in the referenced war file won't be seen
- use war:inplace to overlay the webapp project
- ensure that you delete WEB-INF/lib afterwards
Trouble shooting step by step
- check if there are any build issues denoted in the problem view
- check if there are any problems denoted in the pom.xml (missing parents, ..)
- check if the project builds in the terminal (by using mvn only)
- are the parent poms available?
- check the maven log in eclipse (select the maven console in the console view)
- are the logs fine?
- verify that there is no version conflict thrown by the enforcer plugin
- if so configure the project to use the eclipse profile in the project settings (maven tab)
- clean the project
- this ensures that maven is used to build the resources
- verify that the resources have been built (module descriptor in
taget/classes/META-INF/magnolia
- update project configuration
- right click project -> maven -> update project configuration
- check the maven console (some errors are not reported to the GUI)