@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]
>
>

Reply via email to