Hi Igor, Thanks for the link your working version.
The _snapshot instruction looks interesting, but I think(?) there is a problem with that approach: the release version x.y.z will be considered lower than the snapshots x.y.z.timestamp. This means that Eclipse may not upgrade all the bundles to a release version when a user tries to upgrade a snapshot version to a release version. I think I will go with the following for now: <plugin> <groupId>org.apache.felix</groupId> <artifactId>maven-bundle-plugin</artifactId> <extensions>true</extensions> <configuration> <instructions> <Bundle-Version> $${replace;${project.version};(.*)-SNAPSHOT;$1}.${build.qualifier} </Bundle-Version> </instructions> </configuration> </plugin> ... where ${build.qualifier} is ${maven.build.timestamp} or "qualifier" under m2e as you suggest. This should ensure that the release version gets a qualifier that's higher than any snapshot version. I'm unable to reliably reproduce the problem I have with the tycho-packaging-plugin in a standalone project. Sometimes the project where I first noticed the problem will build in m2e, so I'm left doing the m2eclipse dance trying investigate it. My *guess* is that there is some race condition on the workspace, related to the duration of the build and when the bundle plugin writes the MANIFEST.MF. I don't yet see what is different between my actual project and a standalone test. Thanks, Martin On 8 August 2013 04:59, Igor Fedorenko <i...@ifedorenko.com> wrote: > Can you provide a small standalone example project that builds on > command line but fails inside m2e workspace? > > Generally, I do not believe it is possible to use tycho-packaging-plugin > build-qualifier goal for non-tycho projects. I thought I filed a Tycho > enhancement request about this, but can't find it any more, maybe it was > closed for the lack of interest. > > To manage OSGi version qualifier of maven-bundle-plugin (m-b-p for > short) projects I usually set <_snapshot> bnd instruction to > "${maven.build.timestamp}" for regular command line builds and > ".qualifier" when working on the projects inside m2e. The latter is > needed because m2e doesn't/can't maintain ${maven.build.timestamp} > property. You can see complete working configuration example in [1]. > > [1] > http://git.eclipse.org/c/m2e/m2e-core.git/tree/m2e-maven-runtime/pom.xml?id=releases/1.4/1.4.0.20130601-0317 > > -- > Regards, > Igor > > > On 2013-08-08 3:32 AM, Martin Ellis wrote: >> >> Hi, >> >> I'm trying to understand why my project no longer builds in Eclipse >> after upgrading to m2e 1.4. >> >> The project consists of several OSGi bundles, built using the Felix >> maven-bundle-plugin, all in a reactor. >> >> They are later picked up and used by a Tycho build for use in an >> Eclipse plugin. In order to ensure that these bundles are updated when >> upgrading the Eclipse plugin, I have added a build qualifier to the >> bundle-plugin builds: >> >> <plugin> >> <groupId>org.eclipse.tycho</groupId> >> <artifactId>tycho-packaging-plugin</artifactId> >> <version>${tycho.version}</version> >> <executions> >> <execution> >> <id>timestamp</id> >> <phase>validate</phase> >> <goals> >> <goal>build-qualifier</goal> >> </goals> >> </execution> >> </executions> >> </plugin> >> >> Then used the ${unqualifiedVersion} and ${buildQualifier} set by the >> build-qualifier goal in the Bundle-Version as follows: >> >> <plugin> >> <groupId>org.apache.felix</groupId> >> <artifactId>maven-bundle-plugin</artifactId> >> <extensions>true</extensions> >> <configuration> >> <manifestLocation>META-INF</manifestLocation> >> <instructions> >> >> <Bundle-Version>${unqualifiedVersion}.0.${buildQualifier}</Bundle-Version> >> </instructions> >> </configuration> >> </plugin> >> >> Previously, I had used a lifecycle mapping to ensure that the >> build-qualifier goal was run by m2e: >> >> <plugin> >> <groupId>org.eclipse.m2e</groupId> >> <artifactId>lifecycle-mapping</artifactId> >> <version>1.0.0</version> >> <configuration> >> <lifecycleMappingMetadata> >> <pluginExecutions> >> <pluginExecution> >> <pluginExecutionFilter> >> <groupId>org.eclipse.tycho</groupId> >> <artifactId>tycho-packaging-plugin</artifactId> >> <versionRange>[0.13.0,)</versionRange> >> <goals> >> <goal>build-qualifier</goal> >> </goals> >> </pluginExecutionFilter> >> <action> >> <execute /> >> </action> >> </pluginExecution> >> </pluginExecutions> >> </lifecycleMappingMetadata> >> </configuration> >> </plugin> >> >> However, after updating to m2e, I am seeing the following error in my >> Eclipse log: >> >> Invalid value for Bundle-Version, >> ${unqualifiedVersion}.0.${buildQualifier} does not match >> [0-9]+(\.[0-9]+(\.[0-9]+(\.[0-9A-Za-z_-]+)?)?)? >> >> I don't understand why these properties are no longer being interpolated. >> >> Is there a better way to get a build qualifier timestamp that's >> consistent across projects in a reactor, and that also works in m2e? >> >> Please let me know if a test project would help. >> >> Thanks >> Martin >> _______________________________________________ >> m2e-users mailing list >> m2e-users@eclipse.org >> https://dev.eclipse.org/mailman/listinfo/m2e-users >> > _______________________________________________ > m2e-users mailing list > m2e-users@eclipse.org > https://dev.eclipse.org/mailman/listinfo/m2e-users _______________________________________________ m2e-users mailing list m2e-users@eclipse.org https://dev.eclipse.org/mailman/listinfo/m2e-users