001 /* 002 * Licensed to the Apache Software Foundation (ASF) under one 003 * or more contributor license agreements. See the NOTICE file 004 * distributed with this work for additional information 005 * regarding copyright ownership. The ASF licenses this file 006 * to you under the Apache License, Version 2.0 (the 007 * "License"); you may not use this file except in compliance 008 * with the License. You may obtain a copy of the License at 009 * 010 * http://www.apache.org/licenses/LICENSE-2.0 011 * 012 * Unless required by applicable law or agreed to in writing, 013 * software distributed under the License is distributed on an 014 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 015 * KIND, either express or implied. See the License for the 016 * specific language governing permissions and limitations 017 * under the License. 018 */ 019 020 package org.apache.geronimo.genesis.plugins.tools; 021 022 import org.apache.geronimo.genesis.MojoSupport; 023 024 import org.apache.commons.lang.SystemUtils; 025 026 import org.apache.maven.plugin.MojoFailureException; 027 028 /** 029 * Forces the build to fail if the version of Java is not compatible. 030 * 031 * @goal require-java-version 032 * @phase validate 033 * 034 * @version $Rev: 467523 $ $Date: 2006-10-24 17:33:32 -0700 (Tue, 24 Oct 2006) $ 035 */ 036 public class RequireJavaVersionMojo 037 extends MojoSupport 038 { 039 /** 040 * Specify the required version of Java (1.1, 1.2, 1.3, 1.4, 1.5). 041 * 042 * Can specify a suffix of '+' to allow any version equal to or newer or '*' 043 * to allow versions in the same group. 044 * 045 * For example, version=1.4+ would be allowed on a JDK 1.5 VM, version=1.5* 046 * would allow any JDK 1.5, but not JDK 1.6. 047 * 048 * @parameter 049 * @required 050 */ 051 private String version = null; 052 053 /** 054 * Flag to skip the version check. 055 * 056 * @parameter expression="${requirejavaversion.skip}" default-value="false" 057 */ 058 private boolean skip = false; 059 060 protected void doExecute() throws Exception { 061 if (skip) { 062 log.warn("Skipping Java version check"); 063 } 064 065 version = version.trim(); 066 067 if (version.endsWith("*")) { 068 version = version.substring(0, version.length() - 1).trim(); 069 070 log.debug("Checking Java version is in the same group as: " + version); 071 072 String tmp = SystemUtils.JAVA_VERSION_TRIMMED; 073 074 log.debug("Requested version: " + tmp); 075 log.debug("JVM version: " + SystemUtils.JAVA_VERSION_FLOAT); 076 077 if (!tmp.startsWith(version)) { 078 throw new MojoFailureException("This build requires Java version " + version + 079 " or a greater version in the same group, found version: " + 080 SystemUtils.JAVA_VERSION_FLOAT); 081 } 082 } 083 else if (version.endsWith("+")) { 084 version = version.substring(0, version.length() - 1).trim(); 085 086 log.debug("Checking Java version is greater than: " + version); 087 088 float tmp = Float.parseFloat(version); 089 090 log.debug("Requested version: " + tmp); 091 log.debug("JVM version: " + SystemUtils.JAVA_VERSION_FLOAT); 092 093 if (tmp > SystemUtils.JAVA_VERSION_FLOAT) { 094 throw new MojoFailureException("This build requires Java version " + version + 095 " or greater, found version: " + SystemUtils.JAVA_VERSION_FLOAT); 096 } 097 } 098 else { 099 log.debug("Checking Java version is equal to: " + version); 100 101 float tmp = Float.parseFloat(version); 102 103 log.debug("Requested version: " + tmp); 104 log.debug("JVM version: " + SystemUtils.JAVA_VERSION_FLOAT); 105 106 if (tmp != SystemUtils.JAVA_VERSION_FLOAT) { 107 throw new MojoFailureException("This build requires Java version " + version + 108 ", found version: " + SystemUtils.JAVA_VERSION_FLOAT); 109 } 110 } 111 } 112 }