<?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.
  -->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <parent>
    <groupId>org.apache.logging</groupId>
    <artifactId>logging-parent</artifactId>
    <version>10.5.0</version>
    <relativePath />
  </parent>
  <groupId>log4j</groupId>
  <artifactId>apache-chainsaw</artifactId>
  <version>2.2.0-SNAPSHOT</version>
  <packaging>jar</packaging>
  <name>Apache Chainsaw</name>
  <description>Graphical Viewer for Logging events from a local or remote log4j event system.</description>
  <url>https://logging.apache.org/chainsaw</url>
  <inceptionYear>2002</inceptionYear>

  <licenses>
    <license>
      <name>Apache License, Version 2.0</name>
      <url>https://www.apache.org/licenses/LICENSE-2.0.txt</url>
      <distribution>repo</distribution>
    </license>
  </licenses>

  <developers>
    <developer>
      <id>mwomack</id>
      <name>Mark Womack</name>
      <email>mwomack@apache.org</email>
    </developer>
    <developer>
      <id>carnold</id>
      <name>Curt Arnold</name>
      <email>carnold@apache.org</email>
    </developer>
    <developer>
      <id>sdeboy</id>
      <name>Scott Deboy</name>
      <email>sdeboy@apache.org</email>
    </developer>
    <developer>
      <id>psmith</id>
      <name>Paul Smith</name>
      <email>psmith@apache.org</email>
    </developer>
    <developer>
      <id>mattsicker</id>
      <name>Matt Sicker</name>
      <email>mattsicker@apache.org</email>
    </developer>
    <developer>
      <id>grobmeier</id>
      <name>Christian Grobmeier</name>
      <email>grobmeier@apache.org</email>
    </developer>
  </developers>
  <contributors>
    <contributor>
      <name>Isuru Suriarachchi</name>
    </contributor>
  </contributors>

  <mailingLists>
    <mailingList>
      <name>log4j-user</name>
      <subscribe>log4j-user-subscribe@logging.apache.org</subscribe>
      <unsubscribe>log4j-user-unsubscribe@logging.apache.org</unsubscribe>
      <post>log4j-user@logging.apache.org</post>
      <archive>https://lists.apache.org/list.html?log4j-user@logging.apache.org</archive>
      <otherArchives>
        <otherArchive>http://mail-archives.apache.org/mod_mbox/logging-log4j-user/</otherArchive>
        <otherArchive>http://marc.info/?l=log4j-user</otherArchive>
        <otherArchive>http://dir.gmane.org/gmane.comp.jakarta.log4j.user</otherArchive>
      </otherArchives>
    </mailingList>
    <mailingList>
      <name>dev : development of the logging projects including chainsaw</name>
      <subscribe>dev-subscribe@logging.apache.org</subscribe>
      <unsubscribe>dev-unsubscribe@logging.apache.org</unsubscribe>
      <post>dev@logging.apache.org</post>
      <archive>https://lists.apache.org/list.html?dev@logging.apache.org</archive>
      <otherArchives>
        <otherArchive>http://mail-archives.apache.org/mod_mbox/logging-dev/</otherArchive>
      </otherArchives>
    </mailingList>
    <mailingList>
      <name>logging commits : all svn/git commits of the logging projects including chainsaw</name>
      <subscribe>commits-subscribe@logging.apache.org</subscribe>
      <unsubscribe>commits-unsubscribe@logging.apache.org</unsubscribe>
      <post>Read-Only List</post>
      <archive>http://mail-archives.apache.org/mod_mbox/logging-commits/</archive>
    </mailingList>
  </mailingLists>

  <scm>
    <connection>scm:git:https://github.com/apache/logging-chainsaw.git</connection>
    <developerConnection>scm:git:https://github.com/apache/logging-chainsaw.git</developerConnection>
    <url>https://github.com/apache/logging-chainsaw</url>
  </scm>

  <issueManagement>
    <system>GitHub</system>
    <url>https://github.com/apache/logging-chainsaw/issues</url>
  </issueManagement>

  <distributionManagement>
    <site>
      <id>www.example.com</id>
      <url>scp://www.example.com/www/docs/project/</url>
    </site>
    <downloadUrl>https://logging.apache.org/log4j/chainsaw/download.html</downloadUrl>
  </distributionManagement>

  <properties>
    <chainsaw.mainclass>org.apache.log4j.chainsaw.ChainsawStarter</chainsaw.mainclass>
    <maven.compiler.source>11</maven.compiler.source>
    <maven.compiler.target>11</maven.compiler.target>
    <maven.compiler.release>11</maven.compiler.release>
    <minimalJavaBuildVersion>[11,)</minimalJavaBuildVersion>
    <log4j.version>2.22.0</log4j.version>
    <dependency.locations.enabled>false</dependency.locations.enabled>
    <ChainsawReleaseVersion>2.1.0</ChainsawReleaseVersion>
    <ChainsawReleaseManager>Robert Middleton</ChainsawReleaseManager>
    <ChainsawReleaseKey>B095DD52</ChainsawReleaseKey>
  </properties>

  <dependencies>
    <dependency>
      <groupId>org.apache.logging.log4j</groupId>
      <artifactId>log4j-api</artifactId>
      <version>${log4j.version}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.logging.log4j</groupId>
      <artifactId>log4j-core</artifactId>
      <version>${log4j.version}</version>
    </dependency>
    <dependency>
      <groupId>org.jmdns</groupId>
      <artifactId>jmdns</artifactId>
      <version>3.5.8</version>
    </dependency>
    <!-- TODO upgrade to new versions once they come out -->
    <dependency>
      <groupId>org.apache.commons</groupId>
      <artifactId>commons-vfs2</artifactId>
      <version>2.9.0</version>
    </dependency>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.13.2</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.openejb</groupId>
      <artifactId>javaee-api</artifactId>
      <version>5.0-2</version>
      <type>jar</type>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>com.jcraft</groupId>
      <artifactId>jsch</artifactId>
      <version>0.1.55</version>
    </dependency>
    <dependency>
      <groupId>org.apache.geronimo.specs</groupId>
      <artifactId>geronimo-jms_1.1_spec</artifactId>
      <version>1.0</version>
      <scope>provided</scope>
      <optional>true</optional>
    </dependency>
    <dependency>
      <groupId>com.owlike</groupId>
      <artifactId>genson</artifactId>
      <version>1.6</version>
    </dependency>
    <dependency>
      <groupId>org.apache.commons</groupId>
      <artifactId>commons-configuration2</artifactId>
      <version>2.9.0</version>
    </dependency>
    <!-- TODO: Upgrade to next version when it comes out: CVE-2020-15250 -->
    <dependency>
      <groupId>commons-beanutils</groupId>
      <artifactId>commons-beanutils</artifactId>
      <version>1.9.4</version>
    </dependency>
    <dependency>
      <groupId>com.github.spotbugs</groupId>
      <artifactId>spotbugs-annotations</artifactId>
      <scope>provided</scope>
    </dependency>
  </dependencies>

  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-project-info-reports-plugin</artifactId>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <configuration>
          <workingDirectory>target</workingDirectory>
        </configuration>
      </plugin>

      <plugin>
        <groupId>biz.aQute.bnd</groupId>
        <artifactId>bnd-baseline-maven-plugin</artifactId>

        <configuration>
          <failOnMissing>false</failOnMissing>
        </configuration>
      </plugin>

    </plugins>
  </build>

  <reporting>
    <excludeDefaults>true</excludeDefaults>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jxr-plugin</artifactId>
        <version>2.5</version>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-release-plugin</artifactId>
        <configuration>
          <goals>site-deploy</goals>
          <goals>assembly:assembly</goals>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-changes-plugin</artifactId>
        <version>2.12.1</version>
        <reportSets>
          <reportSet>
            <reports>
              <report>jira-report</report>
              <report>changes-report</report>
            </reports>
          </reportSet>
        </reportSets>
      </plugin>
      <plugin>
        <artifactId>maven-pmd-plugin</artifactId>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-javadoc-plugin</artifactId>
        <version>3.3.2</version>
        <configuration>
          <bottom><![CDATA[<p align="center">Copyright &#169; {inceptionYear}-{currentYear} {organizationName}. All Rights Reserved.<br />
          Apache Logging, Apache Log4j, Log4j, Apache Chainsaw, Chainsaw, Apache, the Apache feather logo, the Apache Logging project logo,
          and the Apache Log4j logo are trademarks of The Apache Software Foundation.</p>]]></bottom>
          <encoding>UTF-8</encoding>
          <doclint>none</doclint>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-project-info-reports-plugin</artifactId>
        <version>2.9</version>
        <reportSets>
          <reportSet>
            <reports>
              <!--report>cim</report-->
              <report>scm</report>
              <report>project-team</report>
              <report>issue-tracking</report>
              <report>mailing-list</report>
              <report>dependencies</report>
            </reports>
          </reportSet>
        </reportSets>
      </plugin>
    </plugins>
  </reporting>

  <profiles>
    <profile>
      <id>mac</id>
      <activation>
        <os>
          <family>mac</family>
        </os>
      </activation>
      <build>
        <plugins>
          <plugin>
            <groupId>de.perdian.maven.plugins</groupId>
            <artifactId>macosappbundler-maven-plugin</artifactId>
            <version>1.10.2</version>
            <configuration>
              <plist>
                <CFBundleIconFile>src/main/resources/logo.icns</CFBundleIconFile>
                <CFBundleDisplayName>Chainsaw</CFBundleDisplayName>
                <CFBundleDevelopmentRegion>English</CFBundleDevelopmentRegion>
                <CFBundleURLTypes>
                  <string>msa</string>
                </CFBundleURLTypes>
                <JVMMainClassName>${chainsaw.mainclass}</JVMMainClassName>
                <JVMVersion>11+</JVMVersion>
                <JVMOptions>
                  <jvmOption>-Xms128m</jvmOption>
                  <jvmOption>-Xmx512m</jvmOption>
                </JVMOptions>
              </plist>
              <dmg>
                <generate>true</generate>
                <additionalResources>
                  <additionalResource>
                    <directory>src/bundle/macos/distribution</directory>
                  </additionalResource>
                </additionalResources>
              </dmg>
            </configuration>
            <executions>
              <execution>
                <goals>
                  <goal>bundle</goal>
                </goals>
                <phase>package</phase>
              </execution>
            </executions>
          </plugin>
          <plugin>
            <groupId>org.apache.rat</groupId>
            <artifactId>apache-rat-plugin</artifactId>
            <configuration>
              <consoleOutput>true</consoleOutput>
              <excludes combine.children="append">
                <!-- usually testing log files -->
                <exclude>**/*.log</exclude>
              </excludes>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>

    <profile>
      <id>packaging</id>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <version>3.2.2</version>
            <configuration>
              <archive>
                <manifest>
                  <mainClass>${chainsaw.mainclass}</mainClass>
                  <addClasspath>true</addClasspath>
                </manifest>
                <manifestSections>
                  <manifestSection>
                    <name>org.apache.log4j</name>
                    <manifestEntries>
                      <Implementation-Title>${project.name}</Implementation-Title>
                      <Implementation-Version>${project.version}</Implementation-Version>
                      <Implementation-Vendor>Apache Software Foundation</Implementation-Vendor>
                    </manifestEntries>
                  </manifestSection>
                </manifestSections>
              </archive>
            </configuration>
          </plugin>

          <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>appassembler-maven-plugin</artifactId>
            <configuration>
              <showConsoleWindow>false</showConsoleWindow>
              <programs>
                <program>
                  <mainClass>${chainsaw.mainclass}</mainClass>
                  <name>chainsaw</name>
                </program>
              </programs>
            </configuration>
            <executions>
              <execution>
                <goals>
                  <goal>assemble</goal>
                </goals>
                <phase>package</phase>
              </execution>
            </executions>
          </plugin>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-assembly-plugin</artifactId>
            <executions>
              <execution>
                <id>make-assembly</id>
                <goals>
                  <goal>single</goal>
                </goals>
                <phase>package</phase>
                <configuration>
                  <descriptors>
                    <descriptor>src/assembly/bin.xml</descriptor>
                    <descriptor>src/assembly/standalone.xml</descriptor>
                  </descriptors>
                  <!-- we append the assembly ID here,but note that the bin assembly does not have an id specified
                      in its config, so it doesn't have a suffix -->
                  <appendAssemblyId>true</appendAssemblyId>
                </configuration>
              </execution>
            </executions>
          </plugin>
          <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>build-helper-maven-plugin</artifactId>
            <executions>
              <execution>
                <id>attach-artifacts</id>
                <goals>
                  <goal>attach-artifact</goal>
                </goals>
                <phase>package</phase>
                <configuration>
                  <artifacts>
                    <artifact>
                      <file>target/${project.artifactId}-${project.version}-standalone.zip</file>
                      <type>zip</type>
                      <classifier>standalone</classifier>
                    </artifact>
                  </artifacts>
                </configuration>
              </execution>
            </executions>
          </plugin>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-source-plugin</artifactId>
            <executions>
              <execution>
                <goals>
                  <goal>jar</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-site-plugin</artifactId>
            <version>3.8.2</version>
            <configuration>
              <!-- only build English site even on other language OS -->
              <locales>en</locales>
              <!-- Exclude the navigation file for Maven 1 sites
                   and the changes file used by the changes-plugin,
                   as they interfere with the site generation. -->
              <moduleExcludes>
                <xdoc>navigation.xml,changes.xml</xdoc>
              </moduleExcludes>
              <asciidoc>
                <attributes>
                  <!-- copy any site properties wanted in asciidoc files -->
                  <ChainsawReleaseVersion>${ChainsawReleaseVersion}</ChainsawReleaseVersion>
                  <ChainsawReleaseManager>${ChainsawReleaseManager}</ChainsawReleaseManager>
                  <ChainsawReleaseKey>${ChainsawReleaseKey}</ChainsawReleaseKey>
                </attributes>
              </asciidoc>
            </configuration>
            <dependencies>
              <dependency>
                <groupId>org.asciidoctor</groupId>
                <artifactId>asciidoctor-maven-plugin</artifactId>
                <version>1.5.6</version>
              </dependency>
            </dependencies>
          </plugin>
        </plugins>
      </build>
    </profile>
  </profiles>
</project>
