Free Maven Repository with p2 support for Eclipse Tycho - eclipse

I'm trying to find a free-to-use app that can serve as a maven repository with support for eclipse p2 that will allow me to deploy target platforms from a eclipse tycho maven build and I'm conflicted on Sonatype Repository Manager because it seems that p2 support was free in 2x with additional plugins but in 3x it is a pro only feature with a 10 user minimum license. Does anyone know of any other projects that can give me a truly free maven repository with p2 out of the box? - Thanks in advance.

Related

How to use maven repositories instead of p2 update sites to provision plugins in Eclipse IDE?

In my region it will be much faster using a maven repository instead of a p2 update site to provision plugins in Eclipse IDE and I'm craving for a solution. Has there been solutions already or can somebody drop some hints for me to modify the source code of the update mechanism so that a maven repository can fit in? I see that the DBeaver Universal Database Tool, which is an Eclipse RCP application, uses maven repositories to deliver database connection drivers. How can I achieve the same in provisioning of Eclipse plugins?

maven plugin repository for eclipse equinox KeplerSR1

Currently I'm trying to build my maven project which requires plugins from latest equinox KeplerSR1 release. So I'm looking for pluginRepository for eclipse-kepler SR1 release but could not find it.
I found this mirror url [1] but did't know how to use it to build my maven module.
Appreciate if someone can provide this.
[1] http://mirrors.ibiblio.org/eclipse/equinox/drops/R-KeplerSR1-201309111000/
Equinox does not maintain maven plugin repository for vendors. I had to manually deploy the plugins to a maven repository which I'm using on my organization.

Generating a p2 repository from a local folder, so that it can be used in a target platform

I want to build an RCP application with Maven and Tycho. For this I need to change my target platform which is only a folder in the file-system to a p2 repository.
To generate the p2 repository I created a new workspace, set the target platform and followed this tutorial.
Eclipse generates a p2 repository for me and all seems fine, but when I want to set this generated p2 repository as target platform in Eclipse it fails. Eclipse says that org.eclipse.swtbot.eclipse.finder requires the package javax.swing.text.
I searched a bit and found out that javax.swing.text is a part from the JDK, and some people somehow managed to get the JDK into the p2 repository.
How can I to satisfy this dependency and make the target resolution pass?
This is an effect of the JDK itself not being an OSGi bundle.
The eclipse release train repositories have a fake "a.jre.javase" installable unit which provide all the packages in the JDK to work around this problem.
Try adding http://download.eclipse.org/releases/indigo to the p2 repositories of your build.
Also se related bug https://bugs.eclipse.org/bugs/show_bug.cgi?id=364095
Threre's a "special" IU that represents the packages provided by the
JDK. There's whole discussion about generating a.jre.javase IU at Eclipse Community Forums: [p2] how to generate "a.jre.javase" IU?. Here's p2 metadata publisher creating JRE IU based on Phil Denis sample. Alternatively, IU can be created by this p2 advice file (p2.inf).

(Maven+Eclipse)How each developer handle the jars locally?

I'm kinda newbie to Maven and Continuous Integration, so excuse my trivial questions below
In our project we intend to introduce the Continuous Integration through performing automated daily builds on our development integration server using Maven and hudson
on our projects we used to check-in the all the jars (internal, commercial & 3rd party) to SCM under one separate project and force the web project to depend on that project so that the project can compile in eclipse then exporting an EAR
my question is, how will each developer locally on his machine compile the project now ?, should we remove the jars project at all from scm ?
If yes : does this mean that each developer must refer to the enterprise's maven repository from within eclipse so that the project can compile ? and in that case there will be extreme NW overhead ??
If No : there might be a conflict between jars on scm and those in maven repository
another question that is related to the above one, will each developer have his own maven local repository on his machine ?
final question, shall each developer compile the code using maven (through M2Eclipse) or using eclipse compiler as normal ?
thanks :)
The way we do, and I believe is quite common, is
We have our own installation of a repository manager, for example Nexus, installed at some machine in the intranet, available for all developers to use
Jars would not be in the SCM, but stored in the Nexus or equivalent. Common arrangement is to have there one repo for external dependencies, one for internal snapshot builds and one for internal release builds (per project). We have defined maven central repository as well as the internal repositories in Maven configuration, storing the artifacts in the relevant internal repositories (external, internal-release or internal-snapshot) and picking them up from there, but having central repo as a backup for standard plugins.
Repository references (definitions, urls) are either in Maven settings file or then in the pom.xml. Individual developer should not need to do anything, he/she just uses these files. pom.xml would be in the SCM, settings file could be there or not.
Maven uses also local cache when it downloads the files, so they are downloaded only once per version/machine, which should keep the NW overhead tolerable. Intranet repo is there also partly to reduce external network overhead.
Maven release plugin is often used to handle internal-snapshot and internal-release repository updates
Each developer has a local repository cache in his machine. This is a standard Maven feature. Eclipse can refer to these same files.
Code can be compiled with the help of eclipse-maven plugin (of which M2E is the most common), using Maven on the command line or then using Maven to generate regular Eclipse project files and then normally with Eclipse. We use command line and M2E+Eclipse both for this.
SCM would be for source code, repositories for binaries (including .jars)
You configure all dependencies in the pom.xml for each project. Maven then downloads all needed jars from your enterprise repository. You don't need your SCM project any more and i would remove it.
I don't think there is much network overhead, because Maven only downloads the jars the first time they are needed. After that, they are in the local repository (which every developer has on his machine), and only updates will be downloaded after the first time.
If you use M2Eclipse, then the standard Eclipse compiler will be extended with Maven builders, so you can use all Eclipse compile features.

Is there a way to develop OSGi bundles without opening or importing the dependent bundles in Eclipse?

When you develop OSGi bundles using eclipse, there are many denpendent bundles to be imported and opened. When there're many bundles, setting up projects is time-comsuming and difficult, especially to newbies .
I've tried the Tycho plugin and m2e; it seems that they are not for this goal.
You can use Eclipse Target Platform concept.
Moreover, with some luck and persistence, you can use remote P2 site as a Target Platform definition in Eclipse. Since you can export Target Platform definition as a file, that means the whole setup for developers will be importing project with that file and selecting this target platform in Eclipse preferences. The Eclipse will download the whole bunch of dependencies itself. For more details see the blog post here.
Also, since you can use that P2 site as a repository for Tycho builds, that allows you to make Tycho use the same set of dependencies as you use in Eclipse making the build more stable. You can host P2 site as a static web content or use repository, like Nexus (however, only commercial version supports P2 repositories, so I have not tried that myself).