<?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 xmlns="http://maven.apache.org/FML/1.0.1"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/FML/1.0.1 http://maven.apache.org/xsd/fml-1.0.1.xsd"
  title="Frequently Asked Questions">
  <part id="General">
    <faq id="how-to-add-generated-sources">
      <question>How do I add my generated sources to the compile path of Maven, when using Modello?</question>
      <answer>
        <p>Modello generate the sources in the generate-sources phase and automatically adds the
          source directory for compilation in Maven. So you don't have to copy the generated sources.
        </p>
        <p>You have to declare the <a href="http://modello.codehaus.org/modello-maven-plugin/">Modello Maven Plugin</a>
          in the build of your project for source generation (in that way the sources are generated each time).
        </p>
        <p>For more information about Modello, please visit the
          <a href="http://modello.codehaus.org/">Modello website</a>
          .
        </p>
      </answer>
    </faq>
  </part>
</faqs>
