Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [aether-users] Versioning fun with Aether milestones

Hi again.

I wrote:
> But even that doesn't prevent the dreaded uses conflict from rearing its
> ugly head:
> 
>> org.eclipse.recommenders.models [331]
>>   Unresolved requirement: Require-Bundle: org.eclipse.recommenders.utils; bundle-version="2.0.0"
>>     -> Bundle-SymbolicName: org.eclipse.recommenders.utils; bundle-version="2.1.0.v20140320-1514"
>>        org.eclipse.recommenders.utils [333]
>>          Bundle was not resolved because of a uses contraint violation.
>>   org.osgi.service.resolver.ResolutionException: Uses constraint violation. Unable to resolve resource org.eclipse.recommenders.utils [osgi.identity; osgi.identity="org.eclipse.recommenders.utils"; type="osgi.bundle"; version:Version="2.1.0.v20140320-1514"] because it is exposed to package 'org.eclipse.aether.artifact' from resources org.eclipse.aether.api [osgi.identity; osgi.identity="org.eclipse.aether.api"; type="osgi.bundle"; version:Version="0.9.0.v20140226"] and org.eclipse.m2e.maven.runtime [osgi.identity; osgi.identity="org.eclipse.m2e.maven.runtime"; type="osgi.bundle"; version:Version="1.5.0.20140319-1741"; singleton:="false"] via two dependency chains.
>>
>> Chain 1:
>>   org.eclipse.recommenders.utils [osgi.identity; osgi.identity="org.eclipse.recommenders.utils"; type="osgi.bundle"; version:Version="2.1.0.v20140320-1514"]
>>     import: (&(osgi.wiring.package=org.eclipse.aether.artifact)(&(version>=0.9.0.v20140226)(!(version>=1.0.0))))
>>      |
>>     export: osgi.wiring.package: org.eclipse.aether.artifact
>>   org.eclipse.aether.api [osgi.identity; osgi.identity="org.eclipse.aether.api"; type="osgi.bundle"; version:Version="0.9.0.v20140226"]
>>
>> Chain 2:
>>   org.eclipse.recommenders.utils [osgi.identity; osgi.identity="org.eclipse.recommenders.utils"; type="osgi.bundle"; version:Version="2.1.0.v20140320-1514"]
>>     import: (&(osgi.wiring.package=org.eclipse.aether.util.artifact)(&(version>=0.9.0.v20140226)(!(version>=1.0.0))))
>>      |
>>     export: osgi.wiring.package=org.eclipse.aether.util.artifact; uses:=org.eclipse.aether.artifact
>>   org.eclipse.aether.util [osgi.identity; osgi.identity="org.eclipse.aether.util"; type="osgi.bundle"; version:Version="0.9.0.v20140226"]
>>     import: (&(osgi.wiring.package=org.eclipse.aether.artifact)(&(version>=0.9.0)(!(version>=1.0.0))))
>>      |
>>     export: osgi.wiring.package: org.eclipse.aether.artifact
>>   org.eclipse.m2e.maven.runtime [osgi.identity; osgi.identity="org.eclipse.m2e.maven.runtime"; type="osgi.bundle"; version:Version="1.5.0.20140319-1741"; singleton:="false"]  Bundle was not resolved because of a uses contraint violation.
>>   org.osgi.service.resolver.ResolutionException: Uses constraint violation. Unable to resolve resource org.eclipse.recommenders.models [osgi.identity; osgi.identity="org.eclipse.recommenders.models"; type="osgi.bundle"; version:Version="2.1.0.v20140320-1514"; singleton:="true"] because it is exposed to package 'org.eclipse.aether.impl' from resources org.eclipse.aether.impl [osgi.identity; osgi.identity="org.eclipse.aether.impl"; type="osgi.bundle"; version:Version="0.9.0.v20140226"] and org.eclipse.m2e.maven.runtime [osgi.identity; osgi.identity="org.eclipse.m2e.maven.runtime"; type="osgi.bundle"; version:Version="1.5.0.20140319-1741"; singleton:="false"] via two dependency chains.

*sigh*

Just realized that org.eclipse.aether.impl and org.eclipse.aether.util
import com.google.inject 1.4, which is, at the moment, only exported by
org.eclipse.m2e.maven.runtime (the latest Guice in Orbit is 3.0.0, which
exports com.google.inject 1.3). Hence OSGi's wiring decision.

As far as I understand the build, this Import-Package of
com.google.inject 1.4 comes from the sisu-guice dependency in the POM
[1]. But is this rather high number even needed? AFAIK, the 1.4 was
introduced by Guice 4.0 which is currently only at Beta [2].

So, is there a technical reason for requiring version 1.4 of
com.google.inject and thus beta software? If not, would it be possible
to re-release org.eclipse.aether.maven with a broader version range
(that imports only things in, say, Orbit).

> osgi> b org.eclipse.aether.maven
> org.eclipse.aether.maven_3.1.0.v20130803-2031 [267]
>   Id=267, Status=RESOLVED    Data Root=/Volumes/ramdisk/eclipse/configuration/org.eclipse.osgi/267/data
>   "No registered services."
>   No services in use.
>   Exported packages
>     org.apache.maven.repository.internal; version="3.1.0.v20130803-2031"[exported]
>     META-INF.plexus; version="3.1.0.v20130803-2031"[exported]
>   Imported packages
>     com.google.inject; version="1.4.0" <org.eclipse.m2e.maven.runtime_1.5.0.20140319-1741 [306]>
>     com.google.inject.binder; version="1.4.0" <org.eclipse.m2e.maven.runtime_1.5.0.20140319-1741 [306]>
>     com.google.inject.name; version="1.4.0" <org.eclipse.m2e.maven.runtime_1.5.0.20140319-1741 [306]>
>     javax.inject; version="1.0.0" <javax.inject_1.0.0.v20091030 [9]>
>     org.codehaus.plexus.component.annotations; version="0.0.0" <org.eclipse.m2e.maven.runtime_1.5.0.20140319-1741 [306]>

Oh, lest I forget: there is another import that currently cannot be
satisfied from Orbit.

Again, is there another bundle offering this package that is not
org.eclipse.m2e.maven.runtime?

>     org.eclipse.aether; version="0.9.0.v20140226" <org.eclipse.aether.api_0.9.0.v20140226 [264]>
>     org.eclipse.aether.artifact; version="0.9.0.v20140226" <org.eclipse.aether.api_0.9.0.v20140226 [264]>
>     org.eclipse.aether.collection; version="0.9.0.v20140226" <org.eclipse.aether.api_0.9.0.v20140226 [264]>
>     org.eclipse.aether.deployment; version="0.9.0.v20140226" <org.eclipse.aether.api_0.9.0.v20140226 [264]>
>     org.eclipse.aether.graph; version="0.9.0.v20140226" <org.eclipse.aether.api_0.9.0.v20140226 [264]>
>     org.eclipse.aether.impl; version="0.9.0.M2" <org.eclipse.m2e.maven.runtime_1.5.0.20140319-1741 [306]>
>     org.eclipse.aether.installation; version="0.9.0.v20140226" <org.eclipse.aether.api_0.9.0.v20140226 [264]>
>     org.eclipse.aether.metadata; version="0.9.0.v20140226" <org.eclipse.aether.api_0.9.0.v20140226 [264]>
>     org.eclipse.aether.repository; version="0.9.0.v20140226" <org.eclipse.aether.api_0.9.0.v20140226 [264]>
>     org.eclipse.aether.resolution; version="0.9.0.v20140226" <org.eclipse.aether.api_0.9.0.v20140226 [264]>
>     org.eclipse.aether.spi.locator; version="0.9.0.v20140226" <org.eclipse.aether.spi_0.9.0.v20140226 [268]>
>     org.eclipse.aether.spi.log; version="0.9.0.v20140226" <org.eclipse.aether.spi_0.9.0.v20140226 [268]>
>     org.eclipse.aether.transfer; version="0.9.0.v20140226" <org.eclipse.aether.api_0.9.0.v20140226 [264]>
>     org.eclipse.aether.util; version="0.9.0.v20140226" <org.eclipse.aether.util_0.9.0.v20140226 [271]>
>     org.eclipse.aether.util.artifact; version="0.9.0.v20140226" <org.eclipse.aether.util_0.9.0.v20140226 [271]>
>     org.eclipse.aether.util.graph.manager; version="0.9.0.v20140226" <org.eclipse.aether.util_0.9.0.v20140226 [271]>
>     org.eclipse.aether.util.graph.selector; version="0.9.0.v20140226" <org.eclipse.aether.util_0.9.0.v20140226 [271]>
>     org.eclipse.aether.util.graph.transformer; version="0.9.0.v20140226" <org.eclipse.aether.util_0.9.0.v20140226 [271]>
>     org.eclipse.aether.util.graph.traverser; version="0.9.0.v20140226" <org.eclipse.aether.util_0.9.0.v20140226 [271]>
>     org.eclipse.aether.util.repository; version="0.9.0.v20140226" <org.eclipse.aether.util_0.9.0.v20140226 [271]>
>     org.eclipse.aether.util.version; version="0.9.0.v20140226" <org.eclipse.aether.util_0.9.0.v20140226 [271]>
>     org.eclipse.aether.version; version="0.9.0.v20140226" <org.eclipse.aether.api_0.9.0.v20140226 [264]>
>   No fragment bundles
>   No required bundles

Sorry that I bother you with these lengthy descriptions of wiring
problems but for Aether to be useful to other Eclipse projects I think
it is crucial that it can be easily wired to other OSGi bundles and that
all necessary dependencies are available via p2 (ideally Orbit).

Best wishes,

Andreas

[1]
<http://git.eclipse.org/c/aether/aether-update-site.git/tree/maven/org.eclipse.aether.maven/pom.xml>
[2]
<http://search.maven.org/#search|gav|1|g%3A%22com.google.inject%22%20AND%20a%3A%22guice%22>

-- 
Codetrails UG (haftungsbeschränkt)
The knowledge transfer company

Robert-Bosch-Str. 7, 64293 Darmstadt
Mobile: +49-170-811-3791
http://www.codetrails.com/

Managing Director: Dr. Marcel Bruch
Handelsregister: Darmstadt HRB 91940


Back to the top