##
##
##   Copyright 2005 The Apache Software Foundation
##
##   Licensed under the Apache License, Version 2.0 (the "License");
##   you may not use this file except in compliance with the License.
##   You may obtain a copy of the License at
##
##       http://www.apache.org/licenses/LICENSE-2.0
##
##   Unless required by applicable law or agreed to in writing, software
##   distributed under the License is distributed on an "AS IS" BASIS,
##   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
##   See the License for the specific language governing permissions and
##   limitations under the License.
##

##
## $Rev$ $Date$
##


maven.compile.source=1.4
maven.compile.target=1.4

geronimoVersion=1.1.1
geronimo_version=1.1.1

maven.multiproject.type=plugin

# set eclipse project name (used in eclipse plugin V1.11 onwards)
maven.eclipse.project.name=${geronimo.maven.eclipse.plugins.project.prefix}${pom.artifactId}


