import {Fragment} from 'react';
import ExternalLink from 'sentry/components/links/externalLink';
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';
// 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: ,
}
)}
);
export const steps = ({
dsn,
}: {
dsn?: string;
} = {}): LayoutProps['steps'] => [
{
type: StepType.INSTALL,
description: t('Install the SDK via Gradle, Maven, or SBT:'),
configurations: [
{
description: {t('Gradle')}
,
configurations: [
{
language: 'groovy',
description: (
{tct('For Gradle, add to your [code:build.gradle] file:', {
code:
,
})}
),
code: `
// Make sure mavenCentral is there.
repositories {
mavenCentral()
}
// Add Sentry's SDK as a dependency.
dependencies {
implementation 'io.sentry:sentry:6.27.0'
}
`,
},
{
language: 'groovy',
description: t(
'To upload your source code to Sentry so it can be shown in stack traces, use our Gradle plugin.'
),
code: `
buildscript {
repositories {
mavenCentral()
}
}
plugins {
id "io.sentry.jvm.gradle" version "3.11.1"
}
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 = "___ORG_SLUG___"
projectName = "___PROJECT_SLUG___"
authToken = "your-sentry-auth-token"
}
`,
},
],
},
{
description: {t('Maven')}
,
configurations: [
{
language: 'xml',
description: (
{tct('For Maven, add to your [code:pom.xml] file:', {code:
})}
),
code: `
io.sentry
sentry
6.27.0
`,
},
{
language: 'xml',
description: t(
'To upload your source code to Sentry so it can be shown in stack traces, use our Maven plugin.'
),
code: `
io.sentry
sentry-maven-plugin
0.0.3
true
/path/to/sentry-cli
___ORG_SLUG___
___PROJECT_SLUG___
env.SENTRY_AUTH_TOKEN
generate-resources
uploadSourceBundle
...
`,
},
],
},
{
description: {t('SBT')}
,
configurations: [
{
description: {tct('For [strong:SBT]:', {strong: })}
,
language: 'scala',
code: `libraryDependencies += "io.sentry" % "sentry" % "6.27.0"`,
},
],
},
],
additionalInfo: (
{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:
}
)}
),
configurations: [
{
language: 'java',
code: `
import java.lang.Exception;
import io.sentry.Sentry;
try {
throw new Exception("This is a test.");
} catch (Exception e) {
Sentry.captureException(e);
}
`,
},
],
additionalInfo: (
{t(
"If you're new to Sentry, use the email alert to access your account and complete a product tour."
)}
{t(
"If you're an existing user and have disabled alerts, you won't receive this email."
)}
),
},
{
title: t('Measure Performance'),
description: t('You can capture transactions using the SDK. For example:'),
configurations: [
{
language: 'java',
code: `
import io.sentry.ITransaction;
import io.sentry.Sentry;
import io.sentry.SpanStatus;
// A good name for the transaction is key, to help identify what this is about
ITransaction transaction = Sentry.startTransaction("processOrderBatch()", "task");
try {
processOrderBatch();
} catch (Exception e) {
transaction.setThrowable(e);
transaction.setStatus(SpanStatus.INTERNAL_ERROR);
throw e;
} finally {
transaction.finish();
}
`,
},
],
additionalInfo: (
{tct(
'For more information about the API and automatic instrumentations included in the SDK, [link:visit the docs].',
{
link: (
),
}
)}
),
},
];
// Configuration End
export function GettingStartedWithJava({dsn, ...props}: ModuleProps) {
return ;
}
export default GettingStartedWithJava;