<!--
 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>
  <groupId>log4j</groupId>
  <artifactId>apache-chainsaw</artifactId>
  <name>Apache Chainsaw</name>
  <version>2.1.0-SNAPSHOT</version>
  <description>Graphical Viewer for Logging events from a local or remote log4j event system.</description>
  <url>http://logging.apache.org:80/chainsaw</url>
  <issueManagement>
    <system>Bugzilla</system>
    <url>http://issues.apache.org/bugzilla/</url>
  </issueManagement>
  <ciManagement>
    <system>Gump</system>
    <url>http://vmgump.apache.org/gump/public/logging-chainsaw/logging-log4j-chainsaw/index.html</url>
  </ciManagement>
  <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>http://mail-archives.apache.org/mod_mbox/logging-log4j-user/</archive>
      <otherArchives>
        <otherArchive>http://marc.theaimsgroup.com/?l=log4j-user&amp;r=1&amp;w=2</otherArchive>
        <otherArchive>http://dir.gmane.org/gmane.comp.jakarta.log4j.user</otherArchive>
      </otherArchives>
    </mailingList>
    <mailingList>
      <name>log4j-dev</name>
      <subscribe>log4j-dev-subscribe@logging.apache.org</subscribe>
      <unsubscribe>log4j-dev-unsubscribe@logging.apache.org</unsubscribe>
      <post>log4j-dev@logging.apache.org</post>
      <archive>http://mail-archives.apache.org/mod_mbox/logging-log4j-dev/</archive>
      <otherArchives>
        <otherArchive>http://marc.theaimsgroup.com/?l=log4j-dev&amp;r=1&amp;w=2</otherArchive>
        <otherArchive>http://dir.gmane.org/gmane.comp.jakarta.log4j.devel</otherArchive>
      </otherArchives>
    </mailingList>
  </mailingLists>
  <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>
  </developers>
  <contributors>
    <contributor>
      <name>Isuru Suriarachchi</name>
    </contributor>
  </contributors>
  <licenses>
    <license>
      <name>Apache License, Version 2.0</name>
      <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
      <distribution>repo</distribution>
    </license>
  </licenses>
  <scm>
    <connection>scm:svn:http://svn.apache.org/repos/asf/logging/chainsaw/trunk</connection>
    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/logging/chainsaw/trunk</developerConnection>
    <url>http://svn.apache.org/repos/asf/logging/chainsaw/trunk/</url>
  </scm>
  <organization>
    <name>Apache Software Foundation</name>
    <url>http://www.apache.org</url>
  </organization>
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.rat</groupId>
        <artifactId>apache-rat-plugin</artifactId>
      </plugin>
      <plugin>
        <artifactId>maven-surefire-plugin</artifactId>
        <configuration>
          <workingDirectory>target</workingDirectory>
        </configuration>
      </plugin>
      <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <configuration>
          <source>1.2</source>
          <target>1.1</target>
        </configuration>
      </plugin>
      <plugin>
        <artifactId>maven-jar-plugin</artifactId>
        <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>
        <artifactId>maven-antrun-plugin</artifactId>
        <executions>
          <execution>
            <phase>site</phase>
            <id>untag-site</id>
            <configuration>
                <tasks>
                    <taskdef name="replaceregexp" classname="org.apache.tools.ant.taskdefs.optional.ReplaceRegExp" />                
                   <replaceregexp file="target/site/source-repository.html" match="/tags/[^ &quot;&apos;&lt;]*" replace="/trunk" flags="g"/>
                <replaceregexp match="-- Generated by (.*) on .*--" replace="-- Generated by \1 --" flags="g">
					<fileset dir="target/site/apidocs" includes="**/*.html" />
				</replaceregexp>
                </tasks>
            </configuration>
            <goals>
              <goal>run</goal>
            </goals>
          </execution>
          <execution>
            <id>post-site</id>
            <phase>post-site</phase>
            <goals>
              <goal>run</goal>
            </goals>
            <configuration>
              <tasks>
                <ant target="post-site"/>
              </tasks>
            </configuration>
          </execution>
          <execution>
            <id>site-deploy</id>
            <phase>site-deploy</phase>
            <goals>
              <goal>run</goal>
            </goals>
            <configuration>
              <tasks>
                <ant target="site-deploy"/>
              </tasks>
            </configuration>
          </execution>
        </executions>
        <dependencies>
          <dependency>
            <groupId>ant</groupId>
            <artifactId>ant-nodeps</artifactId>
            <version>1.6.5</version>
          </dependency>
          <dependency>
            <groupId>ant-contrib</groupId>
            <artifactId>ant-contrib</artifactId>
            <version>1.0b2</version>
          </dependency>
        </dependencies>
      </plugin>
      <plugin>
        <artifactId>maven-assembly-plugin</artifactId>
        <executions>
          <execution>
			<phase>package</phase>
            <goals>
              <goal>assembly</goal>
            </goals>
          </execution>
        </executions>
        <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>
      </plugin>
      <plugin>
        <artifactId>maven-javadoc-plugin</artifactId>
        <executions>
          <execution>
            <goals>
              <goal>jar</goal>
              <goal>javadoc</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>build-helper-maven-plugin</artifactId>
        <executions>
          <execution>
            <id>attach-artifacts</id>
            <phase>package</phase>
            <goals>
              <goal>attach-artifact</goal>
            </goals>
            <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>
        <artifactId>maven-source-plugin</artifactId>
        <executions>
          <execution>
            <goals>
              <goal>jar</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>appassembler-maven-plugin</artifactId>
        <executions>
          <execution>
            <phase>package</phase>
            <goals>
              <goal>assemble</goal>
            </goals>
          </execution>
        </executions>
        <configuration>
          <showConsoleWindow>false</showConsoleWindow>
          <programs>
            <program>
              <mainClass>${chainsaw.mainclass}</mainClass>
              <name>chainsaw</name>
            </program>
          </programs>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>appbundler-maven-plugin</artifactId>
        <version>1.0-SNAPSHOT</version>
        <configuration>
          <mainClass>${chainsaw.mainclass}</mainClass>
          <dictionaryFile>src/main/resources/Info.plist</dictionaryFile>
          <iconFile>${basedir}/src/main/resources/logo.icns</iconFile>
          <bundleName>Chainsaw</bundleName>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>webstart-maven-plugin</artifactId>
        <version>1.0-SNAPSHOT</version>
        <configuration>
          <jnlp>
            <outputFile>webstart.jnlp</outputFile>
            <mainClass>${chainsaw.mainclass}</mainClass>
          </jnlp>
          <sign>
            <keystore>${chainsaw.webstart.keystore}</keystore>
            <keypass>${chainsaw.webstart.keypass}</keypass>
            <storepass>${chainsaw.webstart.storepass}</storepass>
            <storetype />
            <alias>${chainsaw.webstart.alias}</alias>
            <validity />
            <dnameCn />
            <dnameOu />
            <dnameO />
            <dnameL />
            <dnameSt />
            <dnameC />
            <verify>false</verify>
          </sign>
          <verbose>false</verbose>
        </configuration>
      </plugin>
    </plugins>
  </build>
  <repositories>
    <repository>
      <releases>
        <enabled>false</enabled>
      </releases>
      <snapshots />
      <id>Codehaus Snapshots</id>
      <url>http://snapshots.repository.codehaus.org/</url>
    </repository>
    <repository>
      <id>logging.rc</id>
      <name>logging services release candidates</name>
      <url>http://people.apache.org/builds/logging/repo</url>
    </repository>
  </repositories>
  <pluginRepositories>
    <pluginRepository>
      <releases>
        <enabled>false</enabled>
      </releases>
      <snapshots />
      <id>Codehaus Snapshots</id>
      <url>http://snapshots.repository.codehaus.org/</url>
    </pluginRepository>
  </pluginRepositories>
  <dependencies>
    <dependency>
      <groupId>log4j</groupId>
      <artifactId>apache-log4j-extras</artifactId>
      <version>1.1-SNAPSHOT</version>
    </dependency>
    <dependency>
      <groupId>log4j</groupId>
      <artifactId>apache-log4j-receivers</artifactId>
      <version>1.0-SNAPSHOT</version>
    </dependency>
    <dependency>
      <groupId>log4j</groupId>
      <artifactId>apache-log4j-receivers</artifactId>
      <version>1.0-SNAPSHOT</version>
      <classifier>javadoc</classifier>
    </dependency>
    <dependency>
      <groupId>log4j</groupId>
      <artifactId>log4j</artifactId>
      <version>1.2.16</version>
    </dependency>
    <dependency>
      <groupId>jmdns</groupId>
      <artifactId>jmdns</artifactId>
      <version>1.0</version>
    </dependency>    
    <dependency>
      <groupId>xstream</groupId>
      <artifactId>xstream</artifactId>
      <version>1.1.2</version>
    </dependency>
    <dependency>
      <groupId>commons-vfs</groupId>
      <artifactId>commons-vfs</artifactId>
      <version>1.0</version>
    </dependency>
    <dependency>
      <groupId>commons-logging</groupId>
      <artifactId>commons-logging</artifactId>
      <version>1.1.1</version>
    </dependency>
    <dependency>
      <groupId>jakarta-regexp</groupId>
      <artifactId>jakarta-regexp</artifactId>
      <version>1.4</version>
    </dependency>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
   <dependency>
      <groupId>org.apache.openejb</groupId>
      <artifactId>javaee-api</artifactId>
      <version>5.0-2</version>
      <type>jar</type>
    </dependency>
    <dependency>
      <groupId>com.jcraft</groupId>
      <artifactId>jsch</artifactId>
      <version>0.1.31</version>
    </dependency>
  </dependencies>
  <reporting>
    <excludeDefaults>true</excludeDefaults>
    <plugins>
      <plugin>
        <artifactId>maven-project-info-reports-plugin</artifactId>
      </plugin>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>jxr-maven-plugin</artifactId>
      </plugin>
      <plugin>
        <artifactId>maven-release-plugin</artifactId>
        <configuration>
          <goals>site-deploy</goals>
          <goals>assembly:assembly</goals>
        </configuration>
      </plugin>
      <plugin>
        <artifactId>maven-changes-plugin</artifactId>
        <configuration>
          <issueLinkTemplate>%URL%/show_bug.cgi?id=%ISSUE%</issueLinkTemplate>
        </configuration>
        <reportSets>
          <reportSet>
            <reports>
              <report>changes-report</report>
            </reports>
          </reportSet>
        </reportSets>
      </plugin>
      <plugin>
        <artifactId>maven-pmd-plugin</artifactId>
      </plugin>
      <plugin>
        <artifactId>maven-javadoc-plugin</artifactId>
      </plugin>
    </plugins>
  </reporting>
  <distributionManagement>
    <repository>
      <id>logging.repo</id>
      <url>scp://people.apache.org/www/people.apache.org/builds/logging/repo/</url>
    </repository>
    <site>
      <id>logging.site</id>
      <url>file:///${user.dir}/target/site-deploy</url>
    </site>
  </distributionManagement>
  <properties>
    <chainsaw.mainclass>org.apache.log4j.chainsaw.LogUI</chainsaw.mainclass>
  </properties>
</project>

