I'll ask the dumb question..how do you do test the JVM version with maven?
?
M-
----- Original Message -----
From: "Stephen Connolly" <[EMAIL PROTECTED]>
To: "Maven Users List" <[email protected]>
Sent: Tuesday, February 05, 2008 3:30 PM
Subject: Re: javax.mail and javax.activation in Java 6
> Nooooooo!
>
> don't go abusing the system path for that
>
> Go with the exclude by default and add back in if jvm is < 6
>
> On Feb 5, 2008 7:49 PM, J Douglas Donohoe <[EMAIL PROTECTED]> wrote:
> > Thanks for the suggestion. That led me down the right path. It looks
like the 'system' scope is more appropriate because in this case, the
classes are part of the rt.jar. I used the following profile:
> >
> > <profiles>
> > <profile>
> > <id>Java 1.6</id>
> > <activation>
> > <jdk>1.6</jdk>
> > </activation>
> > <dependencies>
> > <dependency>
> > <groupId>javax.activation</groupId>
> > <artifactId>activation</artifactId>
> > <version>1.1</version>
> > <scope>system</scope>
> > <systemPath>${java.home}/lib/rt.jar</systemPath>
> > </dependency>
> > </dependencies>
> > </profile>
> > </profiles>
> >
> > To verify this worked, I used the following command:
> >
> > $ mvn dependency:build-classpath
> >
> > The javax.activation jar no longer appears on the classpath, but rt.jar
now appears (presumably because this plugin defaults to the build
classpath).
> >
> > If I do:
> >
> > $ mvn dependency:build-classpath -DexcludeScope=system
> >
> > Then I get the classpath I want.
> >
> > Thanks for your help.
> >
> > One question on the use of 'system path' in dependency. Why is this
necessary at all? If it is part of the system, doesn't javac and/or java
know where to find it by default?
> >
> > -Doug
> >
> > *Note: I'm not sure the system path above will work quite right on a
Mac. It depends on how Apple decides to package things when they release
1.6.
> >
> >
> > ----- Original Message ----
> > From: Simon Kitching <[EMAIL PROTECTED]>
> > To: Maven Users List <[email protected]>
> > Cc: Doug Donohoe <[EMAIL PROTECTED]>
> > Sent: Tuesday, February 5, 2008 10:57:05 AM
> > Subject: Re: javax.mail and javax.activation in Java 6
> >
> >
> > ---- Doug Donohoe <[EMAIL PROTECTED]> schrieb:
> > > Hi Maven Community:
> > >
> > > I have added this dependency in my POM:
> > >
> > > <dependency>
> > > <groupId>javax.mail</groupId>
> > > <artifactId>mail</artifactId>
> > > <version>1.4.1</version>
> > > </dependency>
> > >
> > > Which is retrieved from java.net using this POM definition:
> > >
> > > <repositories>
> > > <repository>
> > > <id>java.net</id>
> > > <url>http://download.java.net/maven/1</url>
> > > <layout>legacy</layout>
> > > </repository>
> > > </repositories>
> > >
> > > The POM for javax.mail declares a dependency on the Java activation
> > > framework. However, I am using Java 6 (1.6.0_02), which already
> > > includes the activation framework.
> > >
> > > My question: Is there a way in maven to conditionally define a
> > > dependency based on the JDK you are using?
> > >
> > > If there is, what is the best way for me to use such a mechanism.
> > > Ideally, the POM at java.net would be updated, but assuming I can't
> > > figure out how to get them to update that, how do I override there
> > POM?
> > >
> >
> > Try defining a profile called "java6" in your pom. Set its activation
> > section so it only activates for java1.6. Then in the profile define
> > that problem dependency with scope=provided.
> >
> > I think that will do the job. Dependencies declared directly in a pom
> > always override those pulled in transiently. That definitely occurs for
> > version-numbers, and I *think* it works for scope too.
> >
> > Regards,
> > Simon
> >
> >
> >
> >
>
> ---------------------------------------------------------------------
> 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]