#	 ***************************************************************
#	 * 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.
#	 ***************************************************************
source.. = main/java/src/
output.. = classes/target/
bin.includes = META-INF/,\
               .,\
               plugin.xml,\
               target/classes/,\
               target/classes/
jars.compile.order = .
source.target/classes = /,\
                        src/main/java/,\
                        src/main/resources/,\
                        src/test/java/
source.target/classes = /,\
                        src/main/java/,\
                        src/main/resources/,\
                        src/test/java/
