#
# Gitblit project descriptor
#

# Specify minimum Moxie version required to build
requires: 0.9.4

# Project Metadata
name: Gitblit
description: pure Java Git solution
groupId: com.gitblit
artifactId: gitblit
version: 1.7.2-SNAPSHOT
inceptionYear: 2011

# Current stable release
releaseVersion: 1.7.1
releaseDate: 2015-11-23

# Project urls
url: 'http://gitblit.com'
issuesUrl: 'https://github.com/gitblit/gitblit'
socialNetworkUrl: 'https://plus.google.com/114464678392593421684'
forumUrl: 'http://groups.google.com/group/gitblit'
mavenUrl: 'http://gitblit.github.io/gitblit-maven'

# Licenses section included for POM generation
licenses:
- {
    name: Apache ASL v2.0
    url: 'http://www.apache.org/licenses/LICENSE-2.0.html'
  }

# Developers section included for POM generation
developers:
- {
  id: james
  name: James Moger
  url: 'https://plus.google.com/u/0/116428776452027956920'
  organization: VAS
  organizationUrl: 'http://www.vas.com'
  roles: developer
  }

# SCM section included for POM generation
scm: {
  connection: 'scm:git:git://github.com/gitblit/gitblit.git'
  developerConnection: 'scm:git:https://github.com/gitblit/gitblit.git'
  url: 'https://github.com/gitblit/gitblit'
  tag: HEAD
  }

# Mainclass is used for setting jar manifests and using the mx:run target
mainclass: com.gitblit.GitBlitServer

# Moxie supports multiple source directories and allows you to assign
# a scope to each directory.
sourceDirectories:
- compile 'src/main/java'
- compile 'src/main/bugtraq'
- compile 'src/main/gen' apt
- test 'src/test/java'
- test 'src/test/bugtraq'
# Moxie supports one site-scoped directory for mx:doc
- site 'src/site'

resourceDirectories:
- compile 'src/main/resources'
- site 'src/site/resources'

# compile for Java 7 class format
tasks: {
	'mx:javac' : {
        source: 1.7
        target: 1.7
        compiler: javac1.7
        encoding: UTF-8
        # stop complaints about bootstrap classpath when compiling with Java 7
        compilerArgs: '-Xlint:-options'
    }
}

# Generate Eclipse project files.
# Generate IntelliJ IDEA module files.
# Generate a distribution Maven POM (not suitable for building with Maven).
apply: eclipse, intellij, pom

# Copy all retrieved dependencies to the "ext" directory.
# Generated IDE settings (.classpath, etc) will use the artifacts
# from this project-relative directory. This allows the IDE settings
# to be version-controlled and shared.
dependencyDirectory: ext

# Register the Eclipse JGit Maven repositories
registeredRepositories:
- { id: eclipse, url: 'http://repo.eclipse.org/content/groups/releases' }
- { id: eclipse-snapshots, url: 'http://repo.eclipse.org/content/groups/snapshots' }
- { id: gitblit, url: 'http://gitblit.github.io/gitblit-maven' }

# Source all dependencies from the following repositories in the specified order
repositories: central, eclipse-snapshots, eclipse, gitblit

# Convenience properties for dependencies
properties: {
  jetty.version  : 9.2.13.v20150730
  slf4j.version  : 1.7.12
  wicket.version : 1.4.22
  lucene.version : 4.10.4
  jgit.version   : 4.1.1.201511131810-r
  groovy.version : 2.4.4
  bouncycastle.version : 1.52
  selenium.version : 2.28.0
  wikitext.version : 1.4
  sshd.version: 1.0.0
  mina.version: 2.0.9
  guice.version : 4.0
  # Gitblit maintains a fork of guice-servlet
  guice-servlet.version : 4.0-gb2
  }

# Dependencies
#
#   May be tagged with ":label" notation to group dependencies.
#
#   "@extension" fetches the artifact with the specified extension
#   and ignores all transitive dependencies.
#
#   "!groupId" or "!groupId:artifactId" excludes all matching transitive
#   dependencies in that dependency's dependency graph.
#

dependencies:
- compile 'com.google.inject:guice:${guice.version}' :war :fedclient
- compile 'com.google.inject.extensions:guice-servlet:${guice-servlet.version}' :war
- compile 'com.google.guava:guava:18.0' :war :fedclient
- compile 'com.intellij:annotations:12.0' :war
- compile 'log4j:log4j:1.2.17' :war :fedclient :manager
- compile 'org.slf4j:slf4j-api:${slf4j.version}' :war :fedclient :manager
- compile 'org.slf4j:slf4j-log4j12:${slf4j.version}' :war :fedclient :manager
- compile 'com.sun.mail:javax.mail:1.5.1' :war
- compile 'javax.servlet:javax.servlet-api:3.1.0' :fedclient
- compile 'org.eclipse.jetty.aggregate:jetty-all:${jetty.version}' @jar
- compile 'org.apache.wicket:wicket:${wicket.version}' :war !org.mockito
- compile 'org.apache.wicket:wicket-auth-roles:${wicket.version}' :war !org.mockito
- compile 'org.apache.wicket:wicket-extensions:${wicket.version}' :war !org.mockito
- compile 'org.apache.lucene:lucene-core:${lucene.version}' :war :fedclient
- compile 'org.apache.lucene:lucene-analyzers-common:${lucene.version}' :war :fedclient
- compile 'org.apache.lucene:lucene-highlighter:${lucene.version}' :war :fedclient
- compile 'org.apache.lucene:lucene-memory:${lucene.version}' :war :fedclient
- compile 'org.apache.lucene:lucene-queryparser:${lucene.version}' :war :fedclient
- compile 'org.pegdown:pegdown:1.5.0' :war
- compile 'org.fusesource.wikitext:wikitext-core:${wikitext.version}' :war
- compile 'org.fusesource.wikitext:twiki-core:${wikitext.version}' :war
- compile 'org.fusesource.wikitext:textile-core:${wikitext.version}' :war
- compile 'org.fusesource.wikitext:tracwiki-core:${wikitext.version}' :war
- compile 'org.fusesource.wikitext:mediawiki-core:${wikitext.version}' :war
- compile 'org.fusesource.wikitext:confluence-core:${wikitext.version}' :war
- compile 'org.eclipse.jgit:org.eclipse.jgit:${jgit.version}' :war :fedclient :manager !junit
- compile 'org.eclipse.jgit:org.eclipse.jgit.http.server:${jgit.version}' :war :manager !junit
- compile 'org.bouncycastle:bcprov-jdk15on:${bouncycastle.version}' :war
- compile 'org.bouncycastle:bcmail-jdk15on:${bouncycastle.version}' :war
- compile 'org.bouncycastle:bcpkix-jdk15on:${bouncycastle.version}' :war
- compile 'org.apache.sshd:sshd-core:${sshd.version}' :war !org.easymock
- compile 'org.apache.mina:mina-core:${mina.version}' :war !org.easymock
- compile 'rome:rome:0.9' :war :manager :api
- compile 'com.google.code.gson:gson:2.3.1' :war :fedclient :manager :api
- compile 'org.codehaus.groovy:groovy-all:${groovy.version}' :war
- compile 'com.unboundid:unboundid-ldapsdk:2.3.8' :war
- compile 'org.apache.ivy:ivy:2.2.0' :war
- compile 'com.toedter:jcalendar:1.3.2' :authority
- compile 'org.apache.commons:commons-compress:1.4.1' :war
- compile 'commons-io:commons-io:2.2' :war
- compile 'com.force.api:force-partner-api:24.0.0' :war
- compile 'org.freemarker:freemarker:2.3.22' :war
- compile 'com.github.dblock.waffle:waffle-jna:1.7.3' :war
- compile 'org.kohsuke:libpam4j:1.8' :war
- compile 'args4j:args4j:2.0.29' :war :fedclient
- compile 'commons-codec:commons-codec:1.7' :war
- compile 'redis.clients:jedis:2.6.2' :war
- compile 'ro.fortsoft.pf4j:pf4j:0.9.0' :war
- compile 'org.apache.tika:tika-core:1.5' :war
- compile 'org.jsoup:jsoup:1.7.3' :war
- test 'junit'
# Dependencies for Selenium web page testing
- test 'org.seleniumhq.selenium:selenium-java:${selenium.version}' @jar
- test 'org.seleniumhq.selenium:selenium-support:${selenium.version}' @jar
- test 'org.seleniumhq.selenium:selenium-firefox-driver:${selenium.version}'
- test 'org.mockito:mockito-core:1.10.19'
# Dependencies with the "build" scope are retrieved
# and injected into the Ant runtime classpath
- build 'jacoco'
