I tried another experiment. I set all my feature versions to my real,
qualified, osgi versions.

So, I start by building a feature that looks like:

<features xmlns="http://karaf.apache.org/xmlns/features/v1.3.0";
name="rosapi-common-0.7.105.v20151203053014">
    <feature name="rosapi-common" description="rosapi-common"
version="0.7.105.v20151203053014">
        <details>Code in common for Rosette API Web Service 1.5</details>
        <feature prerequisite="false"
dependency="false">bean-validation-support</feature>
        <bundle>mvn:com.basistech.ws/rosapi-common/0.7.105-SNAPSHOT</bundle>
   </feature>

</features>

Then, I aggregate it:

<features xmlns="http://karaf.apache.org/xmlns/features/v1.3.0";
name="rosapi-features-0.7.105.v20151203053053">
  <feature name="rosapi-common" description="rosapi-common"
version="0.7.105.v20151203053014">
        <details>Code in common for Rosette API Web Service 1.5</details>
        <feature prerequisite="false"
dependency="false">bean-validation-support</feature>
        <bundle>mvn:com.basistech.ws/rosapi-common/0.7.105-SNAPSHOT</bundle>
  </feature>
</features>

Then I try to use it in an assembly:

Caused by: java.lang.IllegalStateException: Could not find matching
feature for rosapi-common/0.7.105.v20151203053019
at org.apache.karaf.profile.assembly.Builder.addFeatures(Builder.java:1053)
at org.apache.karaf.profile.assembly.Builder.addFeatures(Builder.java:1046)
at org.apache.karaf.profile.assembly.Builder.addFeatures(Builder.java:1046)
at org.apache.karaf.profile.assembly.Builder.bootStage(Builder.java:786)
at 
org.apache.karaf.profile.assembly.Builder.doGenerateAssembly(Builder.java:586)
at org.apache.karaf.profile.assembly.Builder.generateAssembly(Builder.java:375)
at org.apache.karaf.tooling.AssemblyMojo.doExecute(AssemblyMojo.java:330)
at org.apache.karaf.tooling.AssemblyMojo.execute(AssemblyMojo.java:178)

The version it's trying to use comes from _SOME OTHER FEATURE_ in the
aggregated feature file.



On Thu, Dec 3, 2015 at 9:09 AM, Jean-Baptiste Onofré <[email protected]> wrote:
> Hi Benson,
>
> Let me check the change what we did between 4.0.2 and 4.0.3.
>
> I agree with you that it should work as before.
>
> I keep you posted.
>
> Thanks,
> Regards
> JB
>
>
> On 12/03/2015 03:07 PM, Benson Margulies wrote:
>>
>> The versions all got there by the karaf-maven-plugin. JB, I didn't
>> write that version. All I wrote was <feature>rosapi-common</feature>.
>>
>> Let's follow the history:
>>
>> in the first project, src/main/feature/feature.xml says:
>>
>> <features name="${project.artifactId}-${project.version}"
>> xmlns="http://karaf.apache.org/xmlns/features/v1.3.0";>
>>      <feature name='${project.artifactId}'
>> description='${project.name}' version='${project.version}' >
>>          <details>${project.description}</details>
>>          <feature>bean-validation-support</feature>
>>      </feature>
>> </features>
>>
>> Then this feature is aggregated in a second project, and a third
>> project uses it in an assembly. And the third project is where I get
>> the error.
>>
>> so, of course, it has a -SNAPSHOT version. I thought I took this from
>> some documentation. Do I need to use an osgi-friendly version instead?
>> That's an interesting incompatibility from 4.0.2, where all this
>> worked.
>>
>>
>> On Thu, Dec 3, 2015 at 9:00 AM, Jean-Baptiste Onofré <[email protected]>
>> wrote:
>>>
>>> Your version doesn't look good (0.7.105-SNAPSHOT instead of
>>> 0.7.105.SNAPSHOT).
>>>
>>> Regards
>>> JB
>>>
>>>
>>> On 12/03/2015 02:52 PM, Benson Margulies wrote:
>>>>
>>>>
>>>> My assembly builds that worked in 4.0.2 don't work in 4.0.3.
>>>>
>>>> The error is:
>>>>
>>>> [ERROR] Failed to execute goal
>>>> org.apache.karaf.tooling:karaf-maven-plugin:4.0.3:assembly
>>>> (default-assembly) on project rosapi-assembly-min-test: Unable to
>>>> build assembly: Could not find matching feature for
>>>> rosapi-common/0.7.105-SNAPSHOT -> [Help 1]
>>>>
>>>> This comes from a pom which says:
>>>>
>>>>    <feature>rosapi-common</feature>
>>>>
>>>> in the list of boot features.
>>>>
>>>> The rosapi-common feature exists in a feature.xml:
>>>>
>>>>           <dependency>
>>>>               <groupId>${project.groupId}</groupId>
>>>>               <artifactId>rosapi-features</artifactId>
>>>>               <version>${project.version}</version>
>>>>               <classifier>features</classifier>
>>>>               <type>xml</type>
>>>>               <scope>runtime</scope>
>>>>           </dependency>
>>>>
>>>> Which contains:
>>>>
>>>>       <feature name="rosapi-common" description="rosapi-common"
>>>> version="0.7.105.SNAPSHOT">
>>>>           <details>Code in common for Rosette API Web Service
>>>> 1.5</details>
>>>>           <feature prerequisite="false"
>>>> dependency="false">bean-validation-support</feature>
>>>>
>>>> <bundle>mvn:com.basistech.ws/rosapi-common/0.7.105-SNAPSHOT</bundle>
>>>>          ...
>>>>       </feature>
>>>>
>>>> Note the - in the version in the error message, but the . in the
>>>> version in the feature.xml. It's a generated feature.xml via the
>>>> karaf-maven-plugin. Is there a way to write the version in the pom
>>>> boot list to get around this?
>>>>
>>>
>>> --
>>> Jean-Baptiste Onofré
>>> [email protected]
>>> http://blog.nanthrax.net
>>> Talend - http://www.talend.com
>
>
> --
> Jean-Baptiste Onofré
> [email protected]
> http://blog.nanthrax.net
> Talend - http://www.talend.com

Reply via email to