@Justin, thanks for the link, I certainly won't spam this list with maven specifics.
Respectful of the *shouldn't* but rephrasing the question specifically regarding maven-bundle-plugin and felix-scr-plugin; Given that other plugins support (rightly or wrongly) multiple artifacts based on classifier, are the issues I'm seeing due to a bug or purposeful lack of support in these plugins or due configuration errors in my pom? thanks, Caspar On 8 August 2011 15:26, Justin Edelson <[email protected]> wrote: > > http://www.sonatype.com/people/2010/01/how-to-create-two-jars-from-one-project-and-why-you-shouldnt/ > > If you have further questions on Maven best practices, you should post > this question to the maven users list. I think there's an obvious > difference between source/javadoc artifacts and api/impl artifacts. > > > On Mon, Aug 8, 2011 at 10:17 AM, Caspar MacRae <[email protected]> wrote: > > Hi, > > > > @Justin Thanks for your response. I see classifiers used quite a bit to > > produce artifacts other than the "standard" tests, source and javadoc - > can > > you point me to an explanation of why this is a bad practice? (forgive me > - > > I'm not being thorny, would just like to understand more). AFAIK BNDtools > > and P2 allow more than one artifact per source module, is this a legacy > of > > maven v1,v2 to be relaxed in v3? > > > > We currently have tons of tiny bundles - many consisting of little more > than > > a service interface (exported) and implementation (private). To split > these > > out so that they consist of just a single interface in one bundle and a > > single service in another is a source code management nightmare (while I > > desperately want neater wiring of bundles when it comes to deploying > minor, > > non-API breaking changes, I'm not sure this is worth the expense of such > > granular maven modules). > > > > Aside from this request being against maven best practices, looking > through > > Jira I can see a few tickets referring to classifiers and bundle plugin, > > e.g. FELIX-492, FELIX-1021 - so is this working fine and have I just > messed > > up my pom? > > > > thanks, > > Caspar > > > > > > On 8 August 2011 14:54, Justin Edelson <[email protected]> wrote: > > > >> This is not a good idea as it runs against Maven best practices. You > >> should restructure your project to produce a single artifact per > >> project. > >> > >> Justin > >> > >> On Mon, Aug 8, 2011 at 6:23 AM, Caspar MacRae <[email protected]> wrote: > >> > Hello, > >> > > >> > I'm trying to get a single maven module to build separate bundles by > >> > classifier - the intention is to be able to have multiple build > artifacts > >> > per project; > >> > > >> > > >> > 1. no classifier with included API packages exported and imported, > with > >> > included implementation packages private > >> > 2. "-api" classifier with only API packages (and these exported) > >> without > >> > implementation > >> > 3. "-imp" classifier with the API packages imported but not > included, > >> and > >> > implementation packages private > >> > > >> > I can build the Jars with the correct packages included/excluded, but > >> it's > >> > the same META-INF/MANIFEST.MF used for all three and DS the > >> > OSGI-INF/serviceComponents.xml is generated but not included. > >> > > >> > Hoping what I'm attempting is actually possible and that it's just > >> something > >> > stupid I'm doing wrt the lifecycle phase. > >> > > >> > Is there anybody out there that can see what I'm missing/doing wrong? > >> > > >> > > >> > thanks, > >> > > >> > Caspar > >> > > >> > > >> > Here's the pluginManagement pom snippet: > >> > > >> > > >> > </pluginManagement> > >> > > >> > </plugins> > >> > > >> > <!-- ... ---> > >> > > >> > <plugin> > >> > <groupId>org.apache.maven.plugins</groupId> > >> > <artifactId>maven-jar-plugin</artifactId> > >> > <version>2.3.1</version> > >> > <configuration> > >> > <archive> > >> > > >> > > >> > <manifestFile>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestFile> > >> > </archive> > >> > </configuration> > >> > <executions> > >> > <execution> > >> > <id>jar-api</id> > >> > <goals> > >> > <goal>jar</goal> > >> > </goals> > >> > <configuration> > >> > <classifier>api</classifier> > >> > <includes> > >> > <includes>**/api/*</includes> > >> > </includes> > >> > </configuration> > >> > </execution> > >> > <execution> > >> > <id>jar-imp</id> > >> > <goals> > >> > <goal>jar</goal> > >> > </goals> > >> > <configuration> > >> > <classifier>imp</classifier> > >> > <includes> > >> > <includes>**/imp/*</includes> > >> > </includes> > >> > </configuration> > >> > </execution> > >> > </executions> > >> > </plugin> > >> > > >> > <plugin> > >> > <!-- Process the DS annotations --> > >> > <groupId>org.apache.felix</groupId> > >> > <artifactId>maven-scr-plugin</artifactId> > >> > <version>1.7.0</version> > >> > <executions> > >> > <execution> > >> > <id>scr-imp</id> > >> > <goals> > >> > <goal>scr</goal> > >> > </goals> > >> > <configuration> > >> > <classifier>imp</classifier> > >> > > >> <generateAccessors>true</generateAccessors> > >> > </configuration> > >> > </execution> > >> > </executions> > >> > </plugin> > >> > > >> > <plugin> > >> > <!-- Generate OSGi bundle MAINFEST.MF entries --> > >> > <groupId>org.apache.felix</groupId> > >> > <artifactId>maven-bundle-plugin</artifactId> > >> > <version>2.3.5</version> > >> > <extensions>true</extensions> > >> > <configuration> > >> > <archive> > >> > > <addMavenDescriptor>true</addMavenDescriptor> > >> > </archive> > >> > <supportedProjectTypes> > >> > > >> <supportedProjectType>jar</supportedProjectType> > >> > > >> <supportedProjectType>war</supportedProjectType> > >> > </supportedProjectTypes> > >> > <instructions> > >> > <Bundle-Vendor>${project.organization.name > >> > }</Bundle-Vendor> > >> > > >> > > >> > <Bundle-ContactAddress>${project.organization.url}</Bundle-ContactAddress> > >> > > >> > <Bundle-Description>${project.description}</Bundle-Description> > >> > > >> <Bundle-DocURL>${bundle.doc.url}</Bundle-DocURL> > >> > > >> > <Bundle-Category>${bundle.category}</Bundle-Category> > >> > > >> > <!-- PAX mangles this, it uses the name of > the > >> > project for the symbolicname > >> > of test bundle? <Bundle-SymbolicName>${ > >> > project.name}</Bundle-SymbolicName> --> > >> > > >> > <Bundle-SymbolicName>${bundle.symbolicname}</Bundle-SymbolicName> > >> > > >> > > >> > <Bundle-Version>${project.version}</Bundle-Version> > >> > <_include>-osgi.bnd</_include> > >> > <Import-Package>*</Import-Package> > >> > <Export-Package> > >> > > >> > !${project.artifactId}.imp.*,${project.artifactId}.* > >> > </Export-Package> > >> > > >> > <Private-Package>${project.artifactId}.imp.*</Private-Package> > >> > </instructions> > >> > </configuration> > >> > <executions> > >> > <execution> > >> > <id>bundle-api</id> > >> > <goals> > >> > <goal>manifest</goal> > >> > </goals> > >> > <phase>process-classes</phase> > >> > <inherited>true</inherited> > >> > <configuration> > >> > <classifier>api</classifier> > >> > <instructions> > >> > > >> > <Export-Package>${project.artifactId}.*</Export-Package> > >> > > <Private-Package>!*</Private-Package> > >> > </instructions> > >> > </configuration> > >> > </execution> > >> > <execution> > >> > <id>bundle-imp</id> > >> > <goals> > >> > <goal>manifest</goal> > >> > </goals> > >> > <phase>process-classes</phase> > >> > <inherited>true</inherited> > >> > <configuration> > >> > <classifier>imp</classifier> > >> > <instructions> > >> > > >> > > >> > <Export-Package>!${project.artifactId}.imp.*,${project.artifactId}.*</Export-Package> > >> > > >> > <Private-Package>${project.artifactId}.imp.*</Private-Package> > >> > </instructions> > >> > </configuration> > >> > </execution> > >> > > >> > </executions> > >> > </plugin> > >> > <!-- ... ---> > >> > </plugins> > >> > </pluginManagement> > >> > > >> > > >> > And usage in a child POM looks like: > >> > > >> > > >> > <build> > >> > <plugins> > >> > <!-- ... ---> > >> > > >> > <plugin> > >> > <groupId>org.apache.felix</groupId> > >> > <artifactId>maven-bundle-plugin</artifactId> > >> > </plugin> > >> > <plugin> > >> > <groupId>org.apache.felix</groupId> > >> > <artifactId>maven-scr-plugin</artifactId> > >> > </plugin> > >> > <plugin> > >> > <groupId>org.apache.maven.plugins</groupId> > >> > <artifactId>maven-jar-plugin</artifactId> > >> > </plugin> > >> > <!-- ... ---> > >> > > >> > </plugins> > >> > </build> > >> > > >> > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [email protected] > For additional commands, e-mail: [email protected] > >

