Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Note

This page is outdated and no longer receives updates!

Use Maven in Intellij IDEA

I am going to demonstrate how I use Maven in Intellij IDEA. You are welcome to edit this page if you find anything that's useful or beneficial to developers.

Panel

 

Requirement:

Panel
  1. # Intellij IDEA 9 with Maven plugins enabled. It is enabled by default.

...

  1. Apache Maven 2.2.1. Download maven from maven.apache.org and follow the installation instruction.

Panel

 

Checkout Source and Create Project:

Panel
Panel
# check out maven branch from http://svn.openmrs.org/openmrs/trunk.  From the toolbar, select VCS
  1. Checkout the desired branch – From the Toolbar go to VCS -> Checkout from Version Control

> Subversion.

Image Removed

  1. When checkout is done, it will ask you to create a new project. Say "yes".
    Image Removed
  2. Select "Import project from external model".
    Image Removed
  3. Select "Maven" as external model.
    Image Removed
  4. "Root directory" is selected by default, Click "Next".
    Image Removed
  5. Click Next to import Maven project.
    Image Removed
  6. Click Next if you don't want to change Project Name and Location.
    Image Removed
  7. Finish importing maven project, IDEA will load the project.
    Image Removed
  1. -> Github -> Source  https://github.com/openmrs/openmrs-core.git

    1. This can also be achieved from the main IntelliJ Menu by selecting "Check out From Version Control"

  1. Image Added



  2. Image Added



  3. Clone the repository, select a parent directory

    Image Added




  4. IntelliJ will give a prompt to configure the detected frameworks

    Image Added



Panel

 

Develop with Maven

There are three modules defined in maven project, openmrs-api,openmrs-web and openmrs-webapp. OpenMrs is a parent project. When we run any maven goal on parent project, it will run the same goal on its children according to the dependency order. Common maven goals are shown under Lifecycle node. There are also goals provided by maven plugins which are shown under Plugins node.

Panel

 

How to run Junit

If you want to run all tests across modules, click test under Lifecycle node in Openmrs project.

...

You can also create IDEA run configuration to run junit tests. For example to create a run configuration that runs all junit tests across modules, you can click menu "Run -> Edit Configuration", click + and pick junit, type name "All Tests", select "All in package", select search for tests "In whole project", select "openmrs:test-compile" in before launch section and save. The pro of this is that it uses native IDE test view, and you can navigate to the line where error happens.

Panel

 

How to Run Web Application

Create a run configuration by click "Run -> Edit Configuration", click + and pick "Maven", type Name "OpenMRS", select working directory to be the root of webapp module, type goal "jetty:run" and save. Now you select "OpenMRS" and run or debug it.Image Removed

...

 

Current configuration of Jetty is that it will reload static resources like jsp, javascript files etc. If there is any java class change, It will require to run maven:compile goal and restart Jetty.

Panel

 

How to Debug Web Application

Jetty plugin can pick up any changes of static resources, so changes of jsp, property or css files don't require a restart. However changes of java class will have to restart. The following solutions could help in some situations.

Panel

 

JVM Hotswap

If you only change things in a method, you can use JVM Hotswap. In IDEA, you click "Build -> Compile.." which will compile only the class you modify and IDEA will provide hotswap dialog. Currently IDEA doesn't support hotswap if you use maven to compile.

Panel

 

Hot Deploy

There is memory leak when hot deploying web application. But if you increase JVM permgen, you can still do it.

Panel

 

Use JRebel

Check this http://www.zeroturnaround.com/jrebel/comparison, You can see Jrebel can do a lot more than JVM Hotswap does. Here is how you configure JRebel to work with OpenMRS

Panel
  1. # Download JRebel and install it. http://www.zeroturnaround.com/jrebel/current/

  1. Install JRebel plugin for Intellij IDEA and restart.

...

  1. Image Added

    Image Added



    In Settings > Debugger > Java ; Untick "Synthetic Fields"

    Image Added



    In Settings > Debugger > Stepping ; Tick "Skip Synthetic Methods"

    Image Added



    Tick "Skip synthetic methods"

  2. Configure JRebel by running JRebel Configuration Wizard.

    Image Modified


    Select "Intellij 8x or later", tick "Use maven to build my application", tick "I run the server from my IDE"

    Image Modified


    Untick "Spring Framework Plugin"

  3. Run or Debug "OpenMRS" with JRebel from "Run -> Run/Debug with JRebel"

When you change any java classes, just run maven:compile and reload the web page, and JRebel will reload the class for you.