<?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="Information for Maven 1.0 Users">

  <part id="maven1">
    <faq id="changed">
      <question>What's Changed?</question>
      <answer>
        <p>
          Maven 2.0 will feel very different to a Maven 1.0 user - and perhaps a little strange. But it is a lot simpler
          to work with and closer to how Maven was always meant to be! The key changes from Maven 1.0 are:
        </p>
        <ul>
          <li>
            <i>Faster and smaller</i>
            - The Maven core no longer uses Ant, Jelly or Xerces making it much smaller, has
            fewer dependencies, and is perfect for embedding in other tools.
          </li>
          <li>
            <i>Defined build lifecycle</i>
            - No more
            <code>prereqs</code>
            ,
            <code>preGoals</code>
            and
            <code>postGoals</code>
            .
            The build is a series of well defined phases. This also means that the normal goal names are not used -
            <code>compile</code>
            ,
            <code>test</code>
            and
            <code>install</code>
            work for any project type.
          </li>
          <li>
            <i>Built-in multiple project handling</i>
            - Use the same goals on a set of projects, and aggregate the
            results.
          </li>
          <li>
            <i>Improved
              <code>SNAPSHOT</code>
              handling
            </i>
            - Snapshots are now checked for updates only once per day by
            default - though can be configured to be once per build, on a particular interval, or never. A command line
            option can force a check - making it more like updating from an SCM.
          </li>
          <li>
            <i>No more properties files</i>
            - All plugins are now configured from the POM (which is now called
            <code>pom.xml</code>
            ).
          </li>
          <li>
            <i>No more
              <code>maven.xml</code>
            </i>
            - Plugins are now easier to build and integrate, and are the only way
            to script your builds. (Note that additions may later be made to the POM to allow simple things that
            scripting
            was used for, such as goal aliasing).
          </li>
          <li>
            <i>No more Jelly</i>
            - Plugins are primarily written in Java, though there are providers for other scripting languages.
          </li>
          <li>
            <i>Improved repository layout</i>
            - Maven 2.0 supports both the existing layout, and an improved repository
            layout that has deeper, partitioned structure making it easier to browse.
          </li>
        </ul>
      </answer>
    </faq>
    <faq id="m1-or-m2">
      <question>Should I use Maven 2.0, or Maven 1.0?</question>
      <answer>
        <p>
          Maven 2.0 is the latest stable release, and we certainly recommend it for all new projects.
        </p>
        <p>
          If you are already using Maven 1.0 - you should try out Maven 2.0, as it is very much improved.
          However, we still continue to support the Maven 1.x releases at this time.
        </p>
        <p>
          If you do use Maven 1.0, and would like to upgrade in the future, you should carefully consider following some
          of the
          <a href="http://maven.apache.org/maven-1.x/using/bestpractices.html">Best Practices</a>
          listed. These will make your project a lot easier to migrate in the future.
        </p>
        <p>
          The following are the known limitations in the current Maven 2.0 release compared to Maven 1.x:
        </p>
        <ul>
          <li>
            <i>Availability of plugins</i>
            - While most of the core Maven 1.x plugins have been converted,
            several 3rd party plugins may not be available. Maven 2.0 cannot execute Maven 1.0 plugins.
          </li>
        </ul>
      </answer>
    </faq>
    <faq id="m1-future">
      <question>What will happen to Maven 1.0?</question>
      <answer>
        <p>
          Support for Maven 1.0.2 has been discontinued with the release of Maven 1.1.
          While significant new features will not be added to the
          <a href="http://maven.apache.org/maven-1.x/">Maven 1.x</a> core
          (such as transitive dependencies), bugfixes and support continue and the
          repository is still available.
        </p>
      </answer>
    </faq>
    <faq id="m1-plugins">
      <question>Will my Maven 1.0 plugins be supported?</question>
      <answer>
        <p>
          Not directly.
        </p>
        <p>
          We recommend building your Jelly plugins as thin wrappers around Java beans that do not use Maven 1.0 API's,
          which will allow easy migration to Maven 2.0.
        </p>
      </answer>
    </faq>
    <faq id="m1-maven-xml">
      <question>How do I write custom scripts without a
        <code>maven.xml</code>
        file?
      </question>
      <answer>
        <p>Taken from
          <a href="http://mail-archives.apache.org/mod_mbox/maven-users/200504.mbox/%3c1113788711.5625.30.camel@172.16.1.36%3e">
            this post to the Maven User's List</a>:
        </p>
        <blockquote>
          Everything in m2 is a plugin so for doing any sort of custom work like
          that you will need to make a plugin. This 1) greatly reduces the
          complexity within m2 because we only deal with proper plugins. The
          maven.xml file in m1 was a psuedo plugin essentially and greatly
          complicated the internals and 2) it promotes the sharing of your work
          right from the get go. To start with you'll probably write a plugin that
          is only applicable to your specific requirements, or your team's work,
          but you'll see people asking for some functionality and you'll go "hey,
          I have something like that!" and hopefully people who have concrete
          solutions will generalize their solutions so they can be shared with
          others. That's what we're trying to encourage.
        </blockquote>
        <blockquote>
          We estimate that there's a lot of work bound up in project's maven.xml
          that is not being shared and we'd like to try and change that. We plan
          to make it dead simple to share plugins and hopefully people can use
          other project's plugins as a start for a plugin that they may need
          themselves.
        </blockquote>
      </answer>
    </faq>
    <faq id="convert">
      <question>How do I convert from Maven 1.x to Maven 2.x?</question>
      <answer>
        This is dicussed in <a href="http://maven.apache.org/guides/mini/guide-m1-m2.html">Guide to Moving from Maven 1.x to Maven 2.x</a>.
      </answer>
    </faq>
  </part>
</faqs>

