 ------
 Using the app-client as a dependency
 ------
 Pete Marvin King
 Stephane Nicoll
 ------
 2011-03-26
 ------

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

 ~~ NOTE: For help with the syntax of this file, see:
 ~~ http://maven.apache.org/doxia/references/apt-format.html


Using the app-client as a dependency

 Once the ACR Plugin has been used to generate an application client, the generated artifact can be used as a
 dependency by specifying the the <<<type>>> as <<<app-client>>>.

* Normal way of adding an Application Client dependency

 The following dependency declaration would include the <<<application-client-project-1.0-SNAPSHOT.jar>>> in your
 project's package.

+------------+
<project>
  [...]
  <dependencies>
    <dependency>
      <groupId>com.example</groupId>
      <artifactId>application-client-project</artifactId>
      <version>1.0-SNAPSHOT</version>
      <type>app-client</type>
    </dependency>
  </dependencies>
  [...]
</project>
+------------+
