Part II: Running Adempiere on IntelliJ IDEA

Part II: Running Adempiere on IntelliJ IDEA

This part is a continuation of the first part which is creating projects up to compiling Adempiere in IntelliJ IDEA.  Part 1: Adempiere on IDEA here. Running Adempiere is even easier that the previous part.

In the first part, we have built the Adempiere with the IntelliJ IDEA’s own build tool.  Now, we will build Adempiere to package and prepare it for running inside an Application Server.   We will use Glassfish as an Application Server.

The build.xml

The build.xml is an Ant build script necessary for preparing, compiling and packaging Adempiere.  Adempiere guys created it for this purpose.   I am writing an upgrade to the Ant build script to use a Maven build script for Adempiere.

The default target of build.xml (found in utils_dev\build.xml) is the complete target.  The complete target creates all jar, dependencies, and everything else.  End output is the installable Adempiere zip file.

  1. Click to open the Ant Build tool window in IntelliJ IDEA
  2. Click the “+” button to add the build.xml
  3. Find the utils_dev\build.xml
  4. Click OK to add.
  5. You will see an “adempiere” in the ant build tool window
  6. Open it and double click the “complete” target to execute.

Figure 9

The result of building should be like this and no error would occur.  If there is for example a delete error, just re-run the complete target.

Figure 10

Running Adempiere Setup

  1. Inside the trunk directory, double click on Adempiere subdirectory
  2. Click RUN_Setup.bat
  3. Once done, you can now double click on the RUN_Adempiere.bat

References:

I have used http://blogs.sun.com/praneet/entry/adempiere_in_netbeans_part_2 for the layout and organization.

Part I: Adempiere in IntelliJ IDEA

Adempiere in IntelliJ IDEA

Part I: Creating Adempiere project in IntelliJ IDEA

I am an IntelliJ IDEA fanatic since its version 5.  It eases all my development efforts especially its shortcut keys in its Editor and the Code refactorings as well as Inspection tool which generally guides me to avoid things that I overlooked.  This is the part 1 and click here for the part 2: running adempiere in idea.

Pre requisites

You need to have the following running on your system no matter what OS you use:

  1. JDK 1.6 – You can download this from the Sun website. http://java.sun.com
  2. IntelliJ IDEA 9 Ultimate – You can download trial version of this from http://www.jetbrains.com
  3. Subversion Client – http://subversion.tigris.org

You need to do the following:

  1. Install IntelliJ IDEA 9, JDK 1.6 and the Subversion Client.
  2. Set JAVA_HOME environment variable to point to your JDK 1.6 installation directory.
    1. For Windows:
      1. i.      JAVA_HOME = C:\Program Files\Java\jdk1.6.0_16
      2. Set the PATH environment variable to have JAVA_HOME and Subversion installation directory exist
        1. For Windows:
          1. i.      PATH = %PATH%;%JAVA_HOME%\bin; C:\Program Files\Subversion\bin;

Getting the Adempiere Source from the Online repository (sourceforge.net)

Repository location: https://adempiere.svn.sourceforge.net/svnroot/adempiere/trunk

  1. Open the IntelliJ IDEA
  2. Once open, Click the Version Control menu and navigate to checkout from version control.
  3. Click the Subversion
    1. Click the “+” symbol and add the repository above.  It will show you figure 1 below.

Figure 1

  1. Once the repository has been loaded, right click it and click on Checkout
  2. Now, select the directory upon which you want to store the Adempiere trunk source.
    1. i.      In my case it’s in C:\workspace\adempiere\trunk

Making an IntelliJ IDEA Project

Adempiere by default does not have an IntelliJ IDEA project setting.  It does have however, a .classpath and .project which makes it an Eclipse project and nbproject which makes it a Netbeans project.

  1. In the main display of IntelliJ IDEA, Click on Create New Project
  2. Once the New project dialog appears, click the Import project from external model (because we will base it on the already defined eclipse project) as shown below Figure 2.

Figure 2

  1. Click Next and Select “Eclipse”
  2. Now, select the trunk directory and check the “Link created IntelliJ IDEA modules to Eclipse project files”.  Do not change the default which is “Create module files near .classpath files” and “.idea (directory based)” project file format.  Image shown below Figure 3.

Figure 3

  1. Click Next
  2. Check the adempiereTrunk and Click the Finish button.
  3. If the Subversion asks you about adding the newly created files to the repository, click No.

Now as an end result, there will be one project module present “adempiereTrunk”.  When you view its module settings, all sources locate each directory.  We will call it the parent project.  We will proceed with the creation of the child projects.

Making the Child projects

Make the child modules in the adempiereTrunk parent folder by doing the following steps:

  1. Right click the adempiereTrunk in the Project tool window
  2. Click the New à Module

Figure 4

  1. In the New Module dialog box, select the Import module from external model
  2. Click Next and Select Eclipse as external model
  3. Click Next
  4. Find the module you want to import
  5. Check the Link created IntelliJ IDEA modules to Eclipse project files
  6. Check also the Create module files near .classpath files

Figure 5

  1. Click Next
  2. Select the Eclipse project you want to import as module
  3. Click Finish.

In the end, your Project tool window might look like the above image in Figure 4.

Import the modules in this order to minimize errors of dependency.  Although this should not be a problem since IntelliJ will still treat correct dependency even if you imported the dependent module ahead of the depended module:

  1. lib
  2. tools
  3. serverApps
  4. JasperReportTools
  5. Base
  6. Client
  7. Data
  8. JasperReports
  9. JasperReportsWebApp
  10. Db
  11. Extend
  12. Jboss
  13. serverRoot
  14. install
  15. sqlj
  16. webStore
  17. doc
  18. looks
  19. interfaces
  20. launch
  21. migration
  22. packages
  23. posterita
  24. utils
  25. utils_dev
  26. webCM
  27. zkwebui
  28. glassfishfacet
  29. jbossfacet

Once you’ve successfully imported all projects as a module in IntelliJ IDEA, you can now click the Rebuild Project under the Build menu.   If there are errors in JasperReportsWebApp, follow instructions below.

Resolving error in JasperReportsWebApp

  1. Right click the JasperReportsWebApp
  2. Click on the Module Settings
  3. Click the Dependencies tab
  4. Click Add à Module Dependencies
  5. Find and add the “base”, then click OK
  6. Click Add à Single Entry Module Library
  7. You will be asked for the Path of the jars, enter the tools\lib folder i.e. C:\workspace\adempiere\trunk\tools\lib\
  8. Select all the jars under the folder as shown below then click OK

Figure 6

  1. Once done, you will end up like this as shown below.  Click OK button when finished.

Figure 7

Compiling Adempiere in IntelliJ IDEA

All else successful in the above configuration, we can now compile Adempiere project.

  1. Click the Build menu
  2. Click Rebuild Project

This will show a successful compilation as shown below.  No errors would be found, only warnings.

Figure 8

If you wanted to go back to Eclipse as an IDE; it should have no problems since the classpath is already linked with both IDE’s.  In Eclipse, select all and then press F5 to refresh.  Click Clean and rebuild.  It should have nil errors.

Opensource ERP to consider worthy

Here’s the list of Java-based Opensource ERP that I would like to consider in my upcoming retail biz that uses inventory (any suggestions are welcome):

My criteria would be:

  1. Readiness to use
  2. Has a huge client base
  3. Flexibility in development if I would like to extend
  4. Architecture or design of the tool, and
  5. Scalability and adaptability as your biz grows.

fourseasons_logo

  • Adempiere – I dont know how it got me into this, but most likely this will be the one that I will use and extend if the functionality is insufficient.  For one, Adempiere is previously Compiere (the pioneer in open source ERP).  Having said that, it has all the functionality of Compiere, uses Application Dictionaries (model driven), uses business rule engine through callbacks (and one can plugin a bash code as a biz rule).  It also is UI agnostic – create additional customization and it will exist as both in Swing and DHTML (AJAX).  This model and flexibility suits me best.

Adempiere lacks a good website and organize documentation.  Its forums and source codes are quite messy and needs a divine intervention.  Resources are many and tend to spread out.  Has books develop for it.  Has a straight one month learning curve.  Posterita (POS) is integrated as much as its client POS.

ob-logo

  • Openbravo ERP – is an open source ERP solution designed specifically for the SME (small to midsize firm). Developed in a web based environment, it includes many robust functionalities which are considered part of the extended ERP: procurement and warehouse management, project and service management, production management, and financial management. Additionally, this same application seemlessly integrates the rest of the areas, starting with a management scope directly helping clients with its CRM (Customer Relationship Management) and BI (Business Intelligence).

In comparison with Adempiere, Openbravo has a very clean interface, organized workflows, and easily extensible.  But Adempiere is more complete and more business focus.  Also, although they claim that the POS is integrated in the Openbravo ERP, it relies on a third party application, and is not fully integrated.  The business intelligence and reporting tool is top of the class and exceeds any opensource ERP.  Has a huge user and client base.

logo

  • Apache OfBiz – Apache OFBiz is a foundation and starting point for reliable, secure and scalable enterprise solutions. Use it out-of-the-box (OOTB) or customize to suite even your most challenging business needs. With OFBiz in place, you can get started right away and then grow your operations as your business grows, without the huge deployment and maintenance costs of traditional enterprise automation systems.

OFBiz is more leaning towards e-commerce, has a huge client base, and designed from the ground up to be customizable (but not easily for me).  They have a good and organized documentation, no restrictions of the license, and provides a good architecture for its development; but it lacks user friendliness and readiness to use; it is very huge and requires a massive amount of hardware resources.  Bottomline – OFBiz is a good ERP oriented towards big enterprises that is willing to implement its own IT.  In my case, I am a small one. =(

Here are others that I think did not pass worth considering:

  • JFire – is an opensource (LGPL) ERP Framework, build with technologies like J2EE 1.4, JDO 2.0 and Eclipse RCP 3.2. It is designed to be highly customizable and the core framework can also be used for other purposes then ERP.  However this lacks functionality and readiness of use.
  • JAllInOne – is an open source ERP/CRM java application having a Swing front-end. It is a Rich Internet Application so the front-end can remotely comunicate with the server-side layer of JAllInOne via HTTP protocol. Main features: Sales, Purchases, Warehouse, Bill of materials and production, Accounting, Agenda, CRM, Customers and contacts hierarchies, Callouts and appoinments management, Document management, Users and roles management, database schema management, grids and forms customization, reporting solution based on Jasper Report, reports customization.
  • EBI Neutrino – is a Framework for Enterprise Resource Planing (ERP) and Customer Relation Mangement(CRM) software solution that combines power of distribution, inventory, E-Commerce, accounting and workflow.
  • Wavelet EMP – is a web-based ERP built on J2EE framework that caters for the needs of franchises and chain stores. It includes CRM, Point of Sales, Inventory Management, Warehouse Management, System Administration, Accounting, Finance, Supply Chain, Distribution & Logistic, Trading modules, etc.
  • Opentaps – a fork of Apache OfBiz.

[not completed]