/*
 * 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.
 */

Welcome to Apache Felix Dependency Manager
==========================================

Apache Felix Dependency Manager is a versatile java API, allowing to declaratively
register, acquire, and manage dynamic OSGi services.

In addition to the original DM API, a new DM-lambda library also allows to define
OSGI components using a fluent, concise, and more type-safe API, based on java8 lambdas.

Building and testing Apache Felix Dependency Manager
====================================================

** Compilation Using gradle:

- If necessary, configure your https proxy settings, for example:

  export GRADLE_OPTS="-Dhttps.proxyHost=www.somehost.org -Dhttps.proxyPort=8080"
  export http_proxy=www.somehost.org:8080
  export https_proxy=www.somehost.org:8080
  
- Install a recent java8 JDK (the software has been built and tested using java version 1.8.0_74)

- Compile Dependendency Manager annotations bndtools plugin:
  
$ ./gradlew --no-daemon org.apache.felix.dependencymanager.annotation:jar

- Compile all other bundles:
 
$ ./gradlew --no-daemon jar

- run junit tests:

$ ./gradlew --no-daemon test

- run integration tests:

$ ./gradlew --no-daemon check

** Compilation Using Eclipse:

- Install latest Eclipse Mars, and configure a JRE for java8:

* go to Windows -> Preferences -> Java -> Installed JREs
* Then add a java8 JRE of your choice.

- Install BndTools 3.5.0 (or latest)

- Open BndTools perspective

- Import Dependency Manager into Eclipse, and compile everything

- if it's the first time you import the project into eclipse, it may happen that some modules that requires the 
Dependency Manager Annotations bnd plugin don't compile: It's a know issue. To work around, restart eclipse and 
rebuild every modules. 

- Click on org.apache.felix.dependencymanager project and run it as "JUnit test".

- Click on org.apache.felix.dependencymanager.shell and run it as "JUnit test"

- Click on org.apache.felix.dependencymanager.itest and run it as "Bnd OSGi Test Launcer (Junit)".

- Click on org.apache.felix.dependencymanager.runtime.itest and run it as ""Bnd OSGi Test Launcer (Junit)".

Getting Started
===============

To start using Apache Felix Dependency Manager, please go to our website and read the
various guides for users:

- For a quick jump start (using either maven, gradle, the DM api, the DM annotations, or the new DM lambda-api), 
then please go to:

  http://felix.apache.org/documentation/subprojects/apache-felix-dependency-manager/tutorials/sample-code.html

There are three ways to use Dependency Manager: you can use the original java API, the new lambda API, or the 
DM annotations.

- For the Dependency Manager java API documentation, please go to the general Getting-Started documentation here:

  http://felix.apache.org/documentation/subprojects/apache-felix-dependency-manager.html

- For new Dependency Manager Lambda API, you can go to:

http://felix.apache.org/documentation/subprojects/apache-felix-dependency-manager/guides/dm-lambda.html

- And for Dependency Manager Annotations API, you can refer directly to:

  http://felix.apache.org/documentation/subprojects/apache-felix-dependency-manager/reference/dm-annotations.html

Many thanks for using Apache Felix Dependency Manager.

The Felix Team
