OK, I’m back at work and I have been trying your snippet.
I have a compilation problems… It seems Maven Bundle Plugin has difficulties
parsing the filter.
Here is the error message:
> mvn clean install -DskipTests=true
[INFO] Scanning for projects...
[ERROR] The build could not read 1 project -> [Help 1]
[ERROR]
[ERROR] The project (/path/to/my/project/pom.xml) has 1 error
[ERROR] Non-parseable POM
/path/to/my/project/modules/my-module-osx64b/pom.xml: entity reference names
can not start with character '(' (position: START_TAG seen
...<Require-Capability>osgi.native; filter:="(&(... @93:70) @ line 93, column
70 -> [Help 2]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e
switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please
read the following articles:
[ERROR] [Help 1]
http://cwiki.apache.org/confluence/display/MAVEN/ProjectBuildingException
[ERROR] [Help 2]
http://cwiki.apache.org/confluence/display/MAVEN/ModelParseException
The line in the POM is:
<Require-Capability>osgi.native;
filter:="(&(osgi.native.osname=MacOS)(os.native.processor=x86_64))"</Require-Capability>
I am using the following configuration for Maven Bundle Plugin:
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<version>2.3.7</version>
<extensions>true</extensions>
</plugin>
Thanks for your help
Ben
Le 29 mars 2014 à 11:21, Neil Bartlett <[email protected]> a écrit :
> You cannot do this with OBR. If you can use the R5 repository format, along
> with the repoindex tool, then you can use Provide- and Require-Capability
> headers to ensure the set of libraries you need is resolved. For example
> the fragment "org.example.nativelib.osx64" would provide something custom
> like this:
>
> Provide-Capability: myapp.native; library=com.example.nativelib
>
> and it would require the osgi.native capability to ensure it can only
> resolve on a single platform:
>
> Require-Capability: osgi.native;
> filter:="(&(osgi.native.osname=MacOS)(os.native.processor=x86_64))"
>
> Now your core bundle just requires the myapp.native capability and the
> resolver will pick the right fragment for your runtime platform.
>
>
> On Sat, Mar 29, 2014 at 7:47 AM, Benoît Thiébault
> <[email protected]>wrote:
>
>> Hi everyone,
>>
>> I’m willing to simplify my application deployment and plan to use an OBR.
>> On this OBR, I have deployed several bundles, including some containing
>> native code.
>>
>> I have a cross-platform bundle, say org.example.nativelib and one fragment
>> for each platform:
>> - org.example.nativelib.linux64b
>> - org.example.nativelib.linux32b
>> - org.example.nativelib.win7-64b
>> - org.example.nativelib.osx64b
>> - etc.
>>
>> How can I be sure that when deploying org.example.nativelib from the OBR,
>> the native fragment of the correct platform will be deployed?
>>
>> Thanks for your help
>>
>> Benoît
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: [email protected]
>> For additional commands, e-mail: [email protected]
>>
>>
--
Dr Benoît Thiébault
Project Manager
Artenum Toulouse - Science & Groupware
http://www.artenum.com
Bâtiment Calfocenter
10, rue Marguerite-Long
31320 Castanet-Tolosan
France
Phone: +33 (0)5 82 95 19 00