[[appendix]] == Appendix [[reproducible-builds]] === Reproducible Builds Starting with version 5.7, JUnit 5 aims for its non-javadoc JARs to be https://reproducible-builds.org/[reproducible]. Under identical build conditions, such as Java version, repeated builds should provide the same output byte-for-byte. This means that anyone can reproduce the build conditions of the artifacts on Maven Central/Sonatype and produce the same output artifact locally, confirming that the artifacts in the repositories were actually generated from this source code. [[dependency-metadata]] === Dependency Metadata Artifacts for final releases and milestones are deployed to {Maven_Central}, and snapshot artifacts are deployed to Sonatype's {snapshot-repo}[snapshots repository] under {snapshot-repo}/org/junit/[/org/junit]. [[dependency-metadata-junit-platform]] ==== JUnit Platform * *Group ID*: `org.junit.platform` * *Version*: `{platform-version}` * *Artifact IDs*: `junit-platform-commons`:: Common APIs and support utilities for the JUnit Platform. Any API annotated with `@API(status = INTERNAL)` is intended solely for usage within the JUnit framework itself. _Any usage of internal APIs by external parties is not supported!_ `junit-platform-console`:: Support for discovering and executing tests on the JUnit Platform from the console. See <> for details. `junit-platform-console-standalone`:: An executable JAR with all dependencies included is provided in Maven Central under the https://repo1.maven.org/maven2/org/junit/platform/junit-platform-console-standalone[junit-platform-console-standalone] directory. See <> for details. `junit-platform-engine`:: Public API for test engines. See <> for details. `junit-platform-jfr`:: Provides a `LauncherDiscoveryListener` and `TestExecutionListener` for Java Flight Recorder events on the JUnit Platform. See <> for details. `junit-platform-launcher`:: Public API for configuring and launching test plans -- typically used by IDEs and build tools. See <> for details. `junit-platform-reporting`:: `TestExecutionListener` implementations that generate test reports -- typically used by IDEs and build tools. See <> for details. `junit-platform-runner`:: Runner for executing tests and test suites on the JUnit Platform in a JUnit 4 environment. See <> for details. `junit-platform-suite`:: JUnit Platform Suite artifact that transitively pulls in dependencies on `junit-platform-suite-api` and `junit-platform-suite-engine` for simplified dependency management in build tools such as Gradle and Maven. `junit-platform-suite-api`:: Annotations for configuring test suites on the JUnit Platform. Supported by the <> and the <>. `junit-platform-suite-commons`:: Common support utilities for executing test suites on the JUnit Platform. `junit-platform-suite-engine`:: Engine that executes test suites on the JUnit Platform; only required at runtime. See <> for details. `junit-platform-testkit`:: Provides support for executing a test plan for a given `TestEngine` and then accessing the results via a fluent API to verify the expected results. [[dependency-metadata-junit-jupiter]] ==== JUnit Jupiter * *Group ID*: `org.junit.jupiter` * *Version*: `{jupiter-version}` * *Artifact IDs*: `junit-jupiter`:: JUnit Jupiter aggregator artifact that transitively pulls in dependencies on `junit-jupiter-api`, `junit-jupiter-params`, and `junit-jupiter-engine` for simplified dependency management in build tools such as Gradle and Maven. `junit-jupiter-api`:: JUnit Jupiter API for <> and <>. `junit-jupiter-engine`:: JUnit Jupiter test engine implementation; only required at runtime. `junit-jupiter-params`:: Support for <> in JUnit Jupiter. `junit-jupiter-migrationsupport`:: Support for migrating from JUnit 4 to JUnit Jupiter; only required for support for JUnit 4's `@Ignore` annotation and for running selected JUnit 4 rules. [[dependency-metadata-junit-vintage]] ==== JUnit Vintage * *Group ID*: `org.junit.vintage` * *Version*: `{vintage-version}` * *Artifact ID*: `junit-vintage-engine`:: JUnit Vintage test engine implementation that allows one to run _vintage_ JUnit tests on the JUnit Platform. _Vintage_ tests include those written using JUnit 3 or JUnit 4 APIs or tests written using testing frameworks built on those APIs. [[dependency-metadata-junit-bom]] ==== Bill of Materials (BOM) The _Bill of Materials_ POM provided under the following Maven coordinates can be used to ease dependency management when referencing multiple of the above artifacts using https://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html#Importing_Dependencies[Maven] or https://docs.gradle.org/current/userguide/platforms.html#sub:bom_import[Gradle]. * *Group ID*: `org.junit` * *Artifact ID*: `junit-bom` * *Version*: `{bom-version}` [[dependency-metadata-dependencies]] ==== Dependencies Most of the above artifacts have a dependency in their published Maven POMs on the following _@API Guardian_ JAR. * *Group ID*: `org.apiguardian` * *Artifact ID*: `apiguardian-api` * *Version*: `{apiguardian-version}` In addition, most of the above artifacts have a direct or transitive dependency on the following _OpenTest4J_ JAR. * *Group ID*: `org.opentest4j` * *Artifact ID*: `opentest4j` * *Version*: `{ota4j-version}` [[dependency-diagram]] === Dependency Diagram image::{componentDiagramFile}[]