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]

Reply via email to