If I understand you correctly, you suggest configuring the plugins generally in the pluginManagement and then adding the plugin in the specific build in the module's POM?
If so, this is too simple for my case, because for instance the OSGi profile also reconfigures the maven-jar-plugin, since the maven-bundle-plugin creates its own MANIFEST.MF file (an OSGi one) which means that the JAR plugin must not create one itself, making its configuration different from the default configuration. Best regards, Eric > -----Ursprüngliche Nachricht----- > Von: Benson Margulies [mailto:[email protected]] > Gesendet: Freitag, 26. Juni 2009 13:51 > An: Maven Users List > Betreff: Re: Special build for modules - how to? > > Set it up in pluginManagement instead of plugins in the parent? > > On Fri, Jun 26, 2009 at 4:03 AM, Lewis, Eric<[email protected]> wrote: > > Hi > > > > We have a build which consists of several projects which > each consists of several modules. We also have a global > parent which defines how the build works. > > > > Now, I had the problem that some modules need special steps > in their build, e.g. JAXB2 generation, creating an OSGi module etc. > > > > Of course, I tried to stick to the Don't Repeat Yourself > principle and wanted to administer these special steps > myself, instead of leaving it to the individual developers to > copy & paste the build configuration over and over. > > > > Since including parts of XML into a POM seems to be > impossible, I did it with profiles. For example: > > > > <!-- Use this profile if you want to generate XML > binding classes using JAXB2. --> > > <profile> > > <id>jaxb</id> > > <build> > > <plugins> > > <plugin> > > <groupId>org.jvnet.jaxb2.maven2</groupId> > > <artifactId>maven-jaxb2-plugin</artifactId> > > <executions> > > <execution> > > <goals> > > <goal>generate</goal> > > </goals> > > </execution> > > </executions> > > <configuration> > > > <schemaDirectory>${jaxb.schema.directory}</schemaDirectory> > > <generatePackage>${jaxb.package}</generatePackage> > > <removeOldOutput>true</removeOldOutput> > > <forceRegenerate>true</forceRegenerate> > > </configuration> > > </plugin> > > </plugins> > > </build> > > <properties> > > > <jaxb.schema.directory>src/main/resources</jaxb.schema.directory> > > <jaxb.package>ch.ipi.${project.artifactId}.xml</jaxb.package> > > </properties> > > </profile> > > > > Now, if a module wants to use JAXB2, it just has to specify > -Pjaxb; so far, so good. > > > > I thought this was a nifty solution, but there's a problem > with reactor builds: Let's say that I want to build the whole > project (modules A, B, C), and module A needs JAXB > generation, module B needs an OSGi build etc. > > > > The only way I saw until recently was to specify all the > profiles required by all the modules when building the whole > project. However, for some plugins, this fails miserably, > since the plugin *expects* to see certain files, and if it > doesn't have them, it breaks the build. Besides, I tell every > module to do these special steps, and they only don't execute > them because some file/directory is missing (e.g. the XML > schema directory), which for me is kind of shaky... > > > > The best thing for me would have been to activate a profile > based on a Maven property, so I could set the property it in > the module's POM. Alas, this idea doesn't work, since Maven > only activates profiles based on system properties. > > > > Next, I tried activating using files, something like > > > > <!-- Use this profile if you want to generate XML > binding classes using JAXB2. --> > > <profile> > > <id>jaxb</id> > > <activation> > > <file> > > <exists>jaxb.profile</exists> > > </file> > > </activation> > > ... > > > > So, module A has a file 'jaxb.profile' in its root > directory, module B has 'osgi.profile' etc. This works well > on an individual module level, but as soon as I build the > whole project, it's totally ignored by the reactor. > > > > > > In other words, I'm stuck! > > > > Does anyone have the same kind of build that we have and > what's your solution? Is my idea of using profiles for this a > valid one or am I totally off "the Maven way"? > > > > Should I file a request for enhancement that profiles > should be activated by Maven properties? > > > > > > Best regards, > > Eric > > > --------------------------------------------------------------------- > > To unsubscribe, e-mail: [email protected] > > For additional commands, e-mail: [email protected] > > > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [email protected] > For additional commands, e-mail: [email protected] > > --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
