Installation der Entwicklungsumgebung

Aus iDempiere de
Wechseln zu: Navigation, Suche

Diese Seite ist noch nicht mit vollständigem deutschem Inhalt gefüllt. Das kann bitte jemand nachholen, der das nächste Mal ein Eclipse neu aufsetzt.

Ich selber bin bisher nach der ausgezeichneten Anleitung von User:CarlosRuiz vorgegangen: Install Development Prerequisites. Carlos hat seine Entwicklungsumbebung unter Ubuntu-linux eingerichtet. Es gibt kleine Unterschiede zu anderen Systemen.

Als nächsten Schritt benötigt man eine passende Datenbank. Einerseits kann man selbstverständlich grundsätzlich eine Datenbank benutzen, die man vorher mit einer normalen iDempiere-Installation erzeugt hat. Auf der anderen Seite installiert man ja Eclipse höchstwahrscheinlich, um an der laufenden Entwicklung teilzuhaben und hat dazu in Eclipse den Quellcode der aktuellsten Entwicklerversion installiert und vielleicht nicht der stabilen Version, deren Installationpaket man vorher laufen hatte. Da mit sehr vielen Änderungen im Programm auch Änderungen in der Datenbank-Seed (also der Grundinstallation der Datenbank) verbunden sind, solte man als nächstes Datenbankeinrichtung für Entwickler lesen.

-- User:TBayen

Mein Vorschlag zum Befüllen des Themas. Mindestens drei Kapitel je nach Entwicklungsplatform und IDE-Version, da es doch auf die kleinen Unterschiede ankommt:

  • linux
  • windows
  • mac

Nach meiner Lesart decken die zwei guten (engl.) Anleitungen von Carlos und Dominik linux und mac ab. Ich habe sie an der geeingneten Stelle verlinkt. Und selber füge ich einen Beitrag zu windows 7 bei. Falls die Seite zu groß werden sollte, kann sie nach Platform oder IDE-Version gesplittet werden.

-- User:Eugenh

Linux(ubuntu)

Dort finden sich auch Informationen über die für die Entwicklung ab 3.x benötigten Versionen.

Windows + Eclipse Indigo (3.7.2)

Ich benutze nicht das aktuellste eclipse unter Windows 7. Mit dieser 64-bit-IDE habe ich bereits Adempiere eingerichtet. Da ich gerade iDempiere neu aufsetze, kann ich meine Erfahrungen hier niederschreiben. Vorab: man sollte nicht erwarten, dass die Installation und das Build reibungslos funktioniert. Das Projekt lebt und ändert sich ständig. Das gilt aich für die IDE und die Subkomponenten.

In meiner eclipse-IDE haben sich inzwischen viele plugins angesammelt. Welche sind für iDempiere unbedingt notwendig?

Da iDempiere aus vielen grossen und kleineren OSGI-Komponenten (bundle, plugin, feature) besteht, sollte man einen eigenen Workspace für die iDempiere-IDE spendieren. Pro Komponente wird mindestens ein Projekt grmäß der eclipse Terminologie benötigt. iDempiere besteht derzeit aus ca 70 eclipse-Projekten.

Da das Mercurial Eclipse-Plugin ein installiertes Mercurial benötigt, muß noch Mercurial installiert werden, falls nicht ohnehin vorhanden. https://mercurial.selenic.com/downloads Außerdem muß der Pfad zu hg.exe im Path enthalten sein.

Wie kommt man zu den Sourcen?

1. clone iDempiere Repository
  1. klonen direkt in eclipse-Workspace. Das ist die naheliegenste Strategie. Dazu wird das Mercurial Hg plugin benötigt. Dieses Vorgehen kann aber recht frustrierend sein, denn bei der Übertragung der Daten und Aufbau des Repositories darf es zu keinerlei Störung (timeout, ...) kommen.
    File > New > Other > Mercurial>Clone...Repository (siehe. Minibild)
  2. klonen außerhalb eclipse und Import in den Workspace

Klonen des Repositories

Ich habe mich für die zweite Strategie entschieden, nicht zuletzt wg [2] und [3]. Es macht Sinn, den Pfad zum Workspace kurz zu wählen C:\proj\hg.

Klonen außerhalb eclipse

In Hg-Workbench oder per Hg-Konsole kann man in kleineren wiederholbaren Portionen klonen.

Zurück in eclipse:
File > Import > Mercurial>Projecs from Local... > select hg-dir

Indigo-ImportHGProject.PNG

Fehler nach Import

Es ist nicht ausgeschlossen, dass nach dem Import eclipse diverse Fehler meldet.

Das liegt daran, dass defaultmäßig ein automatisches Compile eingestellt ist und die Pfade der einzelnen Komponenten noch nicht korrekt eingestellt sind.

Nach dem Buckminster materialize sollten die Fehler nicht mehr auftreten.

Definition targetPlatform

siehe http://www.banym.de/eclipse/build-the-idempiere-project-using-eclipse-with-buckminster von Dominik Zajac

Window > Preferences > Plug-in Development>Target Platform > Add > Add Directory

einen absoluten oder relativen Pfad für die Zielumgebung wählen (ich definiere es absolut mit C:\proj\iDempiereTarget). Im nachhinein erweist sich die Wahl als ungünstig, den der #Buckminster-Import verwendet $(workspace.root)\targetPlatform) und erstelt das Verzeichnis auch:

Target platform directory 'C:/proj/hg/targetPlatform/' does not exist and will be created

In diesem Verzeichnis wird anschliessend per #Buckminster-Import die Zielumgebung eingestellt.

Indigo-iDempiereTarget.PNG

Buckminster-Import

unresolved Component Query

File > Import > Buckminster>Materialize from Buckminster CQUERY > Component Query

Die Component Query ist in /org.adempiere.sdk-feature/adempiere.cquery.

In meiner Umgebung liefert es mit einen Fehler:

ERROR   [0010] : No suitable provider for component javax.servlet.source:osgi.bundle/[3.0.0.v201103241009,3.0.0.v201103241009] 
                 was found in resourceMap file:/C:/proj/hg/org.adempiere.sdk-feature/adempiere.rmap
  ERROR   [0010] : No suitable provider for component javax.servlet.source:osgi.bundle/[3.0.0.v201103241009,3.0.0.v201103241009] 
                   was found in searchPath workspace.bundle.jar
    ERROR   [0010] : Rejecting provider p2(file:///{0}/lib[file:///C:/proj/hg/lib]): No component match was found
...

Was habe ich falsch gemacht?

Uups! Ich habe vergessen die Target Platform zu aktivieren. So soll es aussehen:

Indigo-activeTargetPlatform.PNG

Das Materialisieren (Befüllen der Verzeichnisses TargetPlatform mit feature- und plugin-Artefakten) dauert ein wenig. Zuvor bekommt man eine Auflistung der Artefakte:

Buckminster-CQuery.PNG

Dann geht es los:

Buckminster-materlize.PNG

Nach dem Materialisieren sollte es keine Compilefehler mehr geben. Zumindest keine, die auf fehlende jars im build-Pfad hindeuten. Ist das nicht der Fall, so muss manuell nachgearbeitet werden.

Target Platform: manuelle Korrektur

Folgende jars mußte ich in das plugin-Verzeichnis der Zielumgebung C:\proj\iDempiereTarget\plugins kopieren:

org.eclipse.core.runtime_3.7.0.v20110110.jar
org.eclipse.equinox.app_1.3.100.v20110321.jar
org.eclipse.equinox.common_3.6.0.v20110523.jar
org.eclipse.osgi.services_3.3.0.v20110513.jar
org.eclipse.equinox.p2.jarprocessor_1.0.200.v20110815-1438.jar
org.eclipse.equinox.p2.metadata.repository_1.2.0.v20110815-1419.jar
org.eclipse.equinox.p2.director.app_1.0.300.v20111126-0153.jar
org.restlet_2.1.1.v20130116-1036.jar
org.restlet.ext.net_2.1.1.v20130116-1036.jar
org.restlet.ext.ssl_2.1.1.v20130116-1036.jar
org.restlet.ext.servlet_2.1.1.v20130116-1036.jar

Und das DIR org.junit_4.8.2.v4_8_2_v20110321-1705 mit Inhalt. Die plugin-jars findet man im eclipse-Programmverzeichnis.

Ich habe die modifizierte Target Platform nochmals aktiviert und eclipse neu gestartet. Das Restart ist wichtig.

Jetzt bleiben nur noch ein paar Fehler, die durch Korrekturen im build-Pfad behoben werden können:

Indigo-afterImport.PNG

Das jar super-csv-2.0.0-beta-1.jar ist im Verzeichnis /org.adempiere.base aber nicht im build-Pfad.

Buckminster create swing-Client

Jetzt kann man den iDempiere swing-Client erstellen.

> Projekt /org.adempiere.ui.swing-feature > Buckminster > Invoke Action... > create.produkt

und property-file C:\proj\hg\org.adempiere.ui.swing-feature\buckminster_win32_x86.properties angeben, nicht buckminster.properties !.

Buckminster-CreateProduct.PNG


Buckminster ActionError

Falls noch plug-in jars nachzuinstallieren sind meldet sich Buckminster mit einem ActionError oder auf der Konsole:

No component named org.eclipse.equinox.event:osgi.bundle is known to Buckminster


Schließlich sind die Lücken in der Zielumgebung gefüllt und die Buckminster-action create.product startet:

Buckminster-CreateProduct-Run.PNG

In den buckminster.properties ist festgelegt, dass der output im C:\Users\ich\buckminster.output landet:

buckminster.output.root=${user.home}/buckminster.output

Buckminster Probleme lösen

[ant] Using equinox launcher jar: C:\Program Files\eclipse3.7\plugins\org.eclipse.equinox.launcher_1.2.0.v20110502.jar
org.eclipse.core.runtime.CoreException: C:\proj\hg\org.adempiere.ui.swing-feature\product.ant:36: 
Directory C:\Users\eugen\buckminster.output\org.adempiere.ui.swing_1.0.0-eclipse.feature\idempiere.*.*.* creation was not successful for an unknown reason

Bei Problemen kann man mit

> Window > Preferences > Buckminster

den Log Level höher setzen und den Grund herauslesen.

Dieses habe ich tatsächlich benötigt, um einen Spezifikationsfehler in buckminster.properties zu finden, Dort sind Variablen mit '*' definiert aus denen filenamen gebildet werden. Bekanntermaßen sind '*' für filenamen nicht zulässig.

Korrektur:

ich muss /org.adempiere.server-feature/buckminster_win32_x86.properties verwenden. Dort stehen die korrekten Parameter:

target.os=win32
target.ws=win32
target.arch=x86

Den fertigen iDempiere-client finde ich unter C:\Users\ich\buckminster.output\org.adempiere.ui.swing_1.0.0-eclipse.feature\idempiere.win32.win32.x86

Beim Start des iDempiere-clients stelle ich fest, dass meine Datenbank nicht zur der gerade erstellten Software paßt.

DB Migration

  • Der Stand meiner postgres-DB: "201211070846_IDEMPIERE-422.sql" // steht in Tabelle ad_migrationscript
  • Das neueste (aktuelle) Migration script: /migration/i1.0a-release/postgresql/201301181138_IDEMPIERE-567.sql

Ergo muss ich ca 50 sql-scripte ausführen, um Datenbank und Software zu synchronisieren. Den Migration direkt aus Eclipse beschreibe ich uter Upgrade aus der IDE.

Buckminster create server

Auf symetrische Weise zu #Buckminster_create_swing-Client kann man den iDempiere server mit zk-UI erstellen.

> Projekt /org.adempiere.server-feature > Buckminster > Invoke Action... > create.produkt

und property-file C:\proj\hg\org.adempiere.server-feature\buckminster_win32_x86.properties angeben.

Serverstart mit EquinoxLauncher

Serverstart in Eclipse

Der Bergriff Launcher ist in Eclipsekontext mehrdeutig, denn einerseits steht er für die Starten von eclipse selbst, und andererseits für das Konfigurieren (#Run_Configuration) und Ausführen von Komponenten, die mit dem Launch-Framework konfigurierbar sind. OSGI-Bundels werden mit <launchConfiguration type="org.eclipse.pde.ui.EquinoxLauncher"> gestartet.

Run Configuration

Eine Ausführungskonfiguration wird im XML-Format mit der Erweiterung .launch in ${workspace_loc}\.metadata\.plugins\org.eclipse.debug.core\.launches. gespeichert (Local file). Sie kann auch an einem anderen Speicherort im Projektverzeichnis abgelegt werden (Shared file), siehe server.product.launch. Die Konfiguration ist fälschlicherweise auf org.eclipse.pde.ui.RuntimeWorkbench eingestellt. Nach der Korrektur läßt sich der Server aus der IDE starten.

Mac + Eclipse Helios (3.6.2.x)