<?xml version="1.0"?>

<!--
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="question">
     <question>Is the rar file generated by the maven-rar-plugin is the same with the rar file(compressed file) of WinRar?</question>
     <answer>
       <p>
            No. They are entirely different from each other.
       </p>
       <p>
            A Resource Adapter Archive (RAR) file is a Java archive (JAR) file used to package a resource adapter for the Java 2 Connector (J2C) Architecture
            <br/>
            <br/>
            A RAR file can contain the following:
            <br/>
              <ul>
                <li>Enterprise information system (EIS) supplied resource adapter implementation code in the form of JAR files or other runnable components, such as dynamic link lists.</li>
                <li>Utility classes.</li>
                <li>Static documents, such as HTML files, images, and sound files.</li>
              </ul>
       </p>
       <p>
            While RAR(Roshal ARchive) is the native format of WinRAR archiver. Like other archives, RAR files
            are data containers, they store one or several files in the compressed form.
            After you downloaded RAR file from Internet, you need to unpack its contents in order to use it.
       </p>
     </answer>
   </faq>
 </part>
</faqs>
