 ----
 Install From File System
 ----
 ----
 2010-07-05
 ----
~~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.

Install From File System

 First, make sure that the repository containing the NPanday assemblies and vsinstaller is located on your local file
 system. Typically, you would only do this for testing or for installing from a non-standard repo location.
 Next, configure your settings.xml file to point to your repo.

+----+
<settings>
  <profiles>
    <profile>
      <id>npanday.snapshots</id>
      <repositories>
        <repository>
          <id>local</id>
          <name>NPanday Snapshots</name>
          <url>file://C:\m2\repo</url>
          <releases>
            <enabled>false</enabled>
          </releases>
          <snapshots>
            <enabled>true</enabled>
          </snapshots>
        </repository>
      </repositories>
      <pluginRepositories>
        <pluginRepository>
          <id>local</id>
          <name>NPanday Plugin Snapshots</name>
          <url>file://C:\m2\repo</url>
          <releases>
            <enabled>false</enabled>
          </releases>
          <snapshots>
            <enabled>true</enabled>
          </snapshots>
        </pluginRepository>
      </pluginRepositories>
    </profile>
  </profiles>
</settings>
+----+

 Due to a bug in Maven, if you are remotely resolving a plugin that doesn't exist in central, you will need to install
 from a directory containing a pom.xml file. So if you have a pom.xml handy, goto that directory from the command line.
 If not, you will need to download one and goto to the download directory from the command line. Now type the following from
 the command line:

+----+
 mvn org.apache.npanday.plugins:maven-vsinstaller-plugin:install
+----+

