  ------
  Installing Secondary Artifacts
  ------
  Dennis Lundberg
  ------
  2009-03-22
  ------

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

Installing Secondary Artifacts

  Sometimes you need to install secondary artifacts after the main artifact has
  been installed in your local repository. To install a secondary artifact you
  need to use the <<<classifier>>> parameter to classify the secondary artifact.

  Let us assume that you want to install the sources for an old artifact, like
  commons-logging-1.0.3. The
  {{{http://repo1.maven.org/maven2/commons-logging/commons-logging/1.0.3/}central repository}}
  only has the main artifact and a <<<-javadoc>>> artifact for that version.
  Package up the sources into a JAR file on your local disk and then run the
  following command:

+---+
mvn ${project.groupId}:${project.artifactId}:${project.version}:install-file  -Dfile=path-to-commons-logging-sources.jar \
                                                                              -DgroupId=commons-logging \
                                                                              -DartifactId=commons-logging \ 
                                                                              -Dversion=1.0.3 \
                                                                              -Dpackaging=jar \
                                                                              -Dclassifier=sources
+---+

  <<Note>>: By using the fully qualified path of a goal, you're ensured to be using the preferred version of the maven-install-plugin. When using <<<mvn install:install-file>>> 
  its version depends on its specification in the pom or the version of Apache Maven.
