I had looked at the profile documentation but obviously not close enough. I
had originally thought that it would only allow me to set properties. Upone
further inspection I see that I can also modify the modules list. My
current solution, for those who might care, is to create a POM-based profile
that controls the list of modules that will be built. The profiles are
triggered off of the -D property specifying which container is targetted.
Thanks for the suggestion.
POM.xml snippet
<!-- Since we have platform-specific modules, we need to enumerate them
using profiles that are triggered off
of a system property-->
<profiles>
<profile>
<id>Weblogic</id>
<activation>
<property>
<name>platform</name>
<value>WLS</value>
</property>
</activation>
<modules>
<module>wls-specific</module>
<module>pojo-one</module>
<module>ejb-one</module>
<module>web-one</module>
<module>ear-one</module>
</modules>
</profile>
<profile>
<id>WebSphere</id>
<activation>
<property>
<name>platform</name>
<value>WAS</value>
</property>
</activation>
<modules>
<module>was-specific</module>
<module>pojo-one</module>
<module>ejb-one</module>
<module>web-one</module>
<module>ear-one</module>
</modules>
</profile>
</profiles>
Alexander Sack-3 wrote:
>
> Ronald, I have a very similar setup in my projects where ANT was used
> based
> on an if clause. In fact I wound up actually using ant-contrib to give me
> if/else type logic to make the builds more readable.
>
> Have you looked into Maven2 style PROFILES? A profile allows you to
> define
> a number of configuration parameters based on some activation property
> (system property I think is currently the only thing supported) as well as
> a
> command line define, think "-Dweblogic" passed to mvn.
>
> Here is a pointer:
> http://maven.apache.org/guides/introduction/introduction-to-profiles.html
>
> -aps
>
> On 9/13/06, Ronald Kurr <[EMAIL PROTECTED]> wrote:
>>
>> I've been looking at Maven 2 as a replacement to a current ANT-based
>> build
>> system and I'm looking for ideas on how I might be able to translate one
>> of
>> the features it currently provides. The code base supports multiple J2EE
>> containers. Sometimes we have to build two different versions of the
>> same
>> code with each version relying on vendor-specific APIs. Sometimes
>> modules
>> are built only when a certain vendor's container is targeted. We handle
>> triggering of optional but vendor-specific modules via the if attribute
>> of
>> the target tag. For example,
>>
>> <target name="do-websphere-only-module" if="websphere">
>> ...
>> </target>
>>
>> We handle the triggering of mandatory but vendor-specific code by naming
>> conventions and property values. For example, our source directories are
>> layed out similar to this:
>>
>> source/java/neutral
>> source/java/weblogic
>> source/java/websphere
>>
>> When the ANT build is kicked off, a property is set to indicate the
>> target
>> platform: -Dvendor=weblogic. When then use the value of the property to
>> construct the source path for that build:
>> <path id="compile.source.path">
>> <pathelement location="source/java/neutral"/>
>> <pathelement location="source/java/${vendor}"/>
>> </path>
>>
>> This allows us to only include the correct vendor-specific source during
>> the
>> build. We use a similar technique when building out the classpath which
>> contains vendor-specific libraries.
>>
>> I'm trying to figure out how I might achieve similar functionality under
>> Maven 2 and could use some suggestions. My first idea was to house the
>> mandatory but vendor-specific code in their own modules and use a naming
>> convention coupled with a property to control which module gets invoked
>> by
>> the parent module. For example,
>>
>> module names:
>>
>> mandatory-webshere/
>> mandatory-weblogic/
>> mandatory-jboss/
>>
>> parent POM:
>> <modules>
>> <module>mandatory-${vendor}</module>
>> <module>pojo-one</module>
>> <module>ejb-one</module>
>> <module>web-one</module>
>> <module>ear-one</module>
>> </modules>
>>
>> That seems to work but I'm open to other ideas. What I haven't been able
>> to
>> figure out is how to configure the "only build this module if the target
>> is
>> Webshere" logic. Any ideas are appreciated. I'd like to avoid having to
>> drop down to ANT using the maven-antrun-plugin or writing a custom plugin
>> but I'll try whatever suggestions are provided.
>>
>> Many Thanks,
>> Ron
>>
>>
>
>
> --
> "What lies behind us and what lies in front of us is of little concern to
> what lies within us." -Ralph Waldo Emerson
>
>
--
View this message in context:
http://www.nabble.com/WANTED%3A-Suggestions-on-performing-vendor-specific-builds-tf2265358.html#a6310402
Sent from the Maven - Users forum at Nabble.com.
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]