what a day... :-(

I finally discovered what is need in order to the scr xmls to be write when using m-b-p "manifest" goal.

bndLib is doing its great work properly. The problem is that the "manifest" goal doesn't do what its parent "bundle" goal is doing and is not traversing the generated in-memory jar in order to write the scr files.

Interestingly I found an undocumented parameter named "*scrExport*" which seems it was created to do just what I was needing and also the metatype artifacts. but it seems to be buggy apparently because any xml was created when setting it to true.

So, what you need to do is to set *unpackBundle* parameter to true. This will make the plugin to traverse the in memory jar created by bndLib and save its contents to disk.



On 25/06/2016 11:43, Cristiano Gavião wrote:
Hello again,

I've passed a long time doing some debugging... I've cloned the latest felix git repository and I'm using the 3.1.0-SNAPSHOT.
I think I found where the problem could be.

In maven-bundle-plugin, the org.apache.felix.bundleplugin.ManifestPlugin in line 287, sets the Builder jar property as the /target/classes directory. But seems to me that aQute.bnd.osgi.Jar is not handling directory properly anymore.

            analyzer.setJar( file );

The aQute.bnd.component.DSAnnotations class calls the aQute.bnd.osgi.Jar object in order to write the generated xml:

    analyzer.getJar().putResource(name, new
    TagResource(definition.getTag()));

 and it is where the things are not working anymore...

I already have notified bndlib team in its google group about this. I'm waiting some confirmation...

Btw, the first time I tried to debug the plugin, I had an issue when executing the part where bndlib process Prototype scope. This made the debug tool get crazy and get out of the method when it tried to execute this 6.0.0 related class:

    if (comp.scope() ==/ServiceScope.PROTOTYPE/) {
                    component.updateVersion(V1_3);
                }

I noted that bndlib 3.2.0 requires osgi.core 6.0.0, but the m-b-plugin is tied to version 4.3.1.

I only was able to debug after set the proper osgi bundles in the classpath.

could some m-b-p committer give me a feedback, please?

thanks

On 01/06/2016 17:25, Cristiano Gavião wrote:
Hi,

I used to use m-b-p version 2.5.4 and the generation of the DS component xmls was working fine.

But after I moved to version 3.0.1 (also tried with 3.0.0) the xml generation simply stops to work. also inside eclipse (with m2e).

There are any error message in the building maven console or eclipse console, but the xmls are simply not there...

I moved back to 2.5.4 again and things back to normal....

I'm using the setup bellow:

                   <plugin>
    <groupId>org.apache.felix</groupId>
    <artifactId>maven-bundle-plugin</artifactId>
    <version>${mbp.version}</version>
                        <extensions>true</extensions>
                        <configuration>
    <obrRepository>NONE</obrRepository>
                            <instructions>
    <Bundle-DocURL>${project.url}</Bundle-DocURL>
    <Bundle-Name>${project.name}</Bundle-Name>
    <Bundle-Version>${bundle.full.version}</Bundle-Version>
    <Bundle-ActivationPolicy>lazy</Bundle-ActivationPolicy>
    <_dsannotations>*</_dsannotations>
    <_metatypeannotations>*</_metatypeannotations>
    
<Bundle-RequiredExecutionEnvironment>JavaSE-1.8</Bundle-RequiredExecutionEnvironment>
    <_snapshot>${osgi-version-qualifier}</_snapshot>
    <_versionpolicy>[$(version;==;$(@)),$(version;+;$(@)))</_versionpolicy>
                            </instructions>
                            <supportedProjectTypes>
    <supportedProjectType>bundle</supportedProjectType>
    <supportedProjectType>jar</supportedProjectType>
                            </supportedProjectTypes>
                        </configuration>
    <executions>
                                    <execution>
    <id>gen-bundle-manifest</id>
                                        <goals>
    <goal>manifest</goal>
                                        </goals>
    <phase>process-classes</phase>
                                        <configuration>

                                            <instructions>
    <Permissions>all-permissions</Permissions>
    
<Include-Resource>{maven-dependencies},{maven-resources},META-INF/LICENSE=LICENSE.txt</Include-Resource>
    
<_removeheaders>Include-Resource,Private-Package,Ignore-Package</_removeheaders>
                                            </instructions>
                                        </configuration>
                                    </execution>
                    </plugin>

anyone have experienced this issue ?

thanks,

Cristiano


Reply via email to