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]