<?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 id="FAQ" title="Frequently Asked Questions">
  <part id="General">
    <faq id="How can I specify a Class-Path: entry in the manifest of an EJB jar?">
      <question>How can I specify a Class-Path: entry in the manifest of an EJB jar?</question>
      <answer>
        <p>
          You just have to configure it:
          <source>
<project>
  ...
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-ejb-plugin</artifactId>
        ...
        <configuration>
          <archive>
            <manifest>
              <addClasspath>true</addClasspath>
            </manifest>
          </archive>
        </configuration>
        ...
      </plugin>
    </plugins>
  </build>
  ...
</project>
          </source>
        </p>
      </answer>
    </faq>
   <faq id="classifieruse">
     <question>How does the classifier affect artifacts in my EJB project?</question>
     <answer>
       <p>When used, the copy of the artifact in your project will have the classifier appended to its
       filename. This can be used to differentiate duplicate artifacts.</p>
     </answer>
   </faq>
  </part>
</faqs>