Note Update To 5.1

From iDempiere en
Jump to navigation Jump to search

Note about update from experiment branch

  • update jetty to latest
  • update Equinox to latest (neon 3)
  • update zk to 8.0.2.2
  • update jasper report to 6.3.1 and use osgi library
  • IDEMPIERE-3353
  • remove some warning
  • org.idempiere.customize-feature become option
  • Atmosphere

How to update launch after change plugin list IDEMPIERE-3353

Why have to change

Normal idempiere use eclipse debug configuration to manage list of active plug-ins at development phase

On debug configuration you can use features or plugin mode to define collection active plug-ins

DebugConfigurationSelectMode

Advanced of plugin mode selection is you can quick select/un-select particular plugin for test your configuration

Idempiere use server.product to manage to manage list plug-ins at product phase. it use feature mode define collection of active plugin

Feature mode help us clear group relate plugin together.

Normal we don't get any issue with this configuration.

But when you get update, special update equinox framework or jetty.

It get a set of new plugins and hard to figure out plugin to update debug configuration.

It's also hard working when you maintain a customize launching, because you have a group of customize plugin.

Eclipse maintain launching on text file and list of active plugin on a line. order of plugin is messy hard to keep track with mercurial.

Is not easy for you to sync your customize launching file with new file of idempiere

New process to update launching file

Change set of active plug-ins

1. add/remove plug-ins from it's feature

2. open server.product tab overview, click to "launch an eclipse application" or "launch an eclipse application on debug mode"

SyncLaunching

3. dialog display to you can choose a launching for sync

ChooseLaunching

4. now your launching of eclipse is synchronized with your product. if it run well mean your binary also run same.

5. from now you can run your application like before (from debug/run gear) util you change profile

LaunchFromGear.png

Change parameter

1. parameter also sync from product to debug configuration, so keep change from product and use "launch an eclipse application" to sync

SyncParameter

Note

Post materialize

Do a restart after materialize, by limit of neon, it just recognize feature after you restart.

org.idempiere.customize-feature become option

1. org.idempiere.customize-feature is empty feature, purpose to add customize plugin

so i setup it become option, and delete it from core, materialize and create product still work well.

2. Now how to add customize plugin?

you have to create org.idempiere.customize-feature by yourself when you use it. if you don't have customize plugin, just ignore it.

you can add this feature to idempiere source and make a commit, but i recommend place it separate from core.

when you separate it from core, you can let idempiere auto materialize by add entry to org.adempiere.sdk-feature/materialize.properties

example

extend.bundle.folder.1=[relative path from idempiere-experimental/org.adempiere.sdk-feature to folder contain org.idempiere.customize-feature]

3. by improve of IDEMPIERE-3353 when you add/remove plugin on org.idempiere.customize-feature (or any feature), it auto reflex after you sync launch

Found two entries for component

1. Overview Jenkin build 1st is successfully, but when build at 2nd it get error "has no action, group, or local artifact named bundle.jar"

CSpec org.apache.httpcomponents.httpclient.source:osgi.bundle$4.3.6.v201511171540 has no action, group, or local artifact named bundle.jar

org.eclipse.buckminster.core.cspec.model.MissingAttributeException: CSpec org.apache.httpcomponents.httpclient.source:osgi.bundle$4.3.6.v201511171540 has no action, group, or local artifact named bundle.jar at org.eclipse.buckminster.core.cspec.model.CSpec.getRequiredAttribute(CSpec.java:653) at org.eclipse.buckminster.core.cspec.model.CSpec.getReferencedAttribute(CSpec.java:624) at org.eclipse.buckminster.core.cspec.model.Prerequisite.getReferencedAttribute(Prerequisite.java:146) at org.eclipse.buckminster.core.internal.actor.PerformManager.addAttributeChildren(PerformManager.java:327) at org.eclipse.buckminster.core.internal.actor.PerformManager.addAttributeChildren(PerformManager.java:329) at org.eclipse.buckminster.core.internal.actor.PerformManager.addAttributeChildren(PerformManager.java:329) at org.eclipse.buckminster.core.internal.actor.PerformManager.addAttributeChildren(PerformManager.java:329) at org.eclipse.buckminster.core.internal.actor.PerformManager.addAttributeChildren(PerformManager.java:329) at org.eclipse.buckminster.core.internal.actor.PerformManager.addAttributeChildren(PerformManager.java:329) at org.eclipse.buckminster.core.internal.actor.PerformManager.addAttributeChildren(PerformManager.java:329) at org.eclipse.buckminster.core.internal.actor.PerformManager.addAttributeChildren(PerformManager.java:329) at org.eclipse.buckminster.core.internal.actor.PerformManager.addAttributeChildren(PerformManager.java:329) at org.eclipse.buckminster.core.internal.actor.PerformManager.addAttributeChildren(PerformManager.java:329) at org.eclipse.buckminster.core.internal.actor.PerformManager.addAttributeChildren(PerformManager.java:329) at org.eclipse.buckminster.core.internal.actor.PerformManager.getOrderedActionList(PerformManager.java:414) at org.eclipse.buckminster.core.internal.actor.PerformManager.internalPerform(PerformManager.java:435) at org.eclipse.buckminster.core.internal.actor.PerformManager.perform(PerformManager.java:293) at org.eclipse.buckminster.core.internal.actor.PerformManager.perform(PerformManager.java:305) at org.eclipse.buckminster.core.commands.Perform.internalRun(Perform.java:108) at org.eclipse.buckminster.core.commands.WorkspaceCommand.run(WorkspaceCommand.java:86) at org.eclipse.buckminster.cmdline.AbstractCommand.basicRun(AbstractCommand.java:200) at org.eclipse.buckminster.cmdline.Headless.run(Headless.java:343) at org.eclipse.buckminster.cmdline.Headless.run(Headless.java:284) at org.eclipse.buckminster.cmdline.Headless.start(Headless.java:358) at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:134) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:382) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:236) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:648) at org.eclipse.equinox.launcher.Main.basicRun(Main.java:603) at org.eclipse.equinox.launcher.Main.run(Main.java:1465) at org.eclipse.equinox.launcher.Main.main(Main.java:1438) CSpec org.apache.httpcomponents.httpclient.source:osgi.bundle$4.3.6.v201511171540 has no action, group, or local artifact named bundle.jar

2. Reason (Just guess) orbit repository have 2 version of org.apache.httpcomponents.httpclient

1st do materialize, buckminster get correct verison org.apache.httpcomponents.httpclient and org.apache.httpcomponents.httpclient.source at version 4.3.6

2nd do materialize at without clear old one (like on jenkin) it will get new one version of source at 4.5.2

i guest issue by wrong process resolve dependency on org.idempiere.eclipse.platform-feature after 1st materialize, cspec of org.idempiere.eclipse.platform-feature have dependency to org.apache.httpcomponents.httpclient.source and it will get newest version.

  • don't know why it don't happen to org.apache.httpcomponents.httpclient bundle just happen source bundle
  • org.apache.commons.codec.source have same condition, it get two source version, but don't effect to create product process.

I guest reason because org.idempiere.eclipse.platform-feature have customize step on org.adempiere.server-feature/buckminster.cspex

customize step on org.adempiere.server-feature/buckminster.cspex
      <alterGroups>

<public name="bundle.jars"> <attribute name="bundle.jars" component="org.idempiere.eclipse.platform"/> <attribute name="bundle.jars" component="org.idempiere.fitnesse.fixture"/> <attribute name="bundle.jars" component="org.idempiere.fitnesse.server"/> <attribute name="bundle.jars" component="org.idempiere.fitnesse"/> <attribute name="bundle.jars" component="org.idempiere.fitrecorder"/> <attribute name="bundle.jars" component="org.idempiere.ui.zk.selenium"/> </public> <public name="feature.references"> <attribute name="feature.jars" component="org.idempiere.eclipse.platform"/> <attribute name="feature.jars" component="org.idempiere.fitnesse"/>

               </public>
      </alterGroups>

Break materialize process by repository host at sourceforge

I get success at local but try fail after a lot of try with Jenkin (i guess it host at Germany)

I guest when i upload repository to sourceforge, it will upload to Asian server, and replicate to other zone.

When i run jenkin, it isn't finish at to replicate to Euro zone, so Jenkin get fail

When i change url to http://jaist.dl.sourceforge.net/project/idempiere/binary.file it always get success.

So in case you can't materialize with error relate sourceforge get a try by do bellow step

   [idempiere]/org.adempiere.sdk-feature/materialize.properties
   change local.repository.root=http://downloads.sourceforge.net/project/idempiere/binary.file
   to local.repository.root=http://jaist.dl.sourceforge.net/project/idempiere/binary.file

You also can offline sourceforge by below command =

  1. offline file from sourceforge

rsync -avrPq hiepgau,idempiere@frs.sourceforge.net:/home/frs/project/idempiere/binary.file /path/to/offline/folder

  1. open file

[idempiere-root]/org.adempiere.sdk-feature/materialize.properties

  1. modify

local.repository.root=http://downloads.sourceforge.net/project/idempiere/binary.file by local.repository.root=file:///path/to/offline/folder

(*) change hiepgau by your account

offline all document here: http://wiki.idempiere.org/en/Offline_all_material_of_idempiere

Atmosphere -jetty

atmosphere websocket jetty conflict

Separate zk configuration of development and runtime

https://bitbucket.org/idempiere/idempiere/commits/bdfb673f22d3c580e8ac8c5bb4837eefc8de3c5f

Update environment development

when you update to 5.1 (or any release) you have to do the following 4 steps:

  1. delete folders ".metadata, targetPlatform, RemoteSystemsTempFiles, jettyhome"
  2. delete all jar file on [idempiere-home] and sub folder
  3. open eclipse and run materialize again
  4. run script update your db http://wiki.idempiere.org/en/Importing_DB_Seed_Manually#Applying_additional_migration_scripts

if i correct some jar file still on bitbucket, not yet take out. please check by hg.

if you see hg show any jar file is remove, just revert for that files

for 5.1 make sure you use eclipse oxygen