Page History
Table of Contents |
---|
Install Eclipse & Plugins
Note | ||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
A preinstalled eclipse based on helios (eclipse-helios.zip) can be found at our file server Product Development/Eclipse
|
Install Eclipse (3.5)
Download the Java EE edition which includes WTP (web tool project).
Subversive (Subversion Plugin)
Install the plugin
- Help / Install New Software ..
- select: Galileo - http://download.eclipse.org/releases/galileo
- select: Collaboration/Subversive SVN Team Provider
Note: to get the latest stable version you will better use the project's url. I had to do that because eclipse started to block on startups otherwise.
Connectors
You also have to install a connector. Subversive will prompt you on the first usage.
- open "SVN Repository" perspective (Window -> Open perspective)
- select SVNKit 1.3
- proceed installation
Maven integration (M2Eclipse)
Plugin
- Help -> Install New Software ..
- Add... (to add a new site)
- http://m2eclipse.sonatype.org/sites/m2e
WTP Integration
- Help -> Install New Software ..
- Add... (to add a new site)
- http://m2eclipse.sonatype.org/sites/m2e-extras
- select: Maven Integration for WTP
Subversive Integration
- Help -> Install New Software ..
- Add... (to add a new site)
- http://www.polarion.org/projects/subversive/download/integrations/update-site/
- select: Subversive Integration for M2Eclipse
FreeMarker IDE (optional)
Register the following URLs in Help / Software Updates
- http://download.jboss.org/jbosstools/updates/JBossTools-3.0.3.GA
- select: FreeMarker IDE
Any Edit (optional)
Used for tab to space transformations and other cleanup on save
- http://andrei.gmxhome.de/eclipse
- select: AnyEditTools
JIRA integration (optional)
- Check Mylyn Extras and select JIRA integration
Maven Repository
See Maven setup.
Add SVN Repository
Eclipse Kepler (3.9)
As of July 9th 2013 Kepler based image is available on file server with same set of plugins as those installed for 3.7 with addition of
- JBoss Tools (for editing BPMN workflow definitions)
- Vaadin plugin
- JRebel plugin
After installing this bundle
- reconfigure location of checkstyle header files according to Checkstyle for Eclipse (In difference to the page i would recommend to just checkout
magnolia-build-tools
directly from svn and point header properties for ce and ee checkstyle configurations directly to those files). - it might be also necessary to click "Apply" again on formatting configuration to get it being used by eclipse (pbly related to workspace config?). See more details at Eclipse setup
- I had some performance issues with Indigo and git reindexing which was the primary reason for making Kepler bundle. Those issues were not solved by installing Kepler but only by trashing the workspace and recreating it again ... do the same if in doubt.
- If you have any problems with Kepler bundle, please report them along w/ solution or workaround here.
Complete list of installed plugins:
Eclipse Indigo (3.7)
Info |
---|
As of 4th April 2012 our SVN repository will be gradually migrated to GIT. The new Eclipse bundle is based on latest (as of April 2012) Indigo and also contains EGit plugin, an Eclipse Team provider for the Git version control system. For any question concerning Eclipse and Git integration, please read the EGit User guide. |
Note |
---|
There's a bug in Indigo (see also related issue http://jira.magnolia-cms.com/browse/BUILD-72) which causes Eclipse to show an annoying error message on poms. Worry not, however, your IDE will work fine nonetheless. Read more below. |
If you can access Magnolia's internal network, a preinstalled eclipse for Mac OS X(Cocoa 64) called eclipse-indigo-macosx-cocoa-64-egit.zip can be found at our file server under Product Development/Eclipse
There is also preinstalled eclipse for Linux-64b. It can also be found in Product Development/Eclipse folder. This version supports Git DVCS.
The eclipse-indigo-macosx-cocoa-64-egit.zip bundle was created on 10 April 2012 and consists of the following platform, plugins and related versions:
Autoshare
By default cloning a Git repo and then importing it as a Java or Maven project does not show it as "shared", meaning that the Eclipse project looks disconnected from your local Git repo. If you're used to work with SVN you might find this baffling, as you're accostumed to checkout a project from the central scm repository and see it connected to it, so that changes to your local copy are visually decorated by a special label or icon. In order to save you some clicks to achieve the same with Git you need to check the following option under Eclipse -> Preferences -> Team -> Git -> Projects
m2e 1.0 known issue
Indigo introduces m2e (Maven 2 Eclipse) 1.0, which seems to cause some problems with plugins that are not "known" by m2e. This hits Magnolia with the setproperty Maven plugin and other Maven plugins as well (See list below). If you have m2e 1.0 installed you will likely get the following error upon importing a Maven project (i.e. a Magnolia module) into Eclipse:
Warning |
---|
No marketplace entries found to handle Execution currentDate, in /pom.xml in Eclipse. Please see Help for more information. |
Just choose to resolve the issue later and import the project.
Table of plugins which currently do not have a m2e connector
groupId | artifactId | version | goal | execution | phase |
---|---|---|---|---|---|
org.apache.maven.plugins | maven-javadoc-plugin | 2.8 | javadoc | default | generate-resources |
info.magnolia | maven-setproperty-plugin | 1.1.1 | set-property | currentDate | generate-resources |
org.codehaus.mojo | gwt-maven-plugin | 2.4.0 | resources | default | process-resources |
(Last update April 2012)
Other handy plugins
The following plugins might come in handy. These are not part of the Indigo bundle for now.
Maven Repository
See Maven setup. Be sure to follow these steps first as else you'll not be able to checkout magnolia properly!
Add SVN Repository
You will have to register our SVN repository You will have to register our SVN repository in case you want to checkout magnolia modules/projects
- open SVN Repository Exploring Perspective
- add repository location
- http://svn.magnolia-cms.com/svn
Create/Checkout a Project
New Checkout
- open "SVN Repository" perspective (Window -> Open perspective)
- select module/project to check out
- click "Check out as Maven project..." in the context menu
Importing an already checked out project from file system
...
Freemarker specific settings
Taglib definitions (tld
...
)
FreeMarker won't does not search the classpath for finding the tlds but to find taglib definition. It uses only WEB-INF/lib
and the entries defined in web.xml
directly. There exist mainly the following are two workarounds:
A) register the tlds Register taglib definitions in web.xml
Edit
web.xml
and add the taglib definitions as follows.
...
It is important to
...
add them before
jsp-property-group
.Code Block xml xml
...
<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> <taglib> <taglib-uri>cmsfn-taglib</taglib-uri> <taglib-location>cmsfn-taglib.tld</taglib-location> </taglib> <jsp-property-group> <url-pattern>*.jsp</url-pattern> <page-encoding>UTF-8</page-encoding> </jsp-property-group> </jsp-config>
...
- Copy the files to
webapp/WEB-INF
.
B) put Put minimal jars JARs into WEB-INF/lib
1. in
In the
webapp
folder, execute:Code Block none none
...
mvn war:inplace
2. delete all jars except the taglib jars in src/main/webapp/WEB-INF/lib
...
This generates a complete webapp in your
src/webapp
directory as opposed totarget/webapp-name-1.0-SNAPSHOT
. This is an Eclipse specific workaround.- Delete all JARs except the taglib JARs in
src/main/webapp/WEB-INF/lib
Minimize the taglib JAR
Code Block none none
...
zip -d magnolia-taglib-cms-4.1.1-SNAPSHOT.jar /info/* zip -d magnolia-taglib-utility-4.1.1-SNAPSHOT.jar /info/*
Auto completion
Freemarker templates do not provide automatically auto completion of the provided objects.
...
The important part of this configuration file is the declaration of the objects the auto completion should know. I think these four declarations I use make sense:
Code Block | ||||
---|---|---|---|---|
| ||||
<value key="mgnl" object-class="info.magnolia.module.templating.MagnoliaTemplatingUtilities"/>
<value key="ctx" object-class="info.magnolia.context.MgnlContext"/>
<value key="stk" object-class="info.magnolia.module.templatingkit.util.STKUtil"/>
<value key="state" object-class="info.magnolia.cms.core.AggregationState"/>
|
...
If you are an internal developer or a contributor please follow the instructions found here: Code style Development Standards and JavadocGuidelines.
Tips and Tricks
Get the sources or a linked jar / module
...
The dependencies are resolved inside the workspace. This is quite helpful. But this will only work if the version you reference in the project and the version of the module you checked out has the same version. In some cases you will have to adapt the pom files locally (to point to the current snapshot for instance).
Known Problems
Use company wide Java Code Style & Compiler preferences
Simply import the preferences file into your Eclipse.
Known Problems
Wrong maven version is used for dependency checks
If the project can't build because of the following message (printed in Maven Console)
Code Block | ||||
---|---|---|---|---|
| ||||
[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:
Code Block | ||||
---|---|---|---|---|
| ||||
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 in your main project pom to disable the enforcer plugin or select the eclipse profile:
Code Block | ||||
---|---|---|---|---|
| ||||
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-enforcer-plugin</artifactId>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
|
...
Symptom:
Code Block | ||||
---|---|---|---|---|
| ||||
SEVERE: Exception starting filter magnoliaFilterChain
java.lang.ClassCastException: info.magnolia.cms.filters.MgnlMainFilter
at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:255)
at org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:397)
at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:108)
at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:3709)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4356)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
|
Solution: exclude This typically depends on the servlet api jar. Verify that you don't have the servlet api jar in your maven dependencies.
Example:
-api AND/OR the gwt-user dependencies in your pom.xml(s) and Tomcat (i.e. never seen this problem with jetty). The solutions provided below are not mutually exclusive and you might need to apply a combination or all of them.
Solution 1: exclude the servlet api jar. Verify that you don't have the servlet api jar in your maven dependencies.
Example:
Code Block | ||||
---|---|---|---|---|
| ||||
<dependency>
<groupId>info.magnolia</groupId>
<artifactId>magnolia-empty-webapp</artifactId>
<version>4.0.1</version>
<type>pom</type>
<exclusions>
<exclusion>
| ||||
Code Block | ||||
xml | xml | <dependency> <groupId>info.magnolia</groupId> <artifactId>magnolia-empty-webapp</artifactId> <version>4.0.1</version> <type>pom</type> <exclusions> <exclusion> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> </exclusion> </exclusions> </dependency> |
Webapp project doesn't work
...
Solution 2: make the servlet-api dependency scope provided
.
Example:
Code Block | ||||
---|---|---|---|---|
| ||||
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope>
</dependency>
|
Solution 3: make the gwt-user dependency scope provided
.
Example:
Code Block | ||||
---|---|---|---|---|
| ||||
<dependency>
<groupId>com.google.gwt</groupId>
<artifactId>gwt-user</artifactId>
<version>2.4.0</version>
<scope>provided</scope>
</dependency>
|
Webapp project doesn'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 mvn war:inplace to overlay the webapp project (make sure that the WEB-INF/web.xml exists
- ensure that you delete WEB-INF/lib after a war:inplace
- check settings
project/project facets/dynamic web module
==> 2.4 works (helios, wtp 2.4), 3.0 doesn't (helios, wtp 3.0)
NPE when configuring tomcat with "don't publish" option
- delete Servers, delete .project and .settings from the webapp and reimport the webapp
webapp is not recognized as webapp and doesn't show in tomcat when trying to add it
- go to
project/project facets
and make suredynamic web module
andjava
andjavascript
facets are checked. - rebuild the project
modules are not installed when installing the webapp
- cause: modules are not visible if the faceted build version of java doesn't match the current version or that used by the webapp project
- solution: update project config and change java version
Module Dependency Exception
Symptom:
Code Block | ||||
---|---|---|---|---|
| ||||
ERROR info.magnolia.init.MagnoliaServletContextListener : Oops, Magnolia could not be started
info.magnolia.module.model.reader.ModuleDependencyException: Module Magnolia Mail Module (version 4.5.0-SNAPSHOT) is dependent on myCoolModule version 4.5/*, which was not found.
at info.magnolia.module.model.reader.DependencyCheckerImpl.checkSpecificDependency(DependencyCheckerImpl.java:79)
|
Solution: ensure that no resource is excluded under myCoolModule -> Build path -> Configure Build Path... This might happen when i.e. updating the Maven dependencies if the m2Eclipse plugin is installed.
...
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
target/classes/META-INF/magnolia
- update project configuration
- right click project -> maven -> update project configurationcheck the maven console (some errors are not reported to the GUI)update project configuration
- check the maven console (some errors are not reported to the GUI)
- one last step can be added to the above Eclipse voodoo dance: ensure that no resource is excluded under
Install Sun JDK to Ubuntu
By default Ubuntu packagers are not supporting sun jdk. You have to add new software source:
Code Block |
---|
deb http://ppa.launchpad.net/ferramroberto/java/ubuntu oneiric main
|