## ---------------------------------------------------------------------------
## 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.
## ---------------------------------------------------------------------------

groupId = example
artifactId = camel-scr-example
version = 1.0-SNAPSHOT
package = example
className = CamelScrExample
camel-version = ${project.version}
log4j-version = ${log4j-version}
maven-bundle-plugin-version = ${maven-bundle-plugin-version}
maven-compiler-plugin-version = ${maven-compiler-plugin-version}
maven-jar-plugin-version = ${maven-jar-plugin-version}
maven-resources-plugin-version = ${maven-resources-plugin-version}
maven-scr-plugin-version = ${maven-scr-plugin-version}
slf4j-version = ${slf4j-version}
