<?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.
-->
<!DOCTYPE document [
  <!ENTITY project SYSTEM "project.xml">
]>
<document url="maven-jars.html">

    &project;

    <properties>
        <author email="fhanik@apache.org">Filip Hanik</author>
        <title>Apache Tomcat - Using Tomcat libraries with Maven</title>
    </properties>

<body>

<section name="Table of Contents">
<toc/>
</section>

<section name="Using Tomcat libraries With Maven">
    <subsection name="Tomcat Snapshots">
      Tomcat snapshots are located in the
      <a href="https://repository.apache.org/content/repositories/snapshots/org/apache/tomcat/">Apache Snapshot Repository</a>.
      The official URL is <source>https://repository.apache.org/content/repositories/snapshots/org/apache/tomcat/</source>
      <p>
        Snapshots are done periodically, not on a regular basis, but when changes happen and the Tomcat team deems a new snapshot might
        useful.
      </p>
    </subsection>
    <subsection name="Tomcat Releases">
      <p>
        Stable releases are published to the
        <a href="https://repo2.maven.org/maven2/org/apache/tomcat/">Central
        Maven Repositories</a>. The URL for this is
      </p>
      <source>https://repo2.maven.org/maven2/org/apache/tomcat/</source>
    </subsection>

</section>

</body>

</document>
