<?xml version="1.0" encoding="UTF-8"?>
<!--
  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.
-->
<faqs title="Frequently Asked Questions About Project Metadata">
  <part id="faq">
    <faq id="why-care">
      <question>Why do I care?</question>
      <answer>
        <p>
          If you're a user of Maven then you are familiar with the Project Object Model (POM) which is the basic unit of
          work in Maven. Maven is a project-centric tool and so we attempt to capture the essence of a project in the
          POM. This includes things like what your project is, where the project lives, where you can find the sources
          for project, who the developers are on the project and how you can get hold of them, what you need to build
          the project, the way your project will be built, what form your project will be distributed in, and where it
          will be distributed from.
        </p>
        <p>
          But why would a project not using Maven care?
        </p>
        <p>
          Whether you want to use Maven or not, users of your project - especially if you provide a framework or
          reusable library - may choose to use Maven. The quality of the metadata in the Maven repository is important
          to your users as they list dependencies on your metadata, and link in the information into their own
          projects.
        </p>
        <p>
          Maintaining the metadata for your project is not hard - you can submit it to Maven at release time (and
          for large projects it can be setup automatically), and just need to describe your project, its location,
          version and most importantly dependencies. Not doing so, or providing incomplete or invalid information
          leaves this responsibility to the users of your project.
        </p>
        <p>
          The Maven team does work on this metadata actively to improve its quality, but with thousands of artifacts in
          the repository and only a certain level of knowledge of other projects this is not ideal. Nobody knows your
          project better than you.
        </p>
      </answer>
    </faq>
    <faq id="how-to-improve-metadata">
      <question>How do I make sure my project's dependency metadata is correct?</question>
      <answer>
        <p>
          It is best to get it right at the time of a release to avoid having to make difficult updates later on.
          Your information can be submitted to Maven using the regular
          <a href="guides/mini/guide-central-repository-upload.html">repository upload procedure</a>
          .
        </p>
        <p>
          The following information is what is best to provide:
        </p>
        <ul>
          <li>Project name</li>
          <li>Project URL</li>
          <li>License</li>
          <li>Description of the project</li>
          <li>Group and Artifact ID</li>
          <li>Packaging</li>
          <li>Version</li>
          <li>Dependencies</li>
        </ul>
        <p>
          The group ID should resemble the package name, or reverse DNS of your web site, and can contain subgroups as
          you see fit: for example, org.apache.maven and org.apache.maven.plugins.
        </p>
        <p>
          The artifact ID is specific to each artifact and by convention should be the filename, excluding
          extension.
        </p>
        <p>
          The packaging is the type of your artifact, such as jar, war, ear, ejb, dll, etc.
        </p>
        <p>
          Each dependency also contains their group ID and artifact ID, as well as version specification.
          In particular, you should ensure that optional dependencies are marked as such, and that runtime and testing
          only dependencies are marked with the given scope. Ranges can be used for version if that is appropriate,
          such as commons-collections [2.0,3.0). Ensure that the dependency exists in the Maven system and matches
          first.
        </p>
        <p>
          See the format of the
          <a href="/maven-model/maven.html">project descriptor</a>
          for more information.
        </p>
      </answer>
    </faq>
    <faq id="how-to-automatically-sync">
      <question>How do I ensure my latest releases automatically appear in the Maven repository?</question>
      <answer>
        <p>
          If you able to publish your releases to a Maven2 style repository and make it available over rsync,
          we can automatically publish them to ibiblio when released. This procedure requires that you take full
          responsibility for your metadata, but also ensures the best service for your users. If this is interesting
          to your project, contact dev@maven.apache.org.
        </p>
      </answer>
    </faq>
  </part>
</faqs>
