commons-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From sebb <seb...@gmail.com>
Subject Re: [Math] How to select a specific JDK ?
Date Wed, 13 Jun 2012 17:35:14 GMT
On 13 June 2012 18:30, Gilles Sadowski <gilles@harfang.homelinux.org> wrote:
> On Wed, Jun 13, 2012 at 06:59:05PM +0200, Jörg Schaible wrote:
>> Gilles Sadowski 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
>>
>> Then you have setup your POM wrongly.
>
> No, this output was obtained from running "ant" (not a "commons" project).
> It just shows that there is no forward compatibility. :-)
>
>> Target should always be the lowest
>> supported JDK.
>>
>> Nevertheless we have profiles in one of our parent POMs to select different
>> JDK versions to compile and run the tests. My settings.xml contains:
>>
>> ============= %< =============
>>             <profile>
>>                 <id>java-1.3</id>
>>                 <properties>
>>                     <JAVA_1_3_HOME>/opt/sun-jdk-1.3.1.21</JAVA_1_3_HOME>
>>                 </properties>
>>             </profile>
>>             <profile>
>>                 <id>java-1.4</id>
>>                 <properties>
>>                     <!--JAVA_1_4_HOME>/opt/blackdown-
>> jdk-1.4.2.03</JAVA_1_4_HOME-->
>>                     <JAVA_1_4_HOME>/opt/ibm-jdk-
>> bin-1.4.2.13_p9</JAVA_1_4_HOME>
>>                 </properties>
>>             </profile>
>>             <profile>
>>                 <id>java-1.5</id>
>>                 <properties>
>>                     <JAVA_1_5_HOME>/opt/ibm-jdk-
>> bin-1.5.0.12_p5</JAVA_1_5_HOME>
>>                     <!--JAVA_1_5_HOME>/opt/sun-jdk-1.5.0.22</JAVA_1_5_HOME--
>> >
>>                 </properties>
>>             </profile>
>>             <profile>
>>                 <id>java-1.6</id>
>>                 <properties>
>>                     <JAVA_1_6_HOME>/opt/sun-jdk-1.6.0.24</JAVA_1_6_HOME>
>>                 </properties>
>>             </profile>
>> ============= %< =============
>
> Yes, that was something like that which I had in mind. I posted here because
> I wanted to know whether this sort of customization can be done at a higher
> level. Like: Is it possible to "import" sections of the "settings.xml" file?
>
> E.g. someone could have set up a snippet in a file "select_jdk.settings.xml"
> with:
>
>             <profile>
>                 <id>java-1.6</id>
>                 <properties>
>                     <JAVA_1_6_HOME>${JAVA_1_6_HOME}</JAVA_1_6_HOME>
>                 </properties>
>             </profile>
>
> which could be imported in our personal "settings.xml"; then, on the
> command-line:
>
>  -DJAVA_1_6_HOME=/opt/sun-jdk-1.6.0.24
>
> Thus what I mean: Is there a repository of snippets, or does everyone build
> up his own "settings.xml" by endless copy/paste?

http://commons.apache.org/commons-parent-pom.html#Testing_with_different_Java_versions

>>
>> i.e. even if I run Maven with Java 7, I can use the profile to select
>> something different.
>>
>> >> 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.
>>
>> You can use Java 7 to compile and use a different JDK to run the tests:
>>
>> $ java -version
>> java version "1.7.0_04"
>> Java(TM) SE Runtime Environment (build 1.7.0_04-b20)
>> Java HotSpot(TM) 64-Bit Server VM (build 23.0-b21, mixed mode)
>> $ mvn clean package
>> $ mvn -P java-1.5 test
>>
>> The animal sniffer plugin can ensure on top of it, that no Java 7 stuff is
>> used, even if it is used to compile for Java 5.
>
>
> Thanks for the info,
> Gilles
>
> ---------------------------------------------------------------------
> 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