I managed to strip the Eclipse installation down to run the antRunner application without dependency errors. However, this resulted in another error:
org.eclipse.equinox.internal.provisional.p2.core.ProvisionException: No repository found at http://download.eclipse.org/eclipse/updates/3.6-N-builds.
This is strange, because the repository is found with the full installation of Eclipse.
I posted a new message on the mailinglist:
Hello all,
I succesfully used the p2.mirror ant task from console with the following command:
$ java -jar org.eclipse.equinox.launcher.jar -console -consoleLog -application org.eclipse.ant.core.antRunner -buildfile build.xml get-equinox
Since I want to execute this task from another ant task running on our build-server I have to embed Eclipse in my project. I figured I should be able to strip it down so it won't has more jars than absolutely necessary to run antRunner. The normal Eclipse installation is around 100mb-200mb and to large to put in my project trunk.
With some digging through the manifest files of the jars in the plugin/ dir I successfully came down with the following list of osgi bundles to run inside Equinox.
org.eclipse.equinox.common.jar
org.eclipse.core.jobs.jar
org.eclipse.equinox.registry.jar
org.eclipse.equinox.preferences.jar
org.eclipse.core.contenttype.jar
org.eclipse.equinox.app.jar
org.eclipse.core.runtime.jar
org.eclipse.core.variables.jar
org.eclipse.osgi.services.jar
org.eclipse.ecf.identity.jar
org.eclipse.ecf.jar
org.eclipse.ecf.filetransfer.jar
org.eclipse.equinox.p2.core.jar
org.eclipse.equinox.p2.jarprocessor.jar
org.eclipse.equinox.p2.metadata.jar
org.eclipse.equinox.security.jar
org.eclipse.equinox.p2.repository.jar
org.eclipse.equinox.p2.artifact.repository.jar
org.sat4j.core.jar
org.sat4j.pb.jar
org.eclipse.equinox.simpleconfigurator.jar
org.eclipse.equinox.p2.metadata.repository.jar
org.eclipse.equinox.p2.engine.jar
org.eclipse.equinox.p2.director.jar
org.eclipse.equinox.p2.garbagecollector.jar
org.eclipse.equinox.p2.exemplarysetup.jar
org.eclipse.equinox.p2.repository.tools.jar
org.apache.ant.jar
org.eclipse.ant.core.jar
With these bundles I was able to run the antRunner task from the commandline, but I retrieved the the error:
org.eclipse.equinox.internal.provisional.p2.core.ProvisionException: No repository found at http://download.eclipse.org/eclipse/updates/3.6-N-builds.
I guess it has something to do with a wrong/missing OSGi service, because accessing this repository worked with the full Eclipse installation and with the stripped setup all the bundles are successfully resolved according to Equinox.
Does anyone know what the specific dependencies are to run a standalone antRunner without a full Eclipse installation?
I used the following configration to launch equinox:
--------------------------------------------------------------------------------------------------------------------------------------
osgi.framework=file\:org.eclipse.osgi.jar
osgi.bundles=reference\:file\:org.eclipse.equinox.common.jar@4,reference\:file\:org.eclipse.core.jobs.jar@4,reference\:file\:org.eclipse.equinox.registry.jar@4,reference\:file\:org.eclipse.equinox.preferences.jar@4,reference\:file\:org.eclipse.core.contenttype.jar@4,reference\:file\:org.eclipse.equinox.app.jar@4,reference\:file\:org.eclipse.core.runtime.jar@4\:start,reference\:file\:org.eclipse.core.variables.jar@4,reference\:file\:org.eclipse.osgi.services.jar@4,reference\:file\:org.eclipse.ecf.identity.jar@4,reference\:file\:org.eclipse.ecf.jar@4,reference\:file\:org.eclipse.ecf.filetransfer.jar@4,reference\:file\:org.eclipse.equinox.p2.core.jar@4,reference\:file\:org.eclipse.equinox.p2.jarprocessor.jar@4,reference\:file\:org.eclipse.equinox.p2.metadata.jar@4,reference\:file\:org.eclipse.equinox.security.jar@4,reference\:file\:org.eclipse.equinox.p2.repository.jar@4,reference\:file\:org.eclipse.equinox.p2.artifact.repository.jar@4,reference\:file\:org.sat4j.core.jar@4,reference\:file\:org.sat4j.pb.jar@4,reference\:file\:org.eclipse.equinox.simpleconfigurator.jar@4,reference\:file\:org.eclipse.equinox.p2.metadata.repository.jar@4,reference\:file\:org.eclipse.equinox.p2.engine.jar@4,reference\:file\:org.eclipse.equinox.p2.director.jar@4,reference\:file\:org.eclipse.equinox.p2.garbagecollector.jar@4,reference\:file\:org.eclipse.equinox.p2.exemplarysetup.jar@4,reference\:file\:org.eclipse.equinox.p2.repository.tools.jar,reference\:file\:org.apache.ant.jar@4,reference\:file\:org.eclipse.ant.core.jar@4
osgi.bundles.defaultStartLevel=4
osgi.noShutdown=true
eclipse.buildId=M20090917-0800
eclipse.p2.data.area=@config.dir/../p2/
eclipse.p2.profile=epp.package.java
--------------------------------------------------------------------------------------------------------------------------------------
The complete stacktrace of the ProvisionException is:
--------------------------------------------------------------------------------------------------------------------------------------
BUILD FAILED
org.eclipse.equinox.internal.provisional.p2.core.ProvisionException: No repository found at http://download.eclipse.org/eclipse/updates/3.6-N-builds.
at org.eclipse.equinox.internal.p2.repository.helpers.AbstractRepositoryManager.fail(AbstractRepositoryManager.java:380)
at org.eclipse.equinox.internal.p2.repository.helpers.AbstractRepositoryManager.loadRepository(AbstractRepositoryManager.java:641)
at org.eclipse.equinox.internal.p2.artifact.repository.ArtifactRepositoryManager.loadRepository(ArtifactRepositoryManager.java:93)
at org.eclipse.equinox.p2.internal.repository.tools.AbstractApplication.addRepository(AbstractApplication.java:96)
at org.eclipse.equinox.p2.internal.repository.tools.AbstractApplication.initializeRepos(AbstractApplication.java:67)
at org.eclipse.equinox.p2.internal.repository.tools.tasks.MirrorTask.execute(MirrorTask.java:53)
at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:288)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
at org.apache.tools.ant.Task.perform(Task.java:348)
at org.apache.tools.ant.Target.execute(Target.java:357)
at org.apache.tools.ant.Target.performTasks(Target.java:385)
at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1337)
at org.apache.tools.ant.Project.executeTarget(Project.java:1306)
at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
at org.eclipse.ant.internal.core.ant.EclipseDefaultExecutor.executeTargets(EclipseDefaultExecutor.java:32)
at org.apache.tools.ant.Project.executeTargets(Project.java:1189)
at org.eclipse.ant.internal.core.ant.InternalAntRunner.run(InternalAntRunner.java:622)
at org.eclipse.ant.internal.core.ant.InternalAntRunner.run(InternalAntRunner.java:494)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.eclipse.ant.core.AntRunner.run(AntRunner.java:513)
at org.eclipse.ant.core.AntRunner.start(AntRunner.java:600)
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:194)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:368)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:559)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:514)
at org.eclipse.equinox.launcher.Main.run(Main.java:1311)
at org.eclipse.equinox.launcher.Main.main(Main.java:1287)
--------------------------------------------------------------------------------------------------------------------------------------
Moved to sprint #6