load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")

RULES_JVM_EXTERNAL_TAG = "4.2"
RULES_JVM_EXTERNAL_SHA = "cd1a77b7b02e8e008439ca76fd34f5b07aecb8c752961f9640dea15e9e5ba1ca"

http_archive(
    name = "rules_jvm_external",
    strip_prefix = "rules_jvm_external-%s" % RULES_JVM_EXTERNAL_TAG,
    sha256 = RULES_JVM_EXTERNAL_SHA,
    url = "https://github.com/bazelbuild/rules_jvm_external/archive/%s.zip" % RULES_JVM_EXTERNAL_TAG,
)

local_repository(
    name = "ext_jars",
    path = "ext.jars"
)

load("@rules_jvm_external//:repositories.bzl", "rules_jvm_external_deps")

load("@rules_jvm_external//private/rules:jvm_import.bzl", "jvm_import")


rules_jvm_external_deps()

load("@rules_jvm_external//:setup.bzl", "rules_jvm_external_setup")

rules_jvm_external_setup()

load("@rules_jvm_external//:defs.bzl", "maven_install")

load("@rules_jvm_external//:specs.bzl", "maven")

maven_install(
    artifacts = [
        "com.fasterxml.jackson.core:jackson-core:2.10.3",
        "com.fasterxml.jackson.core:jackson-databind:2.10.3",
        "com.fasterxml.jackson.core:jackson-annotations:2.10.3",
        "com.fasterxml.jackson.jaxrs:jackson-jaxrs-base:2.12.1",
	"com.fasterxml.jackson.jaxrs:jackson-jaxrs-json-provider:2.12.1",
        "commons-codec:commons-codec:1.6",
        "org.eclipse.jdt:org.eclipse.jdt.core:3.22.0",
   #     "org.eclipse.jdt:org.eclipse.jdt.ui:3.21.100",
	
# maven.artifact(
 #           group = "org.eclipse.jdt",
  #          artifact = "org.eclipse.jdt.ui",
   #         version = "3.22.0",
    #        exclusions = [
     #           maven.exclusion(
        #            group = "org.eclipse.platform",
         #           artifact = "org.eclipse.equinox.p2.artifact.repository"
          #      ),
                
           # ]
       # ),

       "org.eclipse.jdt:org.eclipse.jdt.annotation:2.2.600",
        "javax.ws.rs:javax.ws.rs-api:2.1",
        "javax.activation:activation:1.1",
        "jakarta.xml.bind:jakarta.xml.bind-api:3.0.1",
        "org.slf4j:slf4j-api:1.7.2",
        "org.osgi:org.osgi.service.log:1.5.0",
        "org.osgi:org.osgi.service.component:1.5.0",
        "org.osgi:org.osgi.framework:1.10.0",
        "org.eclipse.core:org.eclipse.core.resources:3.7.100",
        "javax.mail:mail:1.4.1",
        "org.antlr:antlr-runtime:3.2",
        "com.google.guava:guava:27.1-jre",
	"org.apache.poi:poi:4.1.1",
        "org.apache.poi:poi-ooxml:4.1.1",
        "org.mockito:mockito-core:2.23.0",
       	"org.hamcrest:hamcrest-core:1.3",
        "org.junit:junit5-api:5.0.0-ALPHA",
        "org.apache.cxf:cxf-core:3.3.12",
	"org.apache.cxf:cxf-rt-frontend-jaxrs:3.3.12",
	"org.apache.cxf:cxf-rt-rs-client:3.3.12",
	"org.apache.cxf:cxf-rt-rs-security-oauth:3.3.12",        
 	"org.apache.cxf:cxf-rt-rs-security-oauth2:3.3.12",
	"org.apache.cxf:cxf-rt-security:3.3.12",
	"org.apache.cxf:cxf-rt-transports-http:3.3.12",
	"org.apache.cxf:cxf-rt-rs-service-description:3.3.12",
	"org.apache.cxf:cxf-tools-wadlto-jaxrs:2.6.17",
	"org.hsqldb:hsqldb:2.6.1",
	"javax.servlet:javax.servlet-api:3.1.0",
	"org.osgi:org.osgi.service.log:1.5.0",
        "org.osgi:org.osgi.service.component:1.5.0",
        "org.osgi:org.osgi.service.event:1.4.1",
	"org.osgi:org.osgi.framework:1.10.0",
	"org.eclipse.core:runtime:3.10.0-v20140318-2214",
	"io.swagger.core.v3:swagger-core:2.2.7",
        "io.swagger.core.v3:swagger-jaxrs2:2.2.7",
        "io.swagger.core.v3:swagger-models:2.2.7",
        "org.eclipse.jgit:org.eclipse.jgit:5.8.0.202006091008-r",
        "org.jsoup:jsoup:1.8.3",
        "com.jcraft:jsch:0.1.55",
        "com.google.guava:guava:27.1-jre",
        "org.apache.geronimo.specs:geronimo-jms_1.1_spec:1.1",
        "org.apache.activemq:activemq-all:5.14.0",
	"org.glassfish.jaxb:jaxb-runtime:3.0.1"
        ],

#	excluded_artifacts = [
 #       "org.eclipse.platform:org.eclipse.equinox.p2.artifact.repository",
  #  ],

    repositories = [
        # Private repositories are supported through HTTP Basic auth
        "https://repo1.maven.org/maven2",
        
        "https://download.eclipse.org/tools/orbit/downloads/drops/R20201130205003/",
        "https://download.eclipse.org/releases/2020-06/202006171000/"
    ],
)
