To all:

This was actually quite easy to do.
 - Follow the instructions here: 
http://enroute.osgi.org/tutorial_eval/050-start.html 
<http://enroute.osgi.org/tutorial_eval/050-start.html>
 - But with one caveat… create bnd projects, *not maven projects*.  Then 
manually insert your pom.xml files into your bnd projects.

Once this is done, you get the hot-replacement provided by bnd during bundle 
development and can still use ‘mvn clean install’ to deploy to your m2 
repository.

The only caveat is you will need to synchronize dependencies in both bnd.bnd 
and pom.xml files.  But for our situation, only using maven for apache cxf 
client stubs… so pretty straightforward stuff.

We now have a number of OSGi enRoute workspaces which provide services to each 
other and Liferay portal workspaces.  Modifications to one workspace are 
immediately available in all other enRoute workspaces, and almost immediately 
within Liferay workspaces.  We only submit to continuous integration after 
changes spanning all workspaces are proven to be correct in the development 
environment.

Let me know if there is interest in how we have done this, and I can set up a 
git repository showing how this all works.

Randy

———

>> leveraged aQute.bnd.deployer.repository.LocalIndexedRepo within Liferay7 ..."
> Can you expand on what this means please? A use-case would be good.
Gradle works with several types of repositories, as listed here:
  - 
https://docs.gradle.org/current/userguide/dependency_management.html#sec:repositories
 
<https://docs.gradle.org/current/userguide/dependency_management.html#sec:repositories>
 
<https://docs.gradle.org/current/userguide/dependency_management.html#sec:repositories
 
<https://docs.gradle.org/current/userguide/dependency_management.html#sec:repositories>>

But the default repository type used by enRoute is not listed in the above 
link, and is instead defined by an enRoute/aQute plugin:
 - aQute.bnd.deployer.repository.LocalIndexedRepo


What this means:
  - Liferay does not natively support enRoute repositories unless it can be 
configured to import the aQute gradle plugin.


Ultimately, the issue is finding a repository scheme that both enRoute and 
Liferay can agree upon.  Seems there are three options:
1. Use Maven to build enRoute projects… ugh (dual build systems to synchronize, 
or lose hot-replacement offered by gradle-build approach)
2. Get Liferay to understand enRoute’s default repository type of 
LocalIndexedRepo
3. Get enRoute to generate Ivy repositories, as I believe Liferay will work 
with those just fine


Option 2 approach:
  - enRoute obtains LocalIndexedRepo support by importing aQute libraries at 
the start of the build.gradle file, and I could presumably do the same with 
Liferay projects
  - But I would still need to define the LocalIndexedRepo repositories 
somewhere, and further define dependencies via BSN notation?

Option 3 approach:
  - Modify build enRoute scripts and build.bnd files to leverage Ivy 
repositories
  - Register Ivy repositories and dependencies in Liferay’s build.gradle file


Hope I have made things more clear?  Your thoughts?

Randy

_______________________________________________
OSGi Developer Mail List
osgi-dev@mail.osgi.org
https://mail.osgi.org/mailman/listinfo/osgi-dev

Reply via email to