{"id":19968156,"url":"https://github.com/sormuras/junit-platform-maven-plugin","last_synced_at":"2025-04-08T03:10:42.170Z","repository":{"id":33610741,"uuid":"144856516","full_name":"sormuras/junit-platform-maven-plugin","owner":"sormuras","description":"Maven Plugin launching the JUnit Platform","archived":false,"fork":false,"pushed_at":"2024-11-27T10:57:38.000Z","size":669,"stargazers_count":61,"open_issues_count":18,"forks_count":15,"subscribers_count":8,"default_branch":"master","last_synced_at":"2025-03-31T18:19:13.932Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sormuras.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":"sormuras"}},"created_at":"2018-08-15T13:27:26.000Z","updated_at":"2024-11-27T10:50:56.000Z","dependencies_parsed_at":"2022-08-09T03:00:04.138Z","dependency_job_id":"8e04e6a0-be3c-46f1-a61a-5ed2dff0bb6a","html_url":"https://github.com/sormuras/junit-platform-maven-plugin","commit_stats":{"total_commits":491,"total_committers":9,"mean_commits":54.55555555555556,"dds":0.07942973523421593,"last_synced_commit":"e21510b7b79474bbfc04c12bb389e83f22519241"},"previous_names":[],"tags_count":32,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sormuras%2Fjunit-platform-maven-plugin","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sormuras%2Fjunit-platform-maven-plugin/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sormuras%2Fjunit-platform-maven-plugin/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sormuras%2Fjunit-platform-maven-plugin/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sormuras","download_url":"https://codeload.github.com/sormuras/junit-platform-maven-plugin/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247767236,"owners_count":20992548,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-13T02:44:44.258Z","updated_at":"2025-04-08T03:10:42.142Z","avatar_url":"https://github.com/sormuras.png","language":"Java","funding_links":["https://github.com/sponsors/sormuras"],"categories":[],"sub_categories":[],"readme":"# JUnit Platform Maven Plugin\n \n[![jdk8](https://img.shields.io/badge/java-8-lightgray.svg)](http://jdk.java.net/8)\n[![jdk21](https://img.shields.io/badge/java-21-blue.svg)](http://jdk.java.net/21)\n[![CI](https://github.com/sormuras/junit-platform-maven-plugin/workflows/CI/badge.svg)](https://github.com/sormuras/junit-platform-maven-plugin/actions)\n[![stable](https://img.shields.io/badge/api-stable-green.svg)](https://javadoc.io/doc/de.sormuras.junit/junit-platform-maven-plugin)\n[![central](https://img.shields.io/maven-central/v/de.sormuras.junit/junit-platform-maven-plugin.svg)](https://search.maven.org/artifact/de.sormuras.junit/junit-platform-maven-plugin)\n\nMaven Plugin launching the JUnit Platform\n\n## Features\n\n* Utilize JUnit Platform's ability to execute multiple `TestEngine`s natively.\n* Autoload well-known engine implementations at test runtime: users only have to depend on `junit-jupiter-api`, the Jupiter TestEngine is provided.\n* Support in-module and extra-modular testing when writing modularized projects.\n* Most [selectors](https://junit.org/junit5/docs/current/api/org/junit/platform/engine/discovery/package-summary.html) the JUnit Platform offers are supported.\n* Load test, main, and framework/plugin classes in separation via dedicated `ClassLoader` instances using the [JUnit Platform Isolator](https://github.com/sormuras/junit-platform-isolator) library.\n\nThis plugin was presented by [Sander Mak](https://github.com/sandermak) at Devoxx 2018: https://youtu.be/l4Dk7EF-oYc?t=2346\n\n## Prerequisites\n\nUsing this plugin requires at least:\n\n* [Apache Maven 3.3.9](https://maven.apache.org)\n* [Java 8](http://jdk.java.net/8) to run this plugin\n* [Java 21](http://jdk.java.net/21) to build this project\n\n## Simple Usage\n\nThe following sections describe the default and minimal usage pattern of this plugin.\n\n### JUnit Jupiter API\n\nAdd test compile dependencies into your project's `pom.xml`.\nFor example, if you want to write tests using the JUnit Jupiter API, you only need the [`junit-jupiter`](https://junit.org/junit5/docs/current/user-guide/#writing-tests) artifact:\n\n```xml\n\u003cdependencies\u003e\n  \u003cdependency\u003e\n    \u003cgroupId\u003eorg.junit.jupiter\u003c/groupId\u003e\n    \u003cartifactId\u003ejunit-jupiter\u003c/artifactId\u003e\n    \u003cversion\u003e5.10.0\u003c/version\u003e\n    \u003cscope\u003etest\u003c/scope\u003e\n  \u003c/dependency\u003e\n\u003c/dependencies\u003e\n```\n\nConfigure the `junit-platform-maven-plugin` like this in the `\u003cbuild\u003e\u003cplugins\u003e`-section:\n\n```xml\n\u003cplugin\u003e\n  \u003cgroupId\u003ede.sormuras.junit\u003c/groupId\u003e\n  \u003cartifactId\u003ejunit-platform-maven-plugin\u003c/artifactId\u003e\n  \u003cversion\u003e1.1.7\u003c/version\u003e\n  \u003cextensions\u003etrue\u003c/extensions\u003e \u003c!-- Necessary to execute it in 'test' phase. --\u003e\n  \u003cconfiguration\u003e\n    \u003cisolation\u003eNONE\u003c/isolation\u003e \u003c!-- Version 1.0.0 defaults to ABSOLUTE. --\u003e\n  \u003c/configuration\u003e\n\u003c/plugin\u003e\n```\n\nThis minimal configuration uses the _extensions_ facility to:\n\n- ...inject this plugin's `launch` goal into the `test` phase of Maven's lifecycle.\n- ...and also it effectively disables Maven's Surefire plugin by clearing all executions from the `test` phase.\n\n### Pure Maven Plugin Mode\n\nIf you want to execute this plugin side-by-side with Surefire you have two options.\n\nEither use the `\u003cextensions\u003etrue\u003c/extensions\u003e` as described above and also set the following system property to `true`:\n`junit.platform.maven.plugin.surefire.keep.executions`.\n\nOr omit the `\u003cextensions\u003etrue\u003c/extensions\u003e` line (or set it to `false`) and register this plugin's `launch` goal manually to the `test` phase:\n\n```xml\n\u003cplugin\u003e\n  \u003cgroupId\u003ede.sormuras.junit\u003c/groupId\u003e\n  \u003cartifactId\u003ejunit-platform-maven-plugin\u003c/artifactId\u003e\n  \u003cversion\u003e1.1.7\u003c/version\u003e\n  \u003cextensions\u003efalse\u003c/extensions\u003e \u003c!-- Neither install this plugin into `test` phase, nor touch Surefire. --\u003e\n  \u003cexecutions\u003e\n    \u003cexecution\u003e\n      \u003cid\u003eLaunch JUnit Platform\u003c/id\u003e\n      \u003cphase\u003etest\u003c/phase\u003e\n      \u003cgoals\u003e\n        \u003cgoal\u003elaunch\u003c/goal\u003e\n      \u003c/goals\u003e\n      \u003cconfiguration\u003e\n      ...\n      \u003c/configuration\u003e\n    \u003c/execution\u003e\n  \u003c/executions\u003e\n\u003c/plugin\u003e\n```\n\n### Access SNAPSHOT version via JitPack\n\nCurrent `master-SNAPSHOT` version is available via [JitPack](https://jitpack.io/#sormuras/junit-platform-maven-plugin):\n\n```xml\n\u003cproject\u003e\n  \u003cpluginRepositories\u003e\n    \u003cpluginRepository\u003e\n        \u003cid\u003ejitpack.io\u003c/id\u003e\n        \u003curl\u003ehttps://jitpack.io\u003c/url\u003e\n    \u003c/pluginRepository\u003e\n  \u003c/pluginRepositories\u003e\n\n  \u003cdependency\u003e\n    \u003cgroupId\u003ecom.github.sormuras\u003c/groupId\u003e\n    \u003cartifactId\u003ejunit-platform-maven-plugin\u003c/artifactId\u003e\n    \u003cversion\u003emaster-SNAPSHOT\u003c/version\u003e\n  \u003c/dependency\u003e\n\u003c/project\u003e\n```\n\n## JUnit Platform Configuration\n\nThe following sections describe how to pass arguments to the JUnit Platform.\nThe parameters described below are similar to those used by the [Console Launcher](https://junit.org/junit5/docs/current/user-guide/#running-tests-console-launcher) on purpose.\n\n### Class Name Patterns\n\nProvide regular expressions to include only classes whose fully qualified names match.\nTo avoid loading classes unnecessarily, the default pattern only includes class names that begin with `\"Test\"` or end with `\"Test\"` or `\"Tests\"`.\n\nThe configuration below extends the default pattern to include also class names that end with `\"TestCase\"`:\n\n```xml\n\u003cconfiguration\u003e\n  \u003cclassNamePatterns\u003e\n    \u003cpattern\u003e^(Test.*|.+[.$]Test.*|.*Tests?)$\u003c/pattern\u003e\n    \u003cpattern\u003e.*TestCase\u003c/pattern\u003e\n  \u003c/classNamePatterns\u003e\n\u003c/configuration\u003e\n```\n\n### Tags\n\nTags or tag expressions to include only tests whose tags match.\n\nhttps://junit.org/junit5/docs/current/user-guide/#running-tests-tag-expressions\n\n```xml\n\u003cconfiguration\u003e\n  \u003ctags\u003e\n    \u003ctag\u003efoo\u003c/tag\u003e\n    \u003ctag\u003ebar\u003c/tag\u003e\n  \u003c/tags\u003e\n\u003c/configuration\u003e\n```\n\n### Additional Custom Configuration Parameters\n\nhttps://junit.org/junit5/docs/current/user-guide/#running-tests-config-params\n\n```xml\n\u003cconfiguration\u003e\n  \u003cparameters\u003e\n    \u003cjunit.jupiter.execution.parallel.enabled\u003etrue\u003c/junit.jupiter.execution.parallel.enabled\u003e\n    \u003cninety.nine\u003e99\u003c/ninety.nine\u003e\n  \u003c/parameters\u003e\n\u003c/configuration\u003e\n```\n\n### Selectors\n\nhttps://junit.org/junit5/docs/current/api/org/junit/platform/engine/discovery/package-summary.html\n\n```xml\n\u003cconfiguration\u003e\n  \u003cselectors\u003e\n    \u003cclasses\u003e\n      \u003cclass\u003eJupiterTest\u003c/class\u003e\n      \u003cclass\u003eJupiterTests\u003c/class\u003e\n      \u003cclass\u003eTestJupiter\u003c/class\u003e\n    \u003c/classes\u003e\n  \u003c/selectors\u003e\n\u003c/configuration\u003e\n```\n\nAll supported selectors are listed below:\n\n```java\nclass Selectors {\n  Set\u003cString\u003e directories = emptySet();\n  Set\u003cString\u003e files = emptySet();\n\n  Set\u003cString\u003e modules = emptySet();\n  Set\u003cString\u003e packages = emptySet();\n  Set\u003cString\u003e classes = emptySet();\n  Set\u003cString\u003e methods = emptySet();\n\n  Set\u003cString\u003e resources = emptySet();\n\n  Set\u003cURI\u003e uris = emptySet();\n}  \n```\n\n## Plugin Configuration\n\nThe following sections describe how to configure the JUnit Platform Maven Plugin.\n\n### Dry Run\n\nDry-run mode discovers tests but does not execute them.\n\n```xml\n\u003cconfiguration\u003e\n  \u003cdryRun\u003etrue|false\u003c/dryRun\u003e\n\u003c/configuration\u003e\n```\n\nDefaults to `false`.\n\n### Global Timeout\n\nGlobal timeout duration defaults to 300 seconds.\n\n```xml\n\u003cconfiguration\u003e\n  \u003ctimeout\u003e300\u003c/timeout\u003e\n\u003c/configuration\u003e\n```\n\n### Execution Progress\n\nDuration between output and error log file sizes during execution (JAVA execution mode only). Defaults to 60 seconds.\n\n```xml\n\u003cconfiguration\u003e\n  \u003cexecutionProgress\u003e60\u003c/executionProgress\u003e\n\u003c/configuration\u003e\n```\n\n### Log Charset\n\nCharset format for the output and error log files. Defaults to `Charset.defaultCharset()` for JDK 17 and lower, `System.getProperty(\"native.encoding\")` for JDK 18 and higher.\n\n```xml\n\u003cconfiguration\u003e\n  \u003ccharset\u003eUTF-8\u003c/charset\u003e\n\u003c/configuration\u003e\n```\n\n### Isolation Level\n\n`ClassLoader` hierarchy configuration.\n\n```xml\n\u003cconfiguration\u003e\n  \u003cisolation\u003eABSOLUTE|ALMOST|MERGED|NONE\u003c/isolation\u003e\n\u003c/configuration\u003e\n```\n\nDefaults to `NONE`.\n\n#### Isolation: ABSOLUTE\n\nTotal isolation.\n\n```text\n MAIN\n   - target/classes\n   - main dependencies...\n TEST\n   - target/test-classes\n   - test dependencies...\n JUNIT PLATFORM\n   - junit-platform-launcher\n   - junit-jupiter-engine\n   - junit-vintage-engine\n   - more runtime-only test engines...\n ISOLATOR\n   - junit-platform-isolator\n   - junit-platform-isolator-worker\n```\n\n#### Isolation: ALMOST\n\nAlmost total isolation - main and test classes are put into the same layer.\n\n```text\n MAIN\n   - main dependencies...\n TEST\n   - target/classes\n   - target/test-classes\n   - test dependencies...\n JUNIT PLATFORM\n   - junit-platform-launcher\n   - junit-jupiter-engine\n   - junit-vintage-engine\n   - more runtime-only test engines...\n ISOLATOR\n   - junit-platform-isolator\n   - junit-platform-isolator-worker\n```\n\n#### Isolation: MERGED\n\nMerge main and test layers.\n\n```text\n MERGED (TEST + MAIN)\n   - target/test-classes\n   - test dependencies...\n   - target/classes\n   - main dependencies...\n JUNIT PLATFORM\n   - junit-platform-launcher\n   - junit-jupiter-engine\n   - junit-vintage-engine\n   - more runtime-only test engines...\n ISOLATOR\n   - junit-platform-isolator\n   - junit-platform-isolator-worker\n```\n\n#### Isolation: NONE\n\nNo isolation, all dependencies are put into a single layer.\n\n```text\n ALL\n   - target/classes\n   - main dependencies...\n   - target/test-classes\n   - test dependencies...\n   - junit-platform-launcher\n   - junit-jupiter-engine\n   - junit-vintage-engine\n   - more runtime-only test engines...\n   - junit-platform-isolator\n   - junit-platform-isolator-worker\n```\n\n### Executor\n\nThe JUnit Platform Maven Plugin supports two modes of execution: DIRECT and JAVA.\n\n```xml\n\u003cconfiguration\u003e\n  \u003cexecutor\u003eDIRECT|JAVA\u003c/executor\u003e\n\u003c/configuration\u003e\n```\n\nDIRECT is the default execution mode.\n\n#### Executor: DIRECT\n\nLaunch the JUnit Platform Launcher \"in-process\".\nDirect execution doesn't support any special options - it inherits all Java-related settings from Maven's Plugin execution \"sandbox\".\n\n#### Executor: JAVA\n\nFork new a JVM calling `java` via Java's Process API and launch the JUnit Platform Console Launcher.\n\n```java\nclass JavaOptions {\n  /**\n   * This is the path to the {@code java} executable.\n   *\n   * \u003cp\u003eWhen this parameter is not set or empty, the plugin attempts to load a {@code jdk} toolchain\n   * and use it to find the {@code java} executable. If no {@code jdk} toolchain is defined in the\n   * project, the {@code java} executable is determined by the current {@code java.home} system\n   * property, extended to {@code ${java.home}/bin/java[.exe]}.\n   */\n  String executable = \"\";\n\n  /** Passed as {@code -Dfile.encoding=${encoding}, defaults to {@code UTF-8}. */\n  String encoding = \"UTF-8\";\n\n  /** Play nice with calling process. */\n  boolean inheritIO = false;\n\n  /** Override \u003cstrong\u003eall\u003c/strong\u003e Java command line options. */\n  List\u003cString\u003e overrideJavaOptions = emptyList();\n\n  /** Override \u003cstrong\u003eall\u003c/strong\u003e JUnit Platform Console Launcher options. */\n  List\u003cString\u003e overrideLauncherOptions = emptyList();\n\n  /** Additional Java command line options prepended to auto-generated options. */\n  List\u003cString\u003e additionalOptions = emptyList();\n\n  /** Argument for the {@code --add-modules} options: like {@code ALL-MODULE-PATH,ALL-DEFAULT}. */\n  String addModulesArgument = \"\";\n}\n```\n\nExample\n\n```xml\n\u003cconfiguration\u003e\n  \u003cexecutor\u003eJAVA\u003c/executor\u003e\n  \u003cjavaOptions\u003e\n    \u003cinheritIO\u003etrue\u003c/inheritIO\u003e\n    \u003cadditionalOptions\u003e\n      \u003cadditionalOption\u003e--show-version\u003c/additionalOption\u003e\n      \u003cadditionalOption\u003e--show-module-resolution\u003c/additionalOption\u003e\n    \u003c/additionalOptions\u003e\n  \u003c/javaOptions\u003e\n\u003c/configuration\u003e\n```\n\n## Plugin Configuration Tweaks\n\nTweak options to fine-tune test execution.\n\n```java\nclass Tweaks {\n  /** Fail test run if no tests are found. */\n  boolean failIfNoTests = true;\n\n  /** Enable execution of Java language's {@code assert} statements. */\n  boolean defaultAssertionStatus = true;\n\n  /** Use platform or thread context classloader. */\n  boolean platformClassLoader = true;\n\n  /** Move any test engine implementations to the launcher classloader. */\n  boolean moveTestEnginesToLauncherClassLoader = true;\n\n  /** Fail if worker is not loaded in isolation. */\n  boolean workerIsolationRequired = true;\n\n  /** A missing test output directory and no explicit selector configured: skip execution. */\n  boolean skipOnMissingTestOutputDirectory = true;\n\n  /** Force ansi to be disabled for java executions. */\n  boolean disableAnsi = false;\n\n  /** List of additional raw (local) test path elements. */\n  List\u003cString\u003e additionalTestPathElements = emptyList();\n\n  /** List of additional raw (local) launcher path elements. */\n  List\u003cString\u003e additionalLauncherPathElements = emptyList();\n\n  /** List of {@code group:artifact} dependencies to exclude from all path sets. */\n  List\u003cString\u003e dependencyExcludes = emptyList();\n\n  /** List of {@code group:artifact:version} dependencies to include in test path set. */\n  List\u003cString\u003e additionalTestDependencies = emptyList();\n\n  /** List of {@code group:artifact:version} dependencies to include in launcher path set. */\n  List\u003cString\u003e additionalLauncherDependencies = emptyList();\n}\n```\n\n### Error \"No tests found.\"\n\nIf the plugin reports \"No tests found.\" it may be due to:\n\n- no tests are declared in `src/test/...` or they are invalid,\n- discovery selectors (module, package, class, method, uri, ...) did not select a single container/test,\n- discovery filters (engine, class, method, tag expressions, ...) did not match a single container/test,\n- or some other environment or system condition that prevented any test to be found.\n\nPossible solutions:\n- Create tests below `src/test/...` - it is easy and fun!\n- If your `src/test` directory is empty, delete it. The plugin auto-skip test execution if there's no `src/test` directory.\n- Tweak the plugin configuration not to fail on no tests found:\n\n```xml\n\u003cconfiguration\u003e\n  \u003ctweaks\u003e\n    \u003cfailIfNoTests\u003efalse\u003c/failIfNoTests\u003e\n  \u003c/tweaks\u003e\n\u003c/configuration\u003e\n```\n\n## Modular Testing\n\nhttps://sormuras.github.io/blog/2018-09-11-testing-in-the-modular-world.html\n\n### Modular Test Mode\n\nA test mode is defined by the relation of one **main** and one **test** module name.\n\n- `C` = `CLASSIC` -\u003e no modules available\n- `M` = `MODULAR` -\u003e main `module foo` and test `module bar` OR main lacks module and test `module any`\n- `A` = `MODULAR_PATCHED_TEST_COMPILE` -\u003e main `module foo` and test `module foo`\n- `B` = `MODULAR_PATCHED_TEST_RUNTIME` -\u003e main `module foo` and test lacks module\n\n```text\n                          main plain    main module   main module\n                             ---            foo           bar\n     test plain  ---          C              B             B\n     test module foo          M              A             M\n     test module bar          M              M             A\n```\n\nCopied from [junit-platform-isolator/.../TestMode.java](https://github.com/sormuras/junit-platform-isolator/blob/master/junit-platform-isolator-base-8/src/main/java/de/sormuras/junit/platform/isolator/TestMode.java)\n\n```java\nclass TestMode {\n  static TestMode of(String main, String test) {\n    var mainAbsent = main == null || main.trim().isEmpty();\n    var testAbsent = test == null || test.trim().isEmpty();\n    if (mainAbsent) {\n      if (testAbsent) { // trivial case: no modules declared at all\n        return CLASSIC;\n      }\n      return MODULAR; // only test module is present, no patching involved\n    }\n    if (testAbsent) { // only main module is present\n      return MODULAR_PATCHED_TEST_RUNTIME;\n    }\n    if (main.equals(test)) { // same module name\n      return MODULAR_PATCHED_TEST_COMPILE;\n    }\n    return MODULAR; // bi-modular testing, no patching involved\n  }\n}\n```\n\n### `module-info.test` support\n\nThis plugin also integrates additional compiler flags specified in a `module-info.test` file.\nFor example, if your tests need to access types from a module shipping with the JDK (here: `java.scripting`).\nNote that each non-comment line represents a single argument that is passed to the compiler as an option.\n\n```text\n// Make module visible.\n--add-modules\n  java.scripting\n\n// Same as \"requires java.scripting\" in a regular module descriptor.\n--add-reads\n  greeter.provider=java.scripting\n```\n\nSee `src/it/modular-world-2-main-module-test-plain` for details.\n\n## Contribution Policy\n\nContributions via GitHub pull requests are gladly accepted from their original author.\nAlong with any pull requests, please state that the contribution is your original work and that you license the work to the project under the project's open source license.\nWhether or not you state this explicitly, by submitting any copyrighted material via pull request, email, or other means you agree to license the material under the project's open source license and warrant that you have the legal authority to do so.\n\n## License\n\nThis code is open source software licensed under the [Apache 2.0 License](https://www.apache.org/licenses/LICENSE-2.0.html).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsormuras%2Fjunit-platform-maven-plugin","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsormuras%2Fjunit-platform-maven-plugin","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsormuras%2Fjunit-platform-maven-plugin/lists"}