commons-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Bruno P. Kinoshita" <brunodepau...@yahoo.com.br>
Subject Re: [Math] How to select a specific JDK ?
Date Wed, 13 Jun 2012 16:36:55 GMT
Hi Gilles,


I can't say for sure that this environment variable takes precedence over anything in the
pom.xml, there may be some setting that override it or chooses a specific JVM :-)


I'm compiling and testing commons-io using Sun JDK and IBM JDK setting the environment variable
in a console. I know two ways to make sure that it is using the desired JVM: 


- in another console, while maven is running, I execute "ps -ef | grep java" to make sure
that it is using the desired JVM. Sounds boring (and maybe it is :-) but I'm already used
to this way.

- instead of "mvn clean test" use "mvn clean test -X". The -X flag turns Debug on. This way,
in the beginning of the Maven output, you can see a lot of information about your environment
(I use this flag in my Jenkins jobs too ;-). Below is an example excerpt using the IBM JVM.

kinow@chuva:~/java/workspace/commons-io$ mvn clean test -e -X
Apache Maven 3.0.4 (r1232337; 2012-01-17 06:44:56-0200)
Maven home: /opt/java/apache-maven-3.0.4
Java version: 1.7.0, vendor: IBM Corporation
Java home: /opt/java/ibm-java-x86_64-70/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "3.2.0-2-amd64", arch: "amd64", family: "unix"
(...)

Hope that helps


Bruno P. Kinoshita
http://kinoshita.eti.br
http://tupilabs.com


>________________________________
> From: Gilles Sadowski <gilles@harfang.homelinux.org>
>To: dev@commons.apache.org 
>Sent: Wednesday, 13 June 2012 1:00 PM
>Subject: Re: [Math] How to select a specific JDK ?
> 
>On Wed, Jun 13, 2012 at 08:43:17AM -0700, Bruno P. Kinoshita wrote:
>> I agree with James, Jenkins is a great choice for such tasks.
>> 
>> That's what I do when I want to test a project with a different JVM, but have no
time to set up Jenkins jobs.
>> 
>> $ export JAVA_HOME=/opt/java/ibm...
>> $ mvn clean test install
>
>OK. That's the answer to my question. The corollary is that I wasn't sure
>that the "JAVA_HOME" setting would take precedence over anything specified
>in the "pom.xml" and/or "settings.xml".
>
>Do you confirm that if I set
>  JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64
>maven will use all the executables that are locate under
>  /usr/lib/jvm/java-7-openjdk-amd64/bin
>and nothing else?
>
>
>Thanks,
>Gilles
>
>> Just my 0.02 cents :-)
>
>> 
>> Cheers
>> 
>> 
>> Bruno P. Kinoshita
>> http://kinoshita.eti.br
>> http://tupilabs.com
>> 
>> 
>> ----- Original Message -----
>> > From: James Carman <james@carmanconsulting.com>
>> > To: Commons Developers List <dev@commons.apache.org>
>> > Cc: 
>> > Sent: Wednesday, 13 June 2012 11:53 AM
>> > Subject: Re: [Math] How to select a specific JDK ?
>> > 
>> > You'd be better off using something like Jenkins for this.  You could
>> > set up different jobs to run your builds under different conditions
>> > (windoze vs. linux, jdk7 vs. jdk6, etc.)
>> > 
>> > 
>> > On Wed, Jun 13, 2012 at 10:47 AM, Gilles Sadowski
>> > <gilles@harfang.homelinux.org> wrote:
>> >>  On Wed, Jun 13, 2012 at 03:05:13PM +0200, Xavier Detant wrote:
>> >>>  The byte code generated by the compiler is totally independent from
the 
>> > JVM
>> >>>  that will be used to run it.
>> >> 
>> >>  Totally independent? Compiling with 1.7 and running with 1.6 will raise

>> > this
>> >>  error:
>> >>   Unsupported major.minor version 51.0
>> >> 
>> >>>  So I think the point is not «How to compile
>> >>>  using the right JDK?» but «How to run with using the right JVM?»
Am I
>> >>>  wrong?
>> >> 
>> >>  It is both: compiling _and_ running the tests.
>> >> 
>> >>  I should be able to do all combinations, i.e.:
>> >>   1. Compile with javac 1.6 and run with java 1.6
>> >>   2. Compile with javac 1.7 and run with java 1.7
>> >>   3. Compile with javac 1.6 and run with java 1.7
>> >>  (and similarly with s/6/5/)
>> >> 
>> >>>  If so, this can't be done at compile time, so it can't be done 
>> > via
>> >>>  maven, unless you use antrun maven's plugin to create a ant task to

>> > launch
>> >>>  your program.
>> >> 
>> >>  The point is to compile and then _run_ the unit tests, assuming that the
>> >>  code conforms to the syntax of Java 5, Java 6, and Java 7, respectively.
>> >> 
>> >>  In particular, if some source code is Java 5, it should be compatible
with
>> >>  more recent versions of the Java language, thus be compilable with more
>> >>  recent implementations of javac.
>> >>  The ultimate goal is to check that the unit tests pass independently of
the
>> >>  javac and java versions.
>> >> 
>> >> 
>> >>  Best regards,
>> >>  Gilles
>> >> 
>> >>> 
>> >>>  2012/6/13 Gilles Sadowski <gilles@harfang.homelinux.org>
>> >>> 
>> >>>  > Hello.
>> >>>  >
>> >>>  > >
>> >>>  > > With maven, you can configure the compiler to compile in
the 
>> > version you
>> >>>  > > want.
>> >>>  > >
>> >>>  > > Add this to the pom.xml and set the arguments as you which.
>> >>>  > >
>> >>>  > > <build>
>> >>>  > >         <pluginManagement>
>> >>>  > >                 <plugin>
>> >>>  > >                     
>> > <groupId>org.apache.maven.plugins</groupId>
>> >>>  > >                     
>> > <artifactId>maven-compiler-plugin</artifactId>
>> >>>  > >                     <version>2.4</version>
>> >>>  > >                     <configuration>
>> >>>  > >                         
>> > <encoding>UTF-8</encoding>
>> >>>  > >                         <source>1.6</source>
>> >>>  > >                         <target>1.6</target>
>> >>>  > >                         <compilerArguments>
>> >>>  > >                             <Xlint:-unchecked
/>
>> >>>  > >                         </compilerArguments>
>> >>>  > >                     </configuration>
>> >>>  > >                 </plugin>
>> >>>  > >
>> >>>  > > See http://maven.apache.org/plugins/maven-compiler-plugin/
>> > for more
>> >>>  > > informations.
>> >>>  >
>> >>>  > I had seen that, but that cannot be the whole story (unless there

>> > is some
>> >>>  > maven magic involved); indeed, how can maven differentiate
>> >>>  >  java-6-openjdk-amd64
>> >>>  > from
>> >>>  >  java-6-sun
>> >>>  > (since both are Java 1.6)?
>> >>>  >
>> >>>  > I was thinking that there should be some environment variable(s)

>> > whose
>> >>>  > setting would somehow activate the above configuration.
>> >>>  >
>> >>>  >
>> >>>  > Regards,
>> >>>  > Gilles
>> >>>  >
>> >>>  > >
>> >>>  > >
>> >>>  > > 2012/6/13 Gilles Sadowski 
>> > <gilles@harfang.homelinux.org>
>> >>>  > >
>> >>>  > > > On Wed, Jun 13, 2012 at 12:48:31PM +0200, Jochen 
>> > Wiedmann wrote:
>> >>>  > > > > Yes, that switch is called PATH (environment 
>> > variable).
>> >>>  > > >
>> >>>  > > > Do you mean that I should change the PATH variable
just 
>> > to build
>> >>>  > Commons
>> >>>  > > > Math?
>> >>>  > > > I surely hope that there is a more flexible way.
>> >>>  > > >
>> >>>  > > > With "ant", all that's needed is to define 
>> > JAVA_HOME (another
>> >>>  > environment
>> >>>  > > > variable, but specific to the task at hand).
>> >>>  > > >
>> >>>  > > > > On Wed, Jun 13, 2012 at 12:19 PM, Gilles Sadowski
>> >>>  > > > > <gilles@harfang.homelinux.org> wrote:
>> >>>  > > > > > Hello.
>> >>>  > > > > >
>> >>>  > > > > > Are there command-line switches that will

>> > select a specific JDK?
>> >>>  > > > > > I.e. I have several of them installed:
>> >>>  > > > > >
>> >>>  > > > > > $ ls -l /usr/lib/jvm
>> >>>  > > > > > total 36
>> >>>  > > > > > lrwxrwxrwx  1 root root   24 Dec 17 11:04

>> > default-java ->
>> >>>  > > > java-1.6.0-openjdk-amd64
>> >>>  > > > > > lrwxrwxrwx  1 root root   18 Jan  5 18:27

>> > java-1.5.0-gcj ->
>> >>>  > > > java-1.5.0-gcj-4.6
>> >>>  > > > > > drwxr-xr-x  6 root root 4096 Jan 18 15:04

>> > java-1.5.0-gcj-4.4
>> >>>  > > > > > drwxr-xr-x  6 root root 4096 Mar  7 17:33

>> > java-1.5.0-gcj-4.6
>> >>>  > > > > > lrwxrwxrwx  1 root root   23 Aug 11  2010

>> > java-1.5.0-sun ->
>> >>>  > > > java-1.5.0-sun-1.5.0.22
>> >>>  > > > > > drwxr-xr-x 10 root root 4096 Aug 11  2010

>> > java-1.5.0-sun-1.5.0.22
>> >>>  > > > > > lrwxrwxrwx  1 root root   20 Dec 16 18:51

>> > java-1.6.0-openjdk-amd64
>> >>>  > ->
>> >>>  > > > java-6-openjdk-amd64
>> >>>  > > > > > lrwxrwxrwx  1 root root   20 May  3 14:00

>> > java-1.7.0-openjdk-amd64
>> >>>  > ->
>> >>>  > > > java-7-openjdk-amd64
>> >>>  > > > > > drwxr-xr-x  3 root root 4096 Jan 18 15:38

>> > java-6-openjdk
>> >>>  > > > > > drwxr-xr-x  7 root root 4096 Mar  7 17:29

>> > java-6-openjdk-amd64
>> >>>  > > > > > drwxr-xr-x  3 root root 4096 Jan 18 15:38

>> > java-6-openjdk-common
>> >>>  > > > > > lrwxrwxrwx  1 root root   19 Jun  9  2011

>> > java-6-sun ->
>> >>>  > > > java-6-sun-1.6.0.26
>> >>>  > > > > > drwxr-xr-x  8 root root 4096 Jan 18 15:47

>> > java-6-sun-1.6.0.26
>> >>>  > > > > > drwxr-xr-x  7 root root 4096 Jun  5 17:12

>> > java-7-openjdk-amd64
>> >>>  > > > > > drwxr-xr-x  3 root root 4096 Jun  5 17:12

>> > java-7-openjdk-common
>> >>>  > > > > > lrwxrwxrwx  1 root root   12 Jan  5 18:27

>> > java-gcj -> java-gcj-4.6
>> >>>  > > > > > lrwxrwxrwx  1 root root   18 Apr 29  2010

>> > java-gcj-4.4 ->
>> >>>  > > > java-1.5.0-gcj-4.4
>> >>>  > > > > > lrwxrwxrwx  1 root root   18 Nov 14  2011

>> > java-gcj-4.6 ->
>> >>>  > > > java-1.5.0-gcj-4.6
>> >>>  > > > > >
>> >>>  > > > > > and I'd like to be able to say something

>> > like
>> >>>  > > > > >  -D...=/usr/lib/jvm/java-7-openjdk-amd64
>> >>>  > > > > > so that maven will use the corresponding

>> > compiler and JVM.
>> >>>  > > > > >
>> >>>  > > > > > Does the default configuration already cares

>> > for this? If so, which
>> >>>  > > > are the
>> >>>  > > > > > command-lins options?
>> >>>  > > > > >
>> >>>  > > > > > If not, I guess that this should be defined
in 
>> > a "profile" in
>> >>>  > > > > > "settings.xml". If so, could someone 
>> > post such a profile?
>> >>>  > > > > >
>> >>>  > > > > >
>> >>>  > > > > > Thanks,
>> >>>  > > > > > Gilles
>> >>>  > > > > >
>> >>>  > > >
>> >>>  > > > 
>> > ---------------------------------------------------------------------
>> >>>  > > > To unsubscribe, e-mail: 
>> > dev-unsubscribe@commons.apache.org
>> >>>  > > > For additional commands, e-mail: 
>> > dev-help@commons.apache.org
>> >>>  > > >
>> >>>  > > >
>> >>>  > >
>> >>>  > >
>> >>>  > > --
>> >>>  > > Xavier DETANT
>> >>>  >
>> >>>  > 
>> > ---------------------------------------------------------------------
>> >>>  > To unsubscribe, e-mail: dev-unsubscribe@commons.apache.org
>> >>>  > For additional commands, e-mail: dev-help@commons.apache.org
>> >>>  >
>> >>>  >
>> >>> 
>> >>> 
>> >>>  --
>> >>>  Xavier DETANT
>> >> 
>> >>  ---------------------------------------------------------------------
>> >>  To unsubscribe, e-mail: dev-unsubscribe@commons.apache.org
>> >>  For additional commands, e-mail: dev-help@commons.apache.org
>> >> 
>> > 
>> > ---------------------------------------------------------------------
>> > To unsubscribe, e-mail: dev-unsubscribe@commons.apache.org
>> > For additional commands, e-mail: dev-help@commons.apache.org
>> >
>> 
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: dev-unsubscribe@commons.apache.org
>> For additional commands, e-mail: dev-help@commons.apache.org
>> 
>
>---------------------------------------------------------------------
>To unsubscribe, e-mail: dev-unsubscribe@commons.apache.org
>For additional commands, e-mail: dev-help@commons.apache.org
>
>
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@commons.apache.org
For additional commands, e-mail: dev-help@commons.apache.org


Mime
View raw message