#	 ***************************************************************
#	 * Licensed to the Apache Software Foundation (ASF) under one
#	 * or more contributor license agreements.  See the NOTICE file
#	 * distributed with this work for additional information
#	 * regarding copyright ownership.  The ASF licenses this file
#	 * to you 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.
#	 ***************************************************************

############################################################
#   UIMA Version strings
#
# Unlike other Ant property assignments, in the case of 
# duplicates, the last one wins.
# So - don't have duplicate values in this file
#
# A set consists of 
#   a) what the new values should be
#   b) what the previous values were 
#
#      The previous values are used to compare against, to find
#      the string to replace.
############################################################

# set this to -SNAPSHOT to have the snapshot suffix
# otherwise set to [nothing]
uima.as.version.snapshot=
uima.version.snapshot=
uima.version.base=2.3.0
uima.version.major=2
uima.version.minor=3
uima.version.buildRevision=0
uima.as.version.base=2.3.0

uima.as.prev.version.snapshot=-SNAPSHOT
uima.prev.version.snapshot=-SNAPSHOT
uima.prev.version.base=2.3.0
uima.prev.version.major=2
uima.prev.version.minor=3
uima.prev.version.buildRevision=0
uima.as.prev.version.base=2.3.0
