import {Fragment} from 'react';
import ExternalLink from 'sentry/components/links/externalLink';
import Link from 'sentry/components/links/link';
import {Layout, LayoutProps} from 'sentry/components/onboarding/gettingStartedDoc/layout';
import {ModuleProps} from 'sentry/components/onboarding/gettingStartedDoc/sdkDocumentation';
import {StepType} from 'sentry/components/onboarding/gettingStartedDoc/step';
import {t, tct} from 'sentry/locale';
interface StepProps {
dsn: string;
organizationSlug?: string;
projectSlug?: string;
sourcePackageRegistries?: ModuleProps['sourcePackageRegistries'];
}
// Configuration Start
const introduction = (
{tct(
'Sentry for Java is a collection of modules provided by Sentry; it supports Java 1.8 and above. At its core, Sentry for Java provides a raw client for sending events to Sentry. If you use [strong:Spring Boot, Spring, Logback, or Log4j2], we recommend visiting our Sentry Java documentation for installation instructions.',
{
strong: ,
link: ,
}
)}
{tct(
'To see source context in Sentry, you have to generate an auth token by visiting the [link:Organization Auth Tokens] settings. You can then set the token as an environment variable that is used by the build plugins.',
{
link: ,
}
)}
{tct(
'The [link:Sentry Gradle Plugin] automatically installs the Sentry SDK as well as available integrations for your dependencies. Add the following to your [code:build.gradle] file:',
{
code: ,
link: (
),
}
)}
),
code: `
buildscript {
repositories {
mavenCentral()
}
}
plugins {
id "io.sentry.jvm.gradle" version "${
sourcePackageRegistries?.isLoading
? t('\u2026loading')
: sourcePackageRegistries?.data?.['sentry.java.android.gradle-plugin']?.version ??
'3.12.0'
}"
}
sentry {
// Generates a JVM (Java, Kotlin, etc.) source bundle and uploads your source code to Sentry.
// This enables source context, allowing you to see your source
// code as part of your stack traces in Sentry.
includeSourceContext = true
org = "${organizationSlug}"
projectName = "${projectSlug}"
authToken = System.getenv("SENTRY_AUTH_TOKEN")
}
`,
},
],
},
{
description:
{tct(
'To upload your source code to Sentry so it can be shown in stack traces, please refer to [link:Manually Uploading Source Context].',
{
link: (
),
}
)}
),
},
{
type: StepType.CONFIGURE,
description: t(
"Configure Sentry as soon as possible in your application's lifecycle:"
),
configurations: [
{
language: 'java',
code: `
import io.sentry.Sentry;
Sentry.init(options -> {
options.setDsn("${dsn}");
// Set tracesSampleRate to 1.0 to capture 100% of transactions for performance monitoring.
// We recommend adjusting this value in production.
options.setTracesSampleRate(1.0);
// When first trying Sentry it's good to see what the SDK is doing:
options.setDebug(true);
});
`,
},
],
},
{
type: StepType.VERIFY,
description: (
{tct(
'Trigger your first event from your development environment by intentionally creating an error with the [code:Sentry#captureException] method, to test that everything is working:',
{code: }
)}