You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by gn...@apache.org on 2026/06/19 09:03:59 UTC

(maven) branch master updated: Migrate integration tests to NIO2 Path API (#11364)

This is an automated email from the ASF dual-hosted git repository.

gnodet pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/maven.git


The following commit(s) were added to refs/heads/master by this push:
     new bfc30f1fa8 Migrate integration tests to NIO2 Path API (#11364)
bfc30f1fa8 is described below

commit bfc30f1fa89741fdafdfa26725b5e0795a619708
Author: Guillaume Nodet <gn...@gmail.com>
AuthorDate: Fri Jun 19 11:03:53 2026 +0200

    Migrate integration tests to NIO2 Path API (#11364)
    
    Migrate Maven Integration Tests from java.io.File to NIO2
    java.nio.file.Path API, making Path-based methods the primary API
    while maintaining familiar method names.
    
    Infrastructure:
    - Verifier: Path-based overloads, NIO2 file operations, custom
      deleteDirectoryRecursively using Files.walk(), InvalidPathException
      fallback to File API for Windows trailing-space paths
    - AbstractMavenIntegrationTestCase: extractResources() returns Path,
      strips leading '/' for correct Path.resolve() behavior
    - ItUtils: centralized FileUtils wrappers (copyDirectoryStructure,
      deleteDirectory, createFile, lastModified)
    - HttpServer: source(Path) overload for file-based serving
    
    Test migration:
    - 735+ integration test files migrated to Path-based API
    - File -> Path, new File(dir, sub) -> dir.resolve(sub)
    - getAbsolutePath() -> toString(), FileReader -> Files.newBufferedReader
    - Files.deleteIfExists() where old File.delete() was lenient
    - Platform-specific fixes: Windows drive-relative paths (File.separator
      prefix for subpath), Unix Path.subpath() skip
    
    New tests:
    - VerifierNIO2Test, NIO2MigrationVerificationTest,
      AbstractMavenIntegrationTestCaseNIO2Test
    
    Co-authored-by: Claude Opus 4.6 <no...@anthropic.com>
---
 its/core-it-suite/pom.xml                          |   6 +
 .../test/java/org/apache/maven/it/HttpServer.java  |  18 +-
 .../src/test/java/org/apache/maven/it/ItUtils.java |  60 ++--
 .../maven/it/MavenIT0008SimplePluginTest.java      |   6 +-
 .../maven/it/MavenIT0009GoalConfigurationTest.java |   6 +-
 ...MavenIT0010DependencyClosureResolutionTest.java |   6 +-
 ...11DefaultVersionByDependencyManagementTest.java |   7 +-
 .../maven/it/MavenIT0012PomInterpolationTest.java  |   6 +-
 .../it/MavenIT0018DependencyManagementTest.java    |   6 +-
 ...MavenIT0019PluginVersionMgmtBySuperPomTest.java |   6 +-
 .../apache/maven/it/MavenIT0021PomProfileTest.java |   6 +-
 .../maven/it/MavenIT0023SettingsProfileTest.java   |   6 +-
 .../it/MavenIT0024MultipleGoalExecutionsTest.java  |   6 +-
 ...venIT0025MultipleExecutionLevelConfigsTest.java |   6 +-
 .../MavenIT0030DepPomDepMgmtInheritanceTest.java   |   6 +-
 .../maven/it/MavenIT0032MavenPrerequisiteTest.java |   6 +-
 .../it/MavenIT0037AlternatePomFileSameDirTest.java |   6 +-
 ...avenIT0038AlternatePomFileDifferentDirTest.java |   6 +-
 ...avenIT0040PackagingFromPluginExtensionTest.java |   6 +-
 ...nIT0041ArtifactTypeFromPluginExtensionTest.java |   6 +-
 .../maven/it/MavenIT0051ReleaseProfileTest.java    |   6 +-
 .../maven/it/MavenIT0052ReleaseProfileTest.java    |   6 +-
 .../it/MavenIT0056MultipleGoalExecutionsTest.java  |   6 +-
 .../it/MavenIT0063SystemScopeDependencyTest.java   |  15 +-
 .../it/MavenIT0064MojoConfigViaSettersTest.java    |   8 +-
 ...enIT0071PluginConfigWithDottedPropertyTest.java |   6 +-
 ...nIT0072InterpolationWithDottedPropertyTest.java |   6 +-
 .../it/MavenIT0085TransitiveSystemScopeTest.java   |   8 +-
 .../maven/it/MavenIT0086PluginRealmTest.java       |   6 +-
 ...nIT0087PluginRealmWithProjectLevelDepsTest.java |   6 +-
 .../it/MavenIT0090EnvVarInterpolationTest.java     |   6 +-
 .../maven/it/MavenIT0108SnapshotUpdateTest.java    |  96 +++--
 ...ServerAuthzAvailableToWagonMgrInPluginTest.java |   6 +-
 .../maven/it/MavenIT0130CleanLifecycleTest.java    |   6 +-
 .../maven/it/MavenIT0131SiteLifecycleTest.java     |   6 +-
 .../maven/it/MavenIT0132PomLifecycleTest.java      |   6 +-
 .../maven/it/MavenIT0133JarLifecycleTest.java      |   6 +-
 .../maven/it/MavenIT0134WarLifecycleTest.java      |   6 +-
 .../maven/it/MavenIT0135EjbLifecycleTest.java      |   6 +-
 .../maven/it/MavenIT0136RarLifecycleTest.java      |   6 +-
 .../maven/it/MavenIT0137EarLifecycleTest.java      |   6 +-
 .../maven/it/MavenIT0138PluginLifecycleTest.java   |   6 +-
 ...enIT0139InterpolationWithProjectPrefixTest.java |  11 +-
 .../MavenIT0140InterpolationWithPomPrefixTest.java |  11 +-
 .../it/MavenIT0142DirectDependencyScopesTest.java  |   6 +-
 .../MavenIT0143TransitiveDependencyScopesTest.java |   6 +-
 .../it/MavenIT0144LifecycleExecutionOrderTest.java |   6 +-
 .../it/MavenIT0146InstallerSnapshotNaming.java     |  15 +-
 .../maven/it/MavenIT0199CyclicImportScopeTest.java |   7 +-
 .../org/apache/maven/it/MavenITBootstrapTest.java  |   6 +-
 .../MavenITConsumerPomBomFromSettingsRepoTest.java |   6 +-
 .../maven/it/MavenITMissingNamespaceTest.java      |   7 +-
 .../it/MavenITgh10210SettingsXmlDecryptTest.java   |  17 +-
 ...10312TerminallyDeprecatedMethodInGuiceTest.java |  15 +-
 .../MavenITgh10937QuotedPipesInMavenOptsTest.java  |   4 +-
 .../it/MavenITgh11055DIServiceInjectionTest.java   |   6 +-
 ...Tgh11084ReactorReaderPreferConsumerPomTest.java |   8 +-
 .../it/MavenITgh11140RepoDmUnresolvedTest.java     |   6 +-
 .../it/MavenITgh11140RepoInterpolationTest.java    |  13 +-
 .../it/MavenITgh11162ConsumerPomScopesTest.java    |   4 +-
 ...venITgh11181CoreExtensionsMetaVersionsTest.java |  24 +-
 .../it/MavenITgh11196CIFriendlyProfilesTest.java   |  10 +-
 ...Tgh11280DuplicateDependencyConsumerPomTest.java |   7 +-
 .../it/MavenITgh11314PluginInjectionTest.java      |  15 +-
 .../org/apache/maven/it/MavenITgh11321Test.java    |   8 +-
 ...nITgh11346DependencyManagementOverrideTest.java |  11 +-
 ...enITgh11356InvalidTransitiveRepositoryTest.java |   6 +-
 .../MavenITgh11363PipeSymbolsInJvmConfigTest.java  |   6 +-
 .../MavenITgh11378SealedParameterConfigTest.java   |  12 +-
 .../it/MavenITgh11381ResourceTargetPathTest.java   |   7 +-
 ...venITgh11384RecursiveVariableReferenceTest.java |   4 +-
 ...MavenITgh11399FlattenPluginParentCycleTest.java |   7 +-
 .../maven/it/MavenITgh11409ProfileSourceTest.java  |   6 +-
 .../maven/it/MavenITgh11427BomConsumerPomTest.java |  21 +-
 .../it/MavenITgh11456MixinsConsumerPomTest.java    |  12 +-
 .../it/MavenITgh11485AtSignInJvmConfigTest.java    |  18 +-
 .../MavenITgh11715EffectivePomNamespaceTest.java   |   4 +-
 .../maven/it/MavenITgh11772ConsumerPom410Test.java |  13 +-
 ...nITgh11798ConsumerPomProfileActivationTest.java |   4 +-
 .../it/MavenITgh11978PlaceholderInCliArgTest.java  |   6 +-
 .../MavenITgh12184CIFriendlyParentVersionTest.java |  10 +-
 ...gh12288SettingsProfileAetherPropertiesTest.java |  42 ++-
 ...ollectRequestUninterpolatedManagedDepsTest.java |   6 +-
 ...h2532DuplicateDependencyEffectiveModelTest.java |   7 +-
 .../maven/it/MavenITgh2576ItrNotHonoredTest.java   |  12 +-
 .../MavenITmng0095ReactorFailureBehaviorTest.java  |  14 +-
 .../it/MavenITmng0187CollectedProjectsTest.java    |   6 +-
 .../MavenITmng0249ResolveDepsFromReactorTest.java  |   6 +-
 ...82NonReactorExecWhenProjectIndependentTest.java |   8 +-
 ...venITmng0294MergeGlobalAndUserSettingsTest.java |   7 +-
 .../MavenITmng0377PluginLookupFromPrefixTest.java  |   6 +-
 .../MavenITmng0449PluginVersionResolutionTest.java |  14 +-
 ...nITmng0461TolerateMissingDependencyPomTest.java |   6 +-
 .../maven/it/MavenITmng0469ReportConfigTest.java   |  10 +-
 .../it/MavenITmng0471CustomLifecycleTest.java      |   6 +-
 .../it/MavenITmng0479OverrideCentralRepoTest.java  |  23 +-
 ...ITmng0496IgnoreUnknownPluginParametersTest.java |   6 +-
 .../maven/it/MavenITmng0505VersionRangeTest.java   |   6 +-
 .../it/MavenITmng0507ArtifactRelocationTest.java   |   6 +-
 ...avenITmng0522InheritedPluginMgmtConfigTest.java |   6 +-
 .../MavenITmng0553SettingsAuthzEncryptionTest.java |  33 +-
 .../MavenITmng0557UserSettingsCliOptionTest.java   |   6 +-
 .../MavenITmng0612NewestConflictResolverTest.java  |  14 +-
 .../it/MavenITmng0666IgnoreLegacyPomTest.java      |   6 +-
 .../it/MavenITmng0674PluginParameterAliasTest.java |  10 +-
 .../maven/it/MavenITmng0680ParentBasedirTest.java  |  15 +-
 .../MavenITmng0761MissingSnapshotDistRepoTest.java |   6 +-
 .../maven/it/MavenITmng0768OfflineModeTest.java    |  10 +-
 ...mng0773SettingsProfileReactorPollutionTest.java |   6 +-
 ...MavenITmng0781PluginConfigVsExecConfigTest.java |   6 +-
 .../it/MavenITmng0786ProfileAwareReactorTest.java  |   6 +-
 ...avenITmng0814ExplicitProfileActivationTest.java |   6 +-
 .../it/MavenITmng0818WarDepsNotTransitiveTest.java |   6 +-
 .../it/MavenITmng0820ConflictResolutionTest.java   |   6 +-
 .../it/MavenITmng0823MojoContextPassingTest.java   |   8 +-
 ...avenITmng0828PluginConfigValuesInDebugTest.java |  13 +-
 .../MavenITmng0836PluginParentResolutionTest.java  |   6 +-
 ...g0848UserPropertyOverridesDefaultValueTest.java |   6 +-
 .../it/MavenITmng0866EvaluateDefaultValueTest.java |   6 +-
 ...enITmng0870ReactorAwarePluginDiscoveryTest.java |   6 +-
 .../it/MavenITmng0947OptionalDependencyTest.java   |   6 +-
 ...onentInjectionViaProjectLevelPluginDepTest.java |   6 +-
 ...venITmng0985NonExecutedPluginMgmtGoalsTest.java |   6 +-
 ...venITmng1021EqualAttachmentBuildNumberTest.java |  32 +-
 .../it/MavenITmng1052PluginMgmtConfigTest.java     |   6 +-
 .../MavenITmng1073AggregatorForksReactorTest.java  |  10 +-
 .../MavenITmng1088ReactorPluginResolutionTest.java |   6 +-
 ...Tmng11009StackOverflowParentResolutionTest.java |   6 +-
 .../it/MavenITmng11133MixinsPrecedenceTest.java    |   8 +-
 ...MavenITmng1142VersionRangeIntersectionTest.java |   6 +-
 .../it/MavenITmng1144MultipleDefaultGoalsTest.java |   6 +-
 ...mng11796DefaultPhasesStandardLifecycleTest.java |   8 +-
 .../MavenITmng1233WarDepWithProvidedScopeTest.java |   6 +-
 .../it/MavenITmng1323AntrunDependenciesTest.java   |   6 +-
 .../it/MavenITmng1349ChecksumFormatsTest.java      |   6 +-
 .../it/MavenITmng1412DependenciesOrderTest.java    |   6 +-
 .../MavenITmng1415QuotedSystemPropertiesTest.java  |   6 +-
 ...venITmng1491ReactorArtifactIdCollisionTest.java |   6 +-
 ...avenITmng1493NonStandardModulePomNamesTest.java |   6 +-
 .../it/MavenITmng1701DuplicatePluginTest.java      |   6 +-
 ...MavenITmng1703PluginMgmtDepInheritanceTest.java |   7 +-
 ...51ForcedMetadataUpdateDuringDeploymentTest.java |  19 +-
 ...03PomValidationErrorIncludesLineNumberTest.java |   6 +-
 .../MavenITmng1895ScopeConflictResolutionTest.java |  10 +-
 ...ITmng1957JdkActivationWithVersionRangeTest.java |   6 +-
 ...venITmng1992SystemPropOverridesPomPropTest.java |   6 +-
 ...mng1995InterpolateBooleanModelElementsTest.java |   6 +-
 ...nITmng2006ChildPathAwareUrlInheritanceTest.java |   7 +-
 ...2045testJarDependenciesBrokenInReactorTest.java |   6 +-
 ...terpolateWithSettingsProfilePropertiesTest.java |   6 +-
 ...venITmng2054PluginExecutionInheritanceTest.java |   6 +-
 .../MavenITmng2068ReactorRelativeParentsTest.java  |  21 +-
 ...2098VersionRangeSatisfiedFromWrongRepoTest.java |   6 +-
 ...venITmng2103PluginExecutionInheritanceTest.java |   6 +-
 .../MavenITmng2123VersionRangeDependencyTest.java  |   6 +-
 ...ng2124PomInterpolationWithParentValuesTest.java |   8 +-
 ...nITmng2130ParentLookupFromReactorCacheTest.java |   6 +-
 .../it/MavenITmng2135PluginBuildInReactorTest.java |   6 +-
 .../MavenITmng2136ActiveByDefaultProfileTest.java  |   9 +-
 ...g2140ReactorAwareDepResolutionWhenForkTest.java |   6 +-
 ...ng2174PluginDepsManagedByParentProfileTest.java |   6 +-
 .../it/MavenITmng2196ParentResolutionTest.java     |   6 +-
 .../it/MavenITmng2199ParentVersionRangeTest.java   |  62 ++--
 ...avenITmng2201PluginConfigInterpolationTest.java |  21 +-
 ...ng2222OutputDirectoryReactorResolutionTest.java |   6 +-
 .../it/MavenITmng2228ComponentInjectionTest.java   |   6 +-
 ...venITmng2234ActiveProfilesFromSettingsTest.java |   6 +-
 .../maven/it/MavenITmng2254PomEncodingTest.java    |   6 +-
 ...276ProfileActivationBySettingsPropertyTest.java |  10 +-
 ...Tmng2277AggregatorAndResolutionPluginsTest.java |   6 +-
 .../it/MavenITmng2305MultipleProxiesTest.java      |  18 +-
 .../MavenITmng2309ProfileInjectionOrderTest.java   |   6 +-
 .../MavenITmng2318LocalParentResolutionTest.java   |   6 +-
 .../MavenITmng2339BadProjectInterpolationTest.java |  18 +-
 .../it/MavenITmng2362DeployedPomEncodingTest.java  |  27 +-
 ...avenITmng2363BasedirAwareFileActivatorTest.java |   6 +-
 .../maven/it/MavenITmng2387InactiveProxyTest.java  |  13 +-
 .../it/MavenITmng2432PluginPrefixOrderTest.java    |   6 +-
 ...estampedDependencyVersionInterpolationTest.java |  12 +-
 .../maven/it/MavenITmng2562Timestamp322Test.java   |  14 +-
 .../it/MavenITmng2576MakeLikeReactorTest.java      |  38 +-
 ...MavenITmng2577SettingsXmlInterpolationTest.java |  13 +-
 ...venITmng2591MergeInheritedPluginConfigTest.java |   6 +-
 .../MavenITmng2605BogusProfileActivationTest.java  |   6 +-
 ...mng2668UsePluginDependenciesForSortingTest.java |   6 +-
 .../it/MavenITmng2690MojoLoadingErrorsTest.java    |  28 +-
 .../it/MavenITmng2693SitePluginRealmTest.java      |   6 +-
 .../MavenITmng2695OfflinePluginSnapshotsTest.java  |   8 +-
 ...avenITmng2720SiblingClasspathArtifactsTest.java |   6 +-
 ...Tmng2738ProfileIdCollidesWithCliOptionTest.java |   6 +-
 ...venITmng2739RequiredRepositoryElementsTest.java |  18 +-
 ...41PluginMetadataResolutionErrorMessageTest.java |   6 +-
 .../it/MavenITmng2744checksumVerificationTest.java |   6 +-
 ...venITmng2749ExtensionAvailableToPluginTest.java |   6 +-
 ...ITmng2771PomExtensionComponentOverrideTest.java |  14 +-
 .../it/MavenITmng2790LastUpdatedMetadataTest.java  |  21 +-
 .../maven/it/MavenITmng2820PomCommentsTest.java    |  15 +-
 ...ustomArtifactHandlerAndCustomLifecycleTest.java |   6 +-
 ...mng2843PluginConfigPropertiesInjectionTest.java |   8 +-
 ...ProfileActivationByEnvironmentVariableTest.java |   6 +-
 .../it/MavenITmng2861RelocationsAndRangesTest.java |   6 +-
 .../maven/it/MavenITmng2865MirrorWildcardTest.java |   6 +-
 ...mng2871PrePackageSubartifactResolutionTest.java |  13 +-
 .../it/MavenITmng2892HideCorePlexusUtilsTest.java  |   6 +-
 .../MavenITmng2921ActiveAttachedArtifactsTest.java |   6 +-
 .../it/MavenITmng2926PluginPrefixOrderTest.java    |  26 +-
 ...MavenITmng2972OverridePluginDependencyTest.java |  10 +-
 .../MavenITmng2994SnapshotRangeRepositoryTest.java |   6 +-
 ...004ReactorFailureBehaviorMultithreadedTest.java |  22 +-
 .../it/MavenITmng3012CoreClassImportTest.java      |   6 +-
 ...enITmng3023ReactorDependencyResolutionTest.java |  18 +-
 .../MavenITmng3038TransitiveDepManVersionTest.java |  15 +-
 ...enITmng3043BestEffortReactorResolutionTest.java |  19 +-
 .../it/MavenITmng3052DepRepoAggregationTest.java   |   7 +-
 ...g3092SnapshotsExcludedFromVersionRangeTest.java |   6 +-
 ...avenITmng3099SettingsProfilesWithNoPomTest.java |   6 +-
 .../it/MavenITmng3118TestClassPathOrderTest.java   |   6 +-
 ...venITmng3122ActiveProfilesNoDuplicatesTest.java |   6 +-
 ...UrlNormalizationNotBeforeInterpolationTest.java |   6 +-
 ...3139UseCachedMetadataOfBlacklistedRepoTest.java |   8 +-
 .../maven/it/MavenITmng3183LoggingToFileTest.java  |  14 +-
 .../MavenITmng3203DefaultLifecycleExecIdTest.java  |   6 +-
 ...venITmng3208ProfileAwareReactorSortingTest.java |   6 +-
 .../MavenITmng3217InterPluginDependencyTest.java   |   6 +-
 .../maven/it/MavenITmng3220ImportScopeTest.java    |  16 +-
 ...ITmng3259DepsDroppedInMultiModuleBuildTest.java |   8 +-
 ...venITmng3268MultipleHyphenPCommandLineTest.java |   6 +-
 .../it/MavenITmng3284UsingCachedPluginsTest.java   |   8 +-
 .../maven/it/MavenITmng3288SystemScopeDirTest.java |   6 +-
 ...enITmng3297DependenciesNotLeakedToMojoTest.java |   6 +-
 .../it/MavenITmng3314OfflineSnapshotsTest.java     |   8 +-
 .../MavenITmng3331ModulePathNormalizationTest.java |  10 +-
 ...enITmng3355TranslatedPathInterpolationTest.java |   6 +-
 ...avenITmng3372DirectInvocationOfPluginsTest.java |  21 +-
 ...avenITmng3379ParallelArtifactDownloadsTest.java |  20 +-
 ...avenITmng3380ManagedRelocatedTransdepsTest.java |   6 +-
 ...avenITmng3394POMPluginVersionDominanceTest.java |  13 +-
 ...encyManagementForOverConstrainedRangesTest.java |  13 +-
 .../it/MavenITmng3401CLIDefaultExecIdTest.java     |   6 +-
 .../MavenITmng3415JunkRepositoryMetadataTest.java  |  56 ++-
 ...avenITmng3422ActiveComponentCollectionTest.java |   6 +-
 ...etadataUpdatedFromDeploymentRepositoryTest.java |  27 +-
 .../maven/it/MavenITmng3461MirrorMatchingTest.java |  14 +-
 ...ictChecksumVerificationOfDependencyPomTest.java |   6 +-
 .../maven/it/MavenITmng3475BaseAlignedDirTest.java |  13 +-
 ...ng3477DependencyResolutionErrorMessageTest.java |   6 +-
 ...venITmng3482DependencyPomInterpolationTest.java |   6 +-
 .../MavenITmng3485OverrideWagonExtensionTest.java  |   6 +-
 .../it/MavenITmng3498ForkToOtherMojoTest.java      |  12 +-
 .../maven/it/MavenITmng3503Xpp3ShadingTest.java    |  19 +-
 ...enITmng3506ArtifactHandlersFromPluginsTest.java |  30 +-
 .../maven/it/MavenITmng3529QuotedCliArgTest.java   |   6 +-
 ...avenITmng3535SelfReferentialPropertiesTest.java |  10 +-
 .../MavenITmng3536AppendedAbsolutePathsTest.java   |  12 +-
 .../it/MavenITmng3545ProfileDeactivationTest.java  |  26 +-
 .../it/MavenITmng3558PropertyEscapingTest.java     |   6 +-
 ...5HexadecimalOctalPluginParameterConfigTest.java |   6 +-
 ...avenITmng3581PluginUsesWagonDependencyTest.java |   6 +-
 ...enITmng3586SystemScopePluginDependencyTest.java |  14 +-
 ...MavenITmng3599useHttpProxyForWebDAVMk2Test.java |  28 +-
 .../MavenITmng3600DeploymentModeDefaultsTest.java  |  22 +-
 ...MavenITmng3607ClassLoadersUseValidUrlsTest.java |   8 +-
 .../it/MavenITmng3621UNCInheritedPathsTest.java    |   6 +-
 ...MavenITmng3641ProfileActivationWarningTest.java |  16 +-
 .../it/MavenITmng3642DynamicResourcesTest.java     |  16 +-
 .../maven/it/MavenITmng3645POMSyntaxErrorTest.java |   6 +-
 .../it/MavenITmng3652UserAgentHeaderTest.java      |  77 ++--
 ...nITmng3667ResolveDepsWithBadPomVersionTest.java |   6 +-
 ...enITmng3671PluginLevelDepInterpolationTest.java |   6 +-
 ...avenITmng3679PluginExecIdInterpolationTest.java |   6 +-
 .../it/MavenITmng3680InvalidDependencyPOMTest.java |   6 +-
 .../it/MavenITmng3684BuildPluginParameterTest.java |  12 +-
 .../it/MavenITmng3693PomFileBasedirChangeTest.java |  21 +-
 .../MavenITmng3694ReactorProjectsDynamismTest.java |  12 +-
 .../it/MavenITmng3701ImplicitProfileIdTest.java    |   6 +-
 ...g3703ExecutionProjectWithRelativePathsTest.java |  22 +-
 .../MavenITmng3710PollutedClonedPluginsTest.java   |  40 +--
 .../it/MavenITmng3714ToolchainsCliOptionTest.java  |  22 +-
 .../it/MavenITmng3716AggregatorForkingTest.java    |  13 +-
 .../it/MavenITmng3719PomExecutionOrderingTest.java |   6 +-
 .../MavenITmng3723ConcreteParentProjectTest.java   |  12 +-
 .../it/MavenITmng3724ExecutionProjectSyncTest.java |  12 +-
 .../it/MavenITmng3729MultiForkAggregatorsTest.java |  12 +-
 .../maven/it/MavenITmng3732ActiveProfilesTest.java |   6 +-
 ...Tmng3740SelfReferentialReactorProjectsTest.java |  12 +-
 .../it/MavenITmng3746POMPropertyOverrideTest.java  |  22 +-
 .../MavenITmng3747PrefixedPathExpressionTest.java  |   8 +-
 .../maven/it/MavenITmng3748BadSettingsXmlTest.java |   6 +-
 .../MavenITmng3766ToolchainsFromExtensionTest.java |   6 +-
 ...enITmng3769ExclusionRelocatedTransdepsTest.java |   6 +-
 ...Tmng3775ConflictResolutionBacktrackingTest.java |   7 +-
 ...MavenITmng3796ClassImportInconsistencyTest.java |   6 +-
 ...venITmng3805ExtensionClassPathOrderingTest.java |   6 +-
 ...ng3807PluginConfigExpressionEvaluationTest.java |   6 +-
 ...avenITmng3808ReportInheritanceOrderingTest.java |   8 +-
 .../it/MavenITmng3810BadProfileActivationTest.java |   6 +-
 ...eportingPluginConfigurationInheritanceTest.java |   6 +-
 .../MavenITmng3813PluginClassPathOrderingTest.java |   6 +-
 .../it/MavenITmng3814BogusProjectCycleTest.java    |   6 +-
 .../it/MavenITmng3821EqualPluginExecIdsTest.java   |   6 +-
 ...enITmng3822BasedirAlignedInterpolationTest.java |  15 +-
 .../maven/it/MavenITmng3827PluginConfigTest.java   |   9 +-
 .../it/MavenITmng3831PomInterpolationTest.java     |  11 +-
 ...ITmng3833PomInterpolationDataFlowChainTest.java |   6 +-
 .../MavenITmng3836PluginConfigInheritanceTest.java |   6 +-
 .../it/MavenITmng3838EqualPluginDepsTest.java      |   6 +-
 .../MavenITmng3839PomParsingCoalesceTextTest.java  |   6 +-
 .../maven/it/MavenITmng3843PomInheritanceTest.java |  29 +-
 .../MavenITmng3845LimitedPomInheritanceTest.java   |   6 +-
 ...enITmng3846PomInheritanceUrlAdjustmentTest.java |  11 +-
 ...g3852PluginConfigWithHeterogeneousListTest.java |   6 +-
 ...MavenITmng3853ProfileInjectedDistReposTest.java |   6 +-
 .../it/MavenITmng3863AutoPluginGroupIdTest.java    |   6 +-
 .../it/MavenITmng3864PerExecPluginConfigTest.java  |   9 +-
 .../MavenITmng3866PluginConfigInheritanceTest.java |   6 +-
 ...mng3872ProfileActivationInRelocatedPomTest.java |   6 +-
 .../MavenITmng3873MultipleExecutionGoalsTest.java  |   6 +-
 .../it/MavenITmng3877BasedirAlignedModelTest.java  |  13 +-
 .../it/MavenITmng3886ExecutionGoalsOrderTest.java  |   7 +-
 .../it/MavenITmng3887PluginExecutionOrderTest.java |   6 +-
 ...mng3890TransitiveDependencyScopeUpdateTest.java |   6 +-
 .../it/MavenITmng3892ReleaseDeploymentTest.java    |  15 +-
 .../it/MavenITmng3899ExtensionInheritanceTest.java |   6 +-
 ...Tmng3900ProfilePropertiesInterpolationTest.java |   6 +-
 ...enITmng3904NestedBuildDirInterpolationTest.java |  13 +-
 ...ITmng3906MergedPluginClassPathOrderingTest.java |   6 +-
 ...venITmng3916PluginExecutionInheritanceTest.java |   6 +-
 .../MavenITmng3924XmlMarkupInterpolationTest.java  |   6 +-
 ...venITmng3925MergedPluginExecutionOrderTest.java |   7 +-
 ...nITmng3927PluginDefaultExecutionConfigTest.java |   6 +-
 ...venITmng3937MergedPluginExecutionGoalsTest.java |   7 +-
 .../MavenITmng3938MergePluginExecutionsTest.java   |   6 +-
 .../it/MavenITmng3940EnvVarInterpolationTest.java  |   6 +-
 ...xecutionProjectRestrictedToForkingMojoTest.java |   6 +-
 ...venITmng3943PluginExecutionInheritanceTest.java |   6 +-
 .../it/MavenITmng3944BasedirInterpolationTest.java |  11 +-
 ...nITmng3947PluginDefaultExecutionConfigTest.java |   6 +-
 ...ng3948ParentResolutionFromProfileReposTest.java |   6 +-
 .../maven/it/MavenITmng3951AbsolutePathsTest.java  |  28 +-
 .../MavenITmng3953AuthenticatedDeploymentTest.java |   6 +-
 .../it/MavenITmng3955EffectiveSettingsTest.java    |  13 +-
 ...ITmng3970DepResolutionFromProfileReposTest.java |  10 +-
 .../maven/it/MavenITmng3974MirrorOrderingTest.java |   6 +-
 .../maven/it/MavenITmng3979ElementJoinTest.java    |   8 +-
 ...ng3983PluginResolutionFromProfileReposTest.java |  10 +-
 .../it/MavenITmng3991ValidDependencyScopeTest.java |   6 +-
 .../MavenITmng3998PluginExecutionConfigTest.java   |   6 +-
 .../MavenITmng4000MultiPluginExecutionsTest.java   |  10 +-
 .../it/MavenITmng4005UniqueDependencyKeyTest.java  |   6 +-
 .../MavenITmng4007PlatformFileSeparatorTest.java   |   8 +-
 .../it/MavenITmng4008MergedFilterOrderTest.java    |   6 +-
 .../MavenITmng4009InheritProfileEffectsTest.java   |   6 +-
 ...ITmng4016PrefixedPropertyInterpolationTest.java |   6 +-
 ...ITmng4022IdempotentPluginConfigMergingTest.java |   6 +-
 ...ITmng4023ParentProfileOneTimeInjectionTest.java |   6 +-
 ...MavenITmng4026ReactorDependenciesOrderTest.java |   6 +-
 ...MavenITmng4034ManagedProfileDependencyTest.java |   6 +-
 ...ng4036ParentResolutionFromSettingsRepoTest.java |   6 +-
 .../MavenITmng4040ProfileInjectedModulesTest.java  |   6 +-
 ...ITmng4048VersionRangeReactorResolutionTest.java |   6 +-
 .../MavenITmng4052ReactorAwareImportScopeTest.java |   6 +-
 .../MavenITmng4053PluginConfigAttributesTest.java  |   6 +-
 ...lassifierBasedDepResolutionFromReactorTest.java |   6 +-
 .../it/MavenITmng4068AuthenticatedMirrorTest.java  |  11 +-
 .../it/MavenITmng4070WhitespaceTrimmingTest.java   |   6 +-
 .../it/MavenITmng4072InactiveProfileReposTest.java |   6 +-
 .../MavenITmng4087PercentEncodedFileUrlTest.java   |   6 +-
 .../it/MavenITmng4091BadPluginDescriptorTest.java  |  14 +-
 ...Tmng4102InheritedPropertyInterpolationTest.java |   6 +-
 ...ng4106InterpolationUsesDominantProfileTest.java |   6 +-
 ...InterpolationUsesDominantProfileSourceTest.java |   6 +-
 .../it/MavenITmng4112MavenVersionPropertyTest.java |   6 +-
 .../maven/it/MavenITmng4116UndecodedUrlsTest.java  |   6 +-
 ...venITmng4129PluginExecutionInheritanceTest.java |   6 +-
 .../maven/it/MavenITmng4150VersionRangeTest.java   |   6 +-
 .../it/MavenITmng4162ReportingMigrationTest.java   |   6 +-
 .../it/MavenITmng4166HideCoreCommonsCliTest.java   |   6 +-
 .../it/MavenITmng4172EmptyDependencySetTest.java   |   6 +-
 .../MavenITmng4180PerDependencyExclusionsTest.java |   6 +-
 .../MavenITmng4189UniqueVersionSnapshotTest.java   |  12 +-
 .../it/MavenITmng4190MirrorRepoMergingTest.java    |   6 +-
 .../maven/it/MavenITmng4193UniqueRepoIdTest.java   |   6 +-
 .../it/MavenITmng4196ExclusionOnPluginDepTest.java |   6 +-
 ...MavenITmng4199CompileMeetsRuntimeScopeTest.java |   6 +-
 ...ITmng4203TransitiveDependencyExclusionTest.java |   6 +-
 .../it/MavenITmng4207PluginWithLog4JTest.java      |   8 +-
 ...nterpolationPrefersCliOverProjectPropsTest.java |   6 +-
 ...avenITmng4214MirroredParentSearchReposTest.java |   6 +-
 .../it/MavenITmng4231SnapshotUpdatePolicyTest.java |  10 +-
 ...orResolutionForManuallyCreatedArtifactTest.java |  16 +-
 ...enITmng4235HttpAuthDeploymentChecksumsTest.java |  18 +-
 ...ITmng4238ArtifactHandlerExtensionUsageTest.java |  16 +-
 ...nITmng4262MakeLikeReactorDottedPath370Test.java |  10 +-
 ...avenITmng4262MakeLikeReactorDottedPathTest.java |  10 +-
 ...Tmng4269BadReactorResolutionFromOutDirTest.java |  10 +-
 ...Tmng4270ArtifactHandlersFromPluginDepsTest.java |  16 +-
 ...4273RestrictedCoreRealmAccessForPluginTest.java |   6 +-
 .../it/MavenITmng4274PluginRealmArtifactsTest.java |   6 +-
 .../it/MavenITmng4275RelocationWarningTest.java    |   6 +-
 ...venITmng4276WrongTransitivePlexusUtilsTest.java |   6 +-
 .../it/MavenITmng4281PreferLocalSnapshotTest.java  |   8 +-
 .../it/MavenITmng4283ParentPomPackagingTest.java   |   6 +-
 .../MavenITmng4291MojoRequiresOnlineModeTest.java  |  14 +-
 .../MavenITmng4292EnumTypeMojoParametersTest.java  |   6 +-
 ...mng4293RequiresCompilePlusRuntimeScopeTest.java |   6 +-
 ...venITmng4304ProjectDependencyArtifactsTest.java |   6 +-
 .../it/MavenITmng4305LocalRepoBasedirTest.java     |   9 +-
 ...309StrictChecksumValidationForMetadataTest.java |  10 +-
 ...warePluginParameterExpressionInjectionTest.java |   6 +-
 ...nITmng4314DirectInvocationOfAggregatorTest.java |   6 +-
 ...7PluginVersionResolutionFromMultiReposTest.java |   6 +-
 .../it/MavenITmng4318ProjectExecutionRootTest.java |   6 +-
 ...ng4319PluginExecutionGoalInterpolationTest.java |   6 +-
 ...avenITmng4320AggregatorAndDependenciesTest.java |   6 +-
 .../MavenITmng4321CliUsesPluginMgmtConfigTest.java |   6 +-
 ...4326LocalSnapshotSuppressesRemoteCheckTest.java |   8 +-
 ...7ExcludeForkingMojoFromForkedLifecycleTest.java |   6 +-
 ...328PrimitiveMojoParameterConfigurationTest.java |   6 +-
 .../it/MavenITmng4331DependencyCollectionTest.java |  14 +-
 ...enITmng4332DefaultPluginExecutionOrderTest.java |   6 +-
 .../it/MavenITmng4335SettingsOfflineModeTest.java  |   6 +-
 .../maven/it/MavenITmng4338OptionalMojosTest.java  |   8 +-
 .../it/MavenITmng4341PluginExecutionOrderTest.java |   6 +-
 ...2IndependentMojoParameterDefaultValuesTest.java |   6 +-
 ...venITmng4343MissingReleaseUpdatePolicyTest.java |  10 +-
 ...enITmng4344ManagedPluginExecutionOrderTest.java |   6 +-
 ...enITmng4345DefaultPluginExecutionOrderTest.java |   6 +-
 ...mng4347ImportScopeWithSettingsProfilesTest.java |   6 +-
 ...ITmng4348NoUnnecessaryRepositoryAccessTest.java |   6 +-
 ...mng4349RelocatedArtifactWithInvalidPomTest.java |   6 +-
 ...Tmng4350LifecycleMappingExecutionOrderTest.java |   6 +-
 ...3PluginDependencyResolutionFromPomRepoTest.java |   7 +-
 ...355ExtensionAutomaticVersionResolutionTest.java |   6 +-
 ...4357LifecycleMappingDiscoveryInReactorTest.java |   6 +-
 ...LocallyReachableParentOutsideOfReactorTest.java |   8 +-
 .../maven/it/MavenITmng4360WebDavSupportTest.java  |   8 +-
 ...ITmng4361ForceDependencySnapshotUpdateTest.java |   6 +-
 ...363DynamicAdditionOfDependencyArtifactTest.java |   6 +-
 ...avenITmng4365XmlMarkupInAttributeValueTest.java |   6 +-
 ...venITmng4367LayoutAwareMirrorSelectionTest.java |  14 +-
 ...mng4368TimestampAwareArtifactInstallerTest.java |  81 +++--
 ...sitiveSystemPathInterpolatedWithEnvVarTest.java |   8 +-
 ...enITmng4381ExtensionSingletonComponentTest.java |   8 +-
 .../MavenITmng4383ValidDependencyVersionTest.java  |   6 +-
 ...LifecycleMappingFromExtensionInReactorTest.java |   6 +-
 .../maven/it/MavenITmng4386DebugLoggingTest.java   |   6 +-
 .../maven/it/MavenITmng4387QuietLoggingTest.java   |   6 +-
 ...nITmng4393ParseExternalParenPomLenientTest.java |   6 +-
 .../it/MavenITmng4400RepositoryOrderTest.java      |  10 +-
 ...enITmng4401RepositoryOrderForParentPomTest.java |   6 +-
 .../it/MavenITmng4402DuplicateChildModuleTest.java |   6 +-
 ...enITmng4403LenientDependencyPomParsingTest.java |   6 +-
 .../it/MavenITmng4404UniqueProfileIdTest.java      |   6 +-
 .../it/MavenITmng4405ValidPluginVersionTest.java   |   6 +-
 .../MavenITmng4408NonExistentSettingsFileTest.java |  11 +-
 .../maven/it/MavenITmng4410UsageHelpTest.java      |   6 +-
 .../maven/it/MavenITmng4411VersionInfoTest.java    |   6 +-
 .../it/MavenITmng4412OfflineModeInPluginTest.java  |  10 +-
 ...avenITmng4413MirroringOfDependencyRepoTest.java |   9 +-
 .../it/MavenITmng4415InheritedPluginOrderTest.java |   6 +-
 ...ng4416PluginOrderAfterProfileInjectionTest.java |   6 +-
 ...1DeprecatedPomInterpolationExpressionsTest.java |   6 +-
 ...g4422PluginExecutionPhaseInterpolationTest.java |   6 +-
 ...ssionDataFromPluginParameterExpressionTest.java |   6 +-
 .../it/MavenITmng4428FollowHttpRedirectTest.java   |  14 +-
 ...mng4429CompRequirementOnNonDefaultImplTest.java |   8 +-
 ...nITmng4430DistributionManagementStatusTest.java |   6 +-
 ...avenITmng4433ForceParentSnapshotUpdateTest.java |   6 +-
 ...MavenITmng4436SingletonComponentLookupTest.java |   8 +-
 ...ng4450StubModelForMissingDependencyPomTest.java |   6 +-
 ...4452ResolutionOfSnapshotWithClassifierTest.java |   9 +-
 ...g4453PluginVersionFromLifecycleMappingTest.java |   6 +-
 ...ITmng4459InMemorySettingsKeptEncryptedTest.java |   9 +-
 .../MavenITmng4461ArtifactUploadMonitorTest.java   |   6 +-
 ...463DependencyManagementImportVersionRanges.java |  16 +-
 ...ng4464PlatformIndependentFileSeparatorTest.java |   9 +-
 ...65PluginPrefixFromLocalCacheOfDownRepoTest.java |   8 +-
 ...469AuthenticatedDeploymentToCustomRepoTest.java |   6 +-
 ...Tmng4470AuthenticatedDeploymentToProxyTest.java |   6 +-
 ...enITmng4474PerLookupWagonInstantiationTest.java |   6 +-
 ...avenITmng4482ForcePluginSnapshotUpdateTest.java |   6 +-
 ...mng4488ValidateExternalParenPomLenientTest.java |   6 +-
 ...MavenITmng4489MirroringOfExtensionRepoTest.java |   8 +-
 .../it/MavenITmng4498IgnoreBrokenMetadataTest.java |   6 +-
 ...Tmng4500NoUpdateOfTimestampedSnapshotsTest.java |   8 +-
 ...4522FailUponMissingDependencyParentPomTest.java |   6 +-
 ...venITmng4526MavenProjectArtifactsScopeTest.java |   6 +-
 ...528ExcludeWagonsFromMavenCoreArtifactsTest.java |   6 +-
 ...nITmng4536RequiresNoProjectForkingMojoTest.java |   6 +-
 ...544ActiveComponentCollectionThreadSafeTest.java |   6 +-
 ...4553CoreArtifactFilterConsidersGroupIdTest.java |   6 +-
 ...avenITmng4554PluginPrefixMappingUpdateTest.java |  47 ++-
 ...nITmng4555MetaversionResolutionOfflineTest.java |   6 +-
 .../it/MavenITmng4559MultipleJvmArgsTest.java      |  15 +-
 .../it/MavenITmng4559SpacesInJvmOptsTest.java      |   4 +-
 .../MavenITmng4561MirroringOfPluginRepoTest.java   |   8 +-
 ...4572ModelVersionSurroundedByWhitespaceTest.java |   6 +-
 ...LevelPluginDepUsedForCliInvocInReactorTest.java |   6 +-
 ...fixResolutionFromVersionlessPluginMgmtTest.java |   6 +-
 ...ImportedPomUsesSystemAndUserPropertiesTest.java |  13 +-
 ...ng4600DependencyOptionalFlagManagementTest.java |  10 +-
 ...mng4615ValidateRequiredPluginParameterTest.java |  22 +-
 ...enITmng4618AggregatorBuiltAfterModulesTest.java |   6 +-
 ...5SettingsXmlInterpolationWithXmlMarkupTest.java |   6 +-
 ...PomValidationErrorUponMissingSystemDepTest.java |   6 +-
 ...mng4633DualCompilerExecutionsWeaveModeTest.java |   6 +-
 ...44StrictPomParsingRejectsMisplacedTextTest.java |   6 +-
 ...Tmng4654ArtifactHandlerForMainArtifactTest.java |   6 +-
 .../it/MavenITmng4660OutdatedPackagedArtifact.java |  18 +-
 .../maven/it/MavenITmng4660ResumeFromTest.java     |  14 +-
 .../it/MavenITmng4666CoreRealmImportTest.java      |   6 +-
 ...mng4677DisabledPluginConfigInheritanceTest.java |   6 +-
 .../MavenITmng4679SnapshotUpdateInPluginTest.java  |  11 +-
 ...enITmng4684DistMgmtOverriddenByProfileTest.java |   6 +-
 ...ng4690InterdependentConflictResolutionTest.java |   6 +-
 ...mng4696MavenProjectDependencyArtifactsTest.java |   6 +-
 ...4720DependencyManagementExclusionMergeTest.java |  10 +-
 ...MavenITmng4721OptionalPluginDependencyTest.java |   6 +-
 ...729MirrorProxyAuthUsedByProjectBuilderTest.java |   8 +-
 .../it/MavenITmng4745PluginVersionUpdateTest.java  |  23 +-
 .../MavenITmng4747JavaAgentUsedByPluginTest.java   |   6 +-
 ...esolvedMavenProjectDependencyArtifactsTest.java |   9 +-
 ...4755FetchRemoteMetadataForVersionRangeTest.java |   8 +-
 .../MavenITmng4765LocalPomProjectBuilderTest.java  |   6 +-
 ...Tmng4768NearestMatchConflictResolutionTest.java |   6 +-
 ...refixResolutionDoesntTouchDisabledRepoTest.java |   6 +-
 ...rsionResolutionDoesntTouchDisabledRepoTest.java |   6 +-
 ...76ForkedReactorPluginVersionResolutionTest.java |  10 +-
 ...tipleDepsWithVersionRangeFromLocalRepoTest.java |   6 +-
 ...nITmng4781DeploymentToNexusStagingRepoTest.java |   6 +-
 ...4785TransitiveResolutionInForkedThreadTest.java |   6 +-
 ...ITmng4788InstallationToCustomLocalRepoTest.java |   6 +-
 ...ITmng4789ScopeInheritanceMeetsConflictTest.java |   6 +-
 ...rojectBuilderResolvesRemotePomArtifactTest.java |   6 +-
 ...utionInReactorProjectForkedByLifecycleTest.java |   6 +-
 ...venITmng4800NearestWinsVsScopeWideningTest.java |   6 +-
 ...enITmng4811CustomComponentConfiguratorTest.java |   6 +-
 ...eResolutionOfDependenciesDuringReactorTest.java |   6 +-
 .../MavenITmng4829ChecksumFailureWarningTest.java  |   6 +-
 ...34ParentProjectResolvedFromRemoteReposTest.java |   6 +-
 .../it/MavenITmng4840MavenPrerequisiteTest.java    |  10 +-
 ...mng4842ParentResolutionOfDependencyPomTest.java |  10 +-
 ...eactorResolutionAttachedWithExclusionsTest.java |   6 +-
 ...avenITmng4874UpdateLatestPluginVersionTest.java |  11 +-
 .../MavenITmng4877DeployUsingPrivateKeyTest.java   |   6 +-
 ...83FailUponOverconstrainedVersionRangesTest.java |   6 +-
 ...ng4890MakeLikeReactorConsidersVersionsTest.java |  10 +-
 ...MavenITmng4891RobustSnapshotResolutionTest.java |   8 +-
 ...g4895PluginDepWithNonRelocatedMavenApiTest.java |   6 +-
 ...913UserPropertyVsDependencyPomPropertyTest.java |   6 +-
 ...g4919LifecycleMappingWithSameGoalTwiceTest.java |   6 +-
 ...4925ContainerLookupRealmDuringMojoExecTest.java |   6 +-
 .../maven/it/MavenITmng4936EventSpyTest.java       |   6 +-
 ...avenITmng4952MetadataReleaseInfoUpdateTest.java |  11 +-
 ...mng4955LocalVsRemoteSnapshotResolutionTest.java |  10 +-
 .../MavenITmng4960MakeLikeReactorResumeTest.java   |  10 +-
 ...venITmng4963ParentResolutionFromMirrorTest.java |   6 +-
 .../MavenITmng4966AbnormalUrlPreservationTest.java |   6 +-
 ...g4973ExtensionVisibleToPluginInReactorTest.java |   6 +-
 ...975ProfileInjectedPluginExecutionOrderTest.java |   6 +-
 ...mng4987TimestampBasedSnapshotSelectionTest.java |   6 +-
 .../maven/it/MavenITmng4991NonProxyHostsTest.java  |   8 +-
 ...ITmng4992MapStylePropertiesParamConfigTest.java |   6 +-
 ...nITmng5000ChildPathAwareUrlInheritanceTest.java |   6 +-
 ...VersionRangeDependencyParentResolutionTest.java |   6 +-
 .../it/MavenITmng5009AggregationCycleTest.java     |   6 +-
 ...igureCollectionArrayFromUserPropertiesTest.java |  17 +-
 ...Tmng5012CollectionVsArrayParamCoercionTest.java |  16 +-
 ...g5013ConfigureParamBeanFromScalarValueTest.java |   6 +-
 ...ingBasedCompLookupFromChildPluginRealmTest.java |   6 +-
 .../MavenITmng5064SuppressSnapshotUpdatesTest.java |   8 +-
 ...usionAtDependencyWithImpliedClassifierTest.java |   6 +-
 .../apache/maven/it/MavenITmng5102MixinsTest.java  |  18 +-
 ...AggregatorDepResolutionModuleExtensionTest.java |   6 +-
 ...Tmng5137ReactorResolutionInForkedBuildTest.java |   6 +-
 .../maven/it/MavenITmng5175WagonHttpTest.java      |   6 +-
 .../it/MavenITmng5208EventSpyParallelTest.java     |   8 +-
 .../maven/it/MavenITmng5214DontMapWsdlToJar.java   |  10 +-
 .../maven/it/MavenITmng5222MojoDeprecatedTest.java |  14 +-
 .../maven/it/MavenITmng5224InjectedSettings.java   |  16 +-
 .../MavenITmng5230MakeReactorWithExcludesTest.java |  38 +-
 ...g5280SettingsProfilesRepositoriesOrderTest.java |  26 +-
 .../it/MavenITmng5338FileOptionToDirectory.java    |   9 +-
 .../maven/it/MavenITmng5382Jsr330Plugin.java       |  13 +-
 .../MavenITmng5387ArtifactReplacementPlugin.java   |  13 +-
 ...mng5389LifecycleParticipantAfterSessionEnd.java |  12 +-
 ...445LegacyStringSearchModelInterpolatorTest.java |   8 +-
 .../MavenITmng5452MavenBuildTimestampUTCTest.java  |   6 +-
 .../maven/it/MavenITmng5482AetherNotFoundTest.java |   8 +-
 .../it/MavenITmng5530MojoExecutionScopeTest.java   |  39 +-
 ...5561PluginRelocationLosesConfigurationTest.java |  16 +-
 .../MavenITmng5572ReactorPluginExtensionsTest.java |   8 +-
 .../maven/it/MavenITmng5576CdFriendlyVersions.java |  14 +-
 .../maven/it/MavenITmng5578SessionScopeTest.java   |  49 ++-
 .../it/MavenITmng5581LifecycleMappingDelegate.java |  14 +-
 .../maven/it/MavenITmng5591WorkspaceReader.java    |  15 +-
 ...00DependencyManagementImportExclusionsTest.java |   6 +-
 ...MavenITmng5608ProfileActivationWarningTest.java |  14 +-
 ...MavenITmng5639ImportScopePomResolutionTest.java |   6 +-
 ...mng5640LifecycleParticipantAfterSessionEnd.java |  50 +--
 .../it/MavenITmng5659ProjectSettingsTest.java      |   6 +-
 ...Tmng5663NestedImportScopePomResolutionTest.java |   6 +-
 .../it/MavenITmng5668AfterPhaseExecutionTest.java  |  14 +-
 .../maven/it/MavenITmng5669ReadPomsOnce.java       |  15 +-
 .../maven/it/MavenITmng5716ToolchainsTypeTest.java |  20 +-
 ...avenITmng5742BuildExtensionClassloaderTest.java |  15 +-
 ...mng5753CustomMojoExecutionConfiguratorTest.java |  20 +-
 .../maven/it/MavenITmng5760ResumeFeatureTest.java  |  41 ++-
 .../maven/it/MavenITmng5768CliExecutionIdTest.java |   6 +-
 .../maven/it/MavenITmng5771CoreExtensionsTest.java |  47 +--
 .../MavenITmng5774ConfigurationProcessorsTest.java |  19 +-
 .../MavenITmng5783PluginDependencyFiltering.java   |   8 +-
 .../MavenITmng5805PkgTypeMojoConfiguration2.java   |  12 +-
 .../it/MavenITmng5840ParentVersionRanges.java      |  14 +-
 .../MavenITmng5840RelativePathReactorMatching.java |   8 +-
 ...MavenITmng5868NoDuplicateAttachedArtifacts.java |  11 +-
 .../apache/maven/it/MavenITmng5889FindBasedir.java |  24 +-
 ...enITmng5895CIFriendlyUsageWithPropertyTest.java |  10 +-
 ...ildMultimoduleWithEARFailsToResolveWARTest.java |   6 +-
 ...onalLostInTranstiveManagedDependenciesTest.java |   6 +-
 .../MavenITmng5958LifecyclePhaseBinaryCompat.java  |  18 +-
 ...enITmng5965ParallelBuildMultipliesWorkTest.java |   6 +-
 .../it/MavenITmng6057CheckReactorOrderTest.java    |   6 +-
 .../maven/it/MavenITmng6065FailOnSeverityTest.java |  10 +-
 .../it/MavenITmng6071GetResourceWithCustomPom.java |   6 +-
 .../maven/it/MavenITmng6084Jsr250PluginTest.java   |  11 +-
 .../maven/it/MavenITmng6090CIFriendlyTest.java     |  14 +-
 .../it/MavenITmng6118SubmoduleInvocation.java      |  23 +-
 ...uginExecutionConfigurationInterferenceTest.java |  43 ++-
 .../MavenITmng6173GetAllProjectsInReactorTest.java |   6 +-
 ...ITmng6173GetProjectsAndDependencyGraphTest.java |   6 +-
 ...MavenITmng6189SiteReportPluginsWarningTest.java |   6 +-
 ...venITmng6210CoreExtensionsCustomScopesTest.java |  11 +-
 .../apache/maven/it/MavenITmng6223FindBasedir.java |  24 +-
 ...avenITmng6240PluginExtensionAetherProvider.java |  12 +-
 .../maven/it/MavenITmng6255FixConcatLines.java     |  18 +-
 ...nITmng6256SpecialCharsAlternatePOMLocation.java |  13 +-
 .../MavenITmng6326CoreExtensionsNotFoundTest.java  |   6 +-
 .../maven/it/MavenITmng6330RelativePath.java       |   6 +-
 .../it/MavenITmng6386BaseUriPropertyTest.java      |  15 +-
 .../maven/it/MavenITmng6391PrintVersionTest.java   |  10 +-
 .../MavenITmng6401ProxyPortInterpolationTest.java  |   6 +-
 .../it/MavenITmng6506PackageAnnotationTest.java    |  12 +-
 ...MavenITmng6511OptionalProjectSelectionTest.java |  28 +-
 .../MavenITmng6558ToolchainsBuildingEventTest.java |   6 +-
 .../it/MavenITmng6562WarnDefaultBindings.java      |  26 +-
 ...ecuteAnnotationShouldNotReExecuteGoalsTest.java |  19 +-
 ...ITmng6609ProfileActivationForPackagingTest.java |   6 +-
 .../maven/it/MavenITmng6656BuildConsumer.java      |  55 ++-
 .../maven/it/MavenITmng6720FailFastTest.java       |  12 +-
 ...avenITmng6754TimestampInMultimoduleProject.java |  13 +-
 ...ng6759TransitiveDependencyRepositoriesTest.java |  17 +-
 ...mng6772NestedImportScopeRepositoryOverride.java |  17 +-
 .../maven/it/MavenITmng6957BuildConsumer.java      |  85 +++--
 ...avenITmng6972AllowAccessToGraphPackageTest.java |  15 +-
 ...ng6981ProjectListShouldIncludeChildrenTest.java |  12 +-
 .../apache/maven/it/MavenITmng7038RootdirTest.java | 115 +++---
 ...nITmng7045DropUselessAndOutdatedCdiApiTest.java |   6 +-
 ...avenITmng7051OptionalProfileActivationTest.java |  25 +-
 .../it/MavenITmng7110ExtensionClassloader.java     |  17 +-
 ...MavenITmng7112ProjectsWithNonRecursiveTest.java |  17 +-
 ...MavenITmng7128BlockExternalHttpReactorTest.java |  12 +-
 .../it/MavenITmng7160ExtensionClassloader.java     |  15 +-
 .../maven/it/MavenITmng7228LeakyModelTest.java     |  20 +-
 ...MavenITmng7244IgnorePomPrefixInExpressions.java |   8 +-
 .../it/MavenITmng7255InferredGroupIdTest.java      |   8 +-
 ...310LifecycleActivatedInSpecifiedModuleTest.java |  10 +-
 .../MavenITmng7335MissingJarInParallelBuild.java   |  16 +-
 .../it/MavenITmng7349RelocationWarningTest.java    |  12 +-
 .../it/MavenITmng7353CliGoalInvocationTest.java    |   6 +-
 .../maven/it/MavenITmng7360BuildConsumer.java      |   8 +-
 .../MavenITmng7390SelectModuleOutsideCwdTest.java  |  21 +-
 ...enITmng7404IgnorePrefixlessExpressionsTest.java |   8 +-
 ...nsistencyOfOptionalProjectsAndProfilesTest.java |   6 +-
 ...ITmng7464ReadOnlyMojoParametersWarningTest.java |  14 +-
 ...nITmng7468UnsupportedPluginsParametersTest.java |   6 +-
 .../it/MavenITmng7470ResolverTransportTest.java    |  15 +-
 .../maven/it/MavenITmng7474SessionScopeTest.java   |   8 +-
 .../maven/it/MavenITmng7487DeadlockTest.java       |  15 +-
 ...mng7504NotWarnUnsupportedReportPluginsTest.java |   8 +-
 ...enITmng7529VersionRangeRepositorySelection.java |   8 +-
 .../it/MavenITmng7566JavaPrerequisiteTest.java     |  10 +-
 .../org/apache/maven/it/MavenITmng7587Jsr330.java  |   9 +-
 .../MavenITmng7606DependencyImportScopeTest.java   |   6 +-
 .../maven/it/MavenITmng7629SubtreeBuildTest.java   |   8 +-
 .../it/MavenITmng7679SingleMojoNoPomTest.java      |   6 +-
 .../maven/it/MavenITmng7697PomWithEmojiTest.java   |   6 +-
 .../maven/it/MavenITmng7716BuildDeadlock.java      |   8 +-
 .../it/MavenITmng7737ProfileActivationTest.java    |   6 +-
 ...7740ConsumerBuildShouldCleanUpOldFilesTest.java |   8 +-
 .../it/MavenITmng7772CoreExtensionFoundTest.java   |  22 +-
 .../MavenITmng7772CoreExtensionsNotFoundTest.java  |  10 +-
 .../it/MavenITmng7804PluginExecutionOrderTest.java |   6 +-
 ...MavenITmng7819FileLockingWithSnapshotsTest.java |  20 +-
 .../it/MavenITmng7836AlternativePomSyntaxTest.java |  17 +-
 .../it/MavenITmng7837ProjectElementInPomTest.java  |   6 +-
 ...venITmng7891ConfigurationForExtensionsTest.java |  14 +-
 ...avenITmng7939PluginsValidationExcludesTest.java |  10 +-
 .../it/MavenITmng7965PomDuplicateTagsTest.java     |   6 +-
 .../MavenITmng7967ArtifactHandlerLanguageTest.java |   6 +-
 ...ng7982DependencyManagementTransitivityTest.java |  10 +-
 .../MavenITmng8005IdeWorkspaceReaderUsedTest.java  |   8 +-
 ...avenITmng8106OverlappingDirectoryRolesTest.java |  19 +-
 .../maven/it/MavenITmng8123BuildCacheTest.java     |   6 +-
 .../MavenITmng8133RootDirectoryInParentTest.java   |   8 +-
 .../maven/it/MavenITmng8181CentralRepoTest.java    |   9 +-
 .../it/MavenITmng8220ExtensionWithDITest.java      |   8 +-
 .../maven/it/MavenITmng8230CIFriendlyTest.java     |  57 ++-
 .../maven/it/MavenITmng8244PhaseAllTest.java       |  10 +-
 .../maven/it/MavenITmng8245BeforePhaseCliTest.java |  18 +-
 .../maven/it/MavenITmng8288NoRootPomTest.java      |   6 +-
 .../it/MavenITmng8293BomImportFromReactor.java     |   6 +-
 .../maven/it/MavenITmng8294ParentChecksTest.java   |  26 +-
 .../it/MavenITmng8299CustomLifecycleTest.java      |   8 +-
 ...331VersionedAndUnversionedDependenciesTest.java |   7 +-
 .../it/MavenITmng8336UnknownPackagingTest.java     |   6 +-
 .../it/MavenITmng8340GeneratedPomInTargetTest.java |   6 +-
 .../maven/it/MavenITmng8341DeadlockTest.java       |   6 +-
 ...enITmng8347TransitiveDependencyManagerTest.java |  15 +-
 ...enITmng8360SubprojectProfileActivationTest.java |   6 +-
 .../it/MavenITmng8379SettingsDecryptTest.java      |  15 +-
 .../MavenITmng8383UnknownTypeDependenciesTest.java |   6 +-
 .../MavenITmng8385PropertyContributoSPITest.java   |   8 +-
 .../it/MavenITmng8400CanonicalMavenHomeTest.java   |   2 +-
 ...venITmng8414ConsumerPomWithNewFeaturesTest.java |   4 +-
 .../it/MavenITmng8421MavenEncryptionTest.java      |   8 +-
 .../it/MavenITmng8461SpySettingsEventTest.java     |   6 +-
 ...MavenITmng8465RepositoryWithProjectDirTest.java |   4 +-
 ...MavenITmng8469InterpolationPrecendenceTest.java |   4 +-
 ...enITmng8477MultithreadedFileActivationTest.java |   4 +-
 .../it/MavenITmng8523ModelPropertiesTest.java      |   8 +-
 .../maven/it/MavenITmng8525MavenDIPlugin.java      |  11 +-
 .../maven/it/MavenITmng8527ConsumerPomTest.java    |  12 +-
 .../maven/it/MavenITmng8561SourceRootTest.java     |   4 +-
 .../maven/it/MavenITmng8572DITypeHandlerTest.java  |  10 +-
 .../apache/maven/it/MavenITmng8594AtFileTest.java  |   4 +-
 .../MavenITmng8598JvmConfigSubstitutionTest.java   |  11 +-
 ...mng8645ConsumerPomDependencyManagementTest.java |   6 +-
 .../maven/it/MavenITmng8648ProjectEventsTest.java  |  10 +-
 ...fterAndEachPhasesWithConcurrentBuilderTest.java |   4 +-
 ...MavenITmng8736ConcurrentFileActivationTest.java |  14 +-
 .../maven/it/MavenITmng8744CIFriendlyTest.java     |  10 +-
 .../maven/it/MavenITmng8750NewScopesTest.java      |  88 ++---
 .../org/apache/maven/it/TestSuiteOrdering.java     |   2 +-
 .../maven/it/AbstractMavenIntegrationTestCase.java |  61 +++-
 .../main/java/org/apache/maven/it/Verifier.java    | 397 ++++++++++++---------
 .../AbstractMavenIntegrationTestCaseNIO2Test.java  |  61 ++++
 .../maven/it/NIO2MigrationVerificationTest.java    | 129 +++++++
 .../java/org/apache/maven/it/VerifierNIO2Test.java | 161 +++++++++
 749 files changed, 4435 insertions(+), 4187 deletions(-)

diff --git a/its/core-it-suite/pom.xml b/its/core-it-suite/pom.xml
index 10c59d2225..c5ded2eec0 100644
--- a/its/core-it-suite/pom.xml
+++ b/its/core-it-suite/pom.xml
@@ -356,6 +356,12 @@ under the License.
       <artifactId>maven-it-plugin-plexus-lifecycle</artifactId>
       <version>${core-it-support-version}</version>
     </dependency>
+      <dependency>
+          <groupId>commons-jxpath</groupId>
+          <artifactId>commons-jxpath</artifactId>
+          <version>1.4.0</version>
+          <scope>test</scope>
+      </dependency>
   </dependencies>
 
   <build>
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/HttpServer.java b/its/core-it-suite/src/test/java/org/apache/maven/it/HttpServer.java
index 085e48c50f..8f91c6184b 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/HttpServer.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/HttpServer.java
@@ -18,18 +18,16 @@
  */
 package org.apache.maven.it;
 
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-import java.io.File;
-import java.io.FileInputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
 import java.net.URL;
+import java.nio.file.Files;
+import java.nio.file.Path;
 import java.util.Collections;
-
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
 import org.eclipse.jetty.security.ConstraintMapping;
 import org.eclipse.jetty.security.ConstraintSecurityHandler;
 import org.eclipse.jetty.security.HashLoginService;
@@ -182,11 +180,11 @@ public InputStream stream(String path) throws IOException {
             return this;
         }
 
-        public HttpServerBuilder source(final File source) {
+        public HttpServerBuilder source(final Path source) {
             this.source = new StreamSource() {
                 @Override
                 public InputStream stream(String path) throws IOException {
-                    return new FileInputStream(new File(source, path));
+                    return Files.newInputStream(source.resolve(path));
                 }
             };
             return this;
@@ -227,7 +225,7 @@ public static void main(String[] args) throws Exception {
                 .port(0) //
                 .username("maven") //
                 .password("secret") //
-                .source(new File("/tmp/repo")) //
+                .source(Path.of("/tmp/repo")) //
                 .build();
         server.start();
     }
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/ItUtils.java b/its/core-it-suite/src/test/java/org/apache/maven/it/ItUtils.java
index 5e84518ccd..3ea43aa953 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/ItUtils.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/ItUtils.java
@@ -18,12 +18,15 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
-import java.io.FileInputStream;
 import java.io.IOException;
+import java.io.InputStream;
+import java.nio.file.Files;
 import java.nio.file.Path;
+import java.nio.file.StandardOpenOption;
+import java.nio.file.attribute.FileTime;
 import java.security.DigestInputStream;
 import java.security.MessageDigest;
+import org.codehaus.plexus.util.FileUtils;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
 
@@ -32,60 +35,57 @@
  */
 class ItUtils {
 
-    public static String calcHash(File file, String algo) throws Exception {
+    public static String calcHash(Path file, String algo) throws Exception {
         MessageDigest digester = MessageDigest.getInstance(algo);
 
-        DigestInputStream dis;
-        try (FileInputStream is = new FileInputStream(file)) {
-            dis = new DigestInputStream(is, digester);
-
-            for (byte[] buffer = new byte[1024 * 4]; dis.read(buffer) >= 0; ) {
+        try (InputStream is = new DigestInputStream(Files.newInputStream(file), digester)) {
+            byte[] buffer = new byte[1024 * 4];
+            while (is.read(buffer) >= 0) {
                 // just read it
             }
         }
 
         byte[] digest = digester.digest();
-
         StringBuilder hash = new StringBuilder(digest.length * 2);
-
         for (byte aDigest : digest) {
             int b = aDigest & 0xFF;
-
             if (b < 0x10) {
                 hash.append('0');
             }
-
             hash.append(Integer.toHexString(b));
         }
 
         return hash.toString();
     }
 
-    /**
-     * @deprecated Use {@link Verifier#setUserHomeDirectory(Path)} instead.
-     */
-    @Deprecated
-    public static void setUserHome(Verifier verifier, File file) {
-        setUserHome(verifier, file.toPath());
+    public static void assertCanonicalFileEquals(Path expected, Path actual) throws IOException {
+        assertEquals(canonicalPath(expected), canonicalPath(actual));
+    }
+
+    public static void createFile(Path path) throws IOException {
+        Files.createFile(path);
+    }
+
+    public static long lastModified(Path path) throws IOException {
+        if (!Files.exists(path)) {
+            return 0L;
+        }
+        return Files.getLastModifiedTime(path).toMillis();
     }
 
-    /**
-     * @deprecated Use {@link Verifier#setUserHomeDirectory(Path)} instead.
-     */
-    @Deprecated
-    public static void setUserHome(Verifier verifier, Path home) {
-        verifier.setUserHomeDirectory(home);
+    public static void lastModified(Path path, long millis) throws IOException {
+        Files.setLastModifiedTime(path, FileTime.fromMillis(millis));
     }
 
-    public static void assertCanonicalFileEquals(File expected, File actual) throws IOException {
-        assertEquals(expected.getCanonicalFile(), actual.getCanonicalFile());
+    public static void deleteDirectory(Path path) throws IOException {
+        FileUtils.deleteDirectory(path.toFile());
     }
 
-    public static void assertCanonicalFileEquals(String expected, String actual, String message) throws IOException {
-        assertEquals(new File(expected).getCanonicalFile(), new File(actual).getCanonicalFile(), message);
+    public static void copyDirectoryStructure(Path src, Path dest) throws IOException {
+        FileUtils.copyDirectoryStructure(src.toFile(), dest.toFile());
     }
 
-    public static void assertCanonicalFileEquals(String expected, String actual) throws IOException {
-        assertEquals(new File(expected).getCanonicalFile(), new File(actual).getCanonicalFile());
+    public static String canonicalPath(Path path) throws IOException {
+        return path.toFile().getCanonicalPath();
     }
 }
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0008SimplePluginTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0008SimplePluginTest.java
index 616b125ea7..eadaba2a3c 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0008SimplePluginTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0008SimplePluginTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 
 import org.junit.jupiter.api.Test;
 
@@ -34,8 +34,8 @@ public class MavenIT0008SimplePluginTest extends AbstractMavenIntegrationTestCas
      */
     @Test
     public void testit0008() throws Exception {
-        File testDir = extractResources("/it0008");
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Path testDir = extractResources("it0008");
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         verifier.deleteArtifact("org.apache.maven.its.plugins", "maven-it-plugin-touch", "1.0", "maven-plugin");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0009GoalConfigurationTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0009GoalConfigurationTest.java
index 8854cb2816..db028378e8 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0009GoalConfigurationTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0009GoalConfigurationTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.condition.DisabledIf;
@@ -42,8 +42,8 @@ public void testit0009() throws Exception {
         // Inline version check: [3.1.0,) - current Maven version supports space in XML
         boolean supportSpaceInXml = true;
 
-        File testDir = extractResources("/it0009");
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Path testDir = extractResources("it0009");
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         verifier.addCliArgument("validate");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0010DependencyClosureResolutionTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0010DependencyClosureResolutionTest.java
index 3c491545de..46d102b185 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0010DependencyClosureResolutionTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0010DependencyClosureResolutionTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 import java.util.List;
 
 import org.junit.jupiter.api.Test;
@@ -36,9 +36,9 @@ public class MavenIT0010DependencyClosureResolutionTest extends AbstractMavenInt
      */
     @Test
     public void testit0010() throws Exception {
-        File testDir = extractResources("/it0010");
+        Path testDir = extractResources("it0010");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         verifier.deleteArtifacts("org.apache.maven.its.it0010");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0011DefaultVersionByDependencyManagementTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0011DefaultVersionByDependencyManagementTest.java
index 2c22904988..ca15013c58 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0011DefaultVersionByDependencyManagementTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0011DefaultVersionByDependencyManagementTest.java
@@ -18,9 +18,8 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 import java.util.List;
-
 import org.junit.jupiter.api.Test;
 
 import static org.junit.jupiter.api.Assertions.assertTrue;
@@ -34,8 +33,8 @@ public class MavenIT0011DefaultVersionByDependencyManagementTest extends Abstrac
      */
     @Test
     public void testit0011() throws Exception {
-        File testDir = extractResources("/it0011");
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Path testDir = extractResources("it0011");
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         verifier.deleteArtifacts("org.apache.maven.its.it0011");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0012PomInterpolationTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0012PomInterpolationTest.java
index d4ace9aee1..6afdbee068 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0012PomInterpolationTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0012PomInterpolationTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 
 import org.junit.jupiter.api.Test;
 
@@ -31,8 +31,8 @@ public class MavenIT0012PomInterpolationTest extends AbstractMavenIntegrationTes
      */
     @Test
     public void testit0012() throws Exception {
-        File testDir = extractResources("/it0012");
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Path testDir = extractResources("it0012");
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         verifier.deleteDirectory("child-project/target");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0018DependencyManagementTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0018DependencyManagementTest.java
index 3795ee0497..5e4ff5d439 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0018DependencyManagementTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0018DependencyManagementTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 
 import org.junit.jupiter.api.Test;
 
@@ -33,8 +33,8 @@ public class MavenIT0018DependencyManagementTest extends AbstractMavenIntegratio
      */
     @Test
     public void testit0018() throws Exception {
-        File testDir = extractResources("/it0018");
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Path testDir = extractResources("it0018");
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteArtifacts("org.apache.maven.its.it0018");
         verifier.filterFile("settings-template.xml", "settings.xml");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0019PluginVersionMgmtBySuperPomTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0019PluginVersionMgmtBySuperPomTest.java
index 4929b9b485..dbb7835526 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0019PluginVersionMgmtBySuperPomTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0019PluginVersionMgmtBySuperPomTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 
 import org.junit.jupiter.api.Test;
 
@@ -31,8 +31,8 @@ public class MavenIT0019PluginVersionMgmtBySuperPomTest extends AbstractMavenInt
      */
     @Test
     public void testit0019() throws Exception {
-        File testDir = extractResources("/it0019");
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Path testDir = extractResources("it0019");
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         verifier.addCliArgument("process-resources");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0021PomProfileTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0021PomProfileTest.java
index 25ad0788f0..a84d7bfb01 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0021PomProfileTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0021PomProfileTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 
 import org.junit.jupiter.api.Test;
 
@@ -32,9 +32,9 @@ public class MavenIT0021PomProfileTest extends AbstractMavenIntegrationTestCase
      */
     @Test
     public void testit0021() throws Exception {
-        File testDir = extractResources("/it0021");
+        Path testDir = extractResources("it0021");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteArtifacts("org.apache.maven.its.it0021");
         verifier.getSystemProperties().setProperty("includeProfile", "true");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0023SettingsProfileTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0023SettingsProfileTest.java
index 39a0446c2a..63843869d8 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0023SettingsProfileTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0023SettingsProfileTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 
 import org.junit.jupiter.api.Test;
 
@@ -32,9 +32,9 @@ public class MavenIT0023SettingsProfileTest extends AbstractMavenIntegrationTest
      */
     @Test
     public void testit0023() throws Exception {
-        File testDir = extractResources("/it0023");
+        Path testDir = extractResources("it0023");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         verifier.addCliArgument("--settings");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0024MultipleGoalExecutionsTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0024MultipleGoalExecutionsTest.java
index bb33fe1e77..030e2870e4 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0024MultipleGoalExecutionsTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0024MultipleGoalExecutionsTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 
 import org.junit.jupiter.api.Test;
 
@@ -38,9 +38,9 @@ public class MavenIT0024MultipleGoalExecutionsTest extends AbstractMavenIntegrat
      */
     @Test
     public void testit0024() throws Exception {
-        File testDir = extractResources("/it0024");
+        Path testDir = extractResources("it0024");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         verifier.addCliArgument("initialize");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0025MultipleExecutionLevelConfigsTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0025MultipleExecutionLevelConfigsTest.java
index b0eb08a3d3..2a8bf876f2 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0025MultipleExecutionLevelConfigsTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0025MultipleExecutionLevelConfigsTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 
 import org.junit.jupiter.api.Test;
 
@@ -37,9 +37,9 @@ public class MavenIT0025MultipleExecutionLevelConfigsTest extends AbstractMavenI
      */
     @Test
     public void testit0025() throws Exception {
-        File testDir = extractResources("/it0025");
+        Path testDir = extractResources("it0025");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         verifier.addCliArgument("validate");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0030DepPomDepMgmtInheritanceTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0030DepPomDepMgmtInheritanceTest.java
index c086b25425..5ca590c9cd 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0030DepPomDepMgmtInheritanceTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0030DepPomDepMgmtInheritanceTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 
 import org.junit.jupiter.api.Test;
 
@@ -32,8 +32,8 @@ public class MavenIT0030DepPomDepMgmtInheritanceTest extends AbstractMavenIntegr
      */
     @Test
     public void testit0030() throws Exception {
-        File testDir = extractResources("/it0030");
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Path testDir = extractResources("it0030");
+        Verifier verifier = newVerifier(testDir);
         verifier.deleteArtifact("org.apache.maven.it", "maven-it-it0030", "1.0-SNAPSHOT", "jar");
         verifier.deleteArtifact("org.apache.maven.it", "maven-it-it0030-child-hierarchy", "1.0-SNAPSHOT", "jar");
         verifier.deleteArtifact("org.apache.maven.it", "maven-it-it0030-child-project1", "1.0-SNAPSHOT", "jar");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0032MavenPrerequisiteTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0032MavenPrerequisiteTest.java
index 2635ea17f3..f35b701b54 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0032MavenPrerequisiteTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0032MavenPrerequisiteTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 
 import org.junit.jupiter.api.Test;
 
@@ -31,9 +31,9 @@ public class MavenIT0032MavenPrerequisiteTest extends AbstractMavenIntegrationTe
      */
     @Test
     public void testit0032() throws Exception {
-        File testDir = extractResources("/it0032");
+        Path testDir = extractResources("it0032");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.addCliArgument("initialize");
         verifier.execute();
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0037AlternatePomFileSameDirTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0037AlternatePomFileSameDirTest.java
index ed7bf847a1..54822c07f3 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0037AlternatePomFileSameDirTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0037AlternatePomFileSameDirTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 
 import org.junit.jupiter.api.Test;
 
@@ -37,9 +37,9 @@ public class MavenIT0037AlternatePomFileSameDirTest extends AbstractMavenIntegra
      */
     @Test
     public void testit0037() throws Exception {
-        File testDir = extractResources("/it0037");
+        Path testDir = extractResources("it0037");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         verifier.addCliArgument("-f");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0038AlternatePomFileDifferentDirTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0038AlternatePomFileDifferentDirTest.java
index a063d846a0..e11756d2ba 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0038AlternatePomFileDifferentDirTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0038AlternatePomFileDifferentDirTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 
 import org.junit.jupiter.api.Test;
 
@@ -37,9 +37,9 @@ public class MavenIT0038AlternatePomFileDifferentDirTest extends AbstractMavenIn
      */
     @Test
     public void testit0038() throws Exception {
-        File testDir = extractResources("/it0038");
+        Path testDir = extractResources("it0038");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("project/target");
         verifier.addCliArgument("-f");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0040PackagingFromPluginExtensionTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0040PackagingFromPluginExtensionTest.java
index cc428c5421..1daeb9527e 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0040PackagingFromPluginExtensionTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0040PackagingFromPluginExtensionTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 
 import org.junit.jupiter.api.Test;
 
@@ -37,9 +37,9 @@ public class MavenIT0040PackagingFromPluginExtensionTest extends AbstractMavenIn
      */
     @Test
     public void testit0040() throws Exception {
-        File testDir = extractResources("/it0040");
+        Path testDir = extractResources("it0040");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         verifier.addCliArgument("package");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0041ArtifactTypeFromPluginExtensionTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0041ArtifactTypeFromPluginExtensionTest.java
index 6d81d53338..97e755b2fe 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0041ArtifactTypeFromPluginExtensionTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0041ArtifactTypeFromPluginExtensionTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 
 import org.junit.jupiter.api.Test;
 
@@ -37,9 +37,9 @@ public class MavenIT0041ArtifactTypeFromPluginExtensionTest extends AbstractMave
      */
     @Test
     public void testit0041() throws Exception {
-        File testDir = extractResources("/it0041");
+        Path testDir = extractResources("it0041");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteArtifacts("org.apache.maven", "maven-core-it-support", "1.2");
         verifier.addCliArgument("--settings");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0051ReleaseProfileTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0051ReleaseProfileTest.java
index 7f25ea9daf..421e2187bd 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0051ReleaseProfileTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0051ReleaseProfileTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 
 import org.junit.jupiter.api.Disabled;
 import org.junit.jupiter.api.Test;
@@ -36,9 +36,9 @@ public class MavenIT0051ReleaseProfileTest extends AbstractMavenIntegrationTestC
      */
     @Test
     public void testit0051() throws Exception {
-        File testDir = extractResources("/it0051");
+        Path testDir = extractResources("it0051");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         verifier.addCliArgument("-DperformRelease=true");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0052ReleaseProfileTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0052ReleaseProfileTest.java
index a96088badc..64487950c0 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0052ReleaseProfileTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0052ReleaseProfileTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 
 import org.junit.jupiter.api.Test;
 
@@ -32,9 +32,9 @@ public class MavenIT0052ReleaseProfileTest extends AbstractMavenIntegrationTestC
      */
     @Test
     public void testit0052() throws Exception {
-        File testDir = extractResources("/it0052");
+        Path testDir = extractResources("it0052");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         verifier.addCliArgument("package");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0056MultipleGoalExecutionsTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0056MultipleGoalExecutionsTest.java
index d402c0050b..996214f84e 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0056MultipleGoalExecutionsTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0056MultipleGoalExecutionsTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 
 import org.junit.jupiter.api.Test;
 
@@ -32,9 +32,9 @@ public class MavenIT0056MultipleGoalExecutionsTest extends AbstractMavenIntegrat
      */
     @Test
     public void testit0056() throws Exception {
-        File testDir = extractResources("/it0056");
+        Path testDir = extractResources("it0056");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         verifier.addCliArgument("initialize");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0063SystemScopeDependencyTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0063SystemScopeDependencyTest.java
index fae8e0c9cb..67b857ed96 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0063SystemScopeDependencyTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0063SystemScopeDependencyTest.java
@@ -18,9 +18,8 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 import java.util.List;
-
 import org.junit.jupiter.api.Test;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
@@ -34,12 +33,12 @@ public class MavenIT0063SystemScopeDependencyTest extends AbstractMavenIntegrati
      */
     @Test
     public void testit0063() throws Exception {
-        File testDir = extractResources("/it0063");
+        Path testDir = extractResources("it0063");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
-        verifier.getSystemProperties().setProperty("jre.home", new File(testDir, "jdk/jre").getPath());
+        verifier.getSystemProperties().setProperty("jre.home", testDir.resolve("jdk/jre").toString());
         verifier.addCliArgument(
                 "org.apache.maven.its.plugins:maven-it-plugin-dependency-resolution:2.1-SNAPSHOT:compile");
         verifier.execute();
@@ -47,8 +46,8 @@ public void testit0063() throws Exception {
 
         List<String> lines = verifier.loadLines("target/compile.txt");
         assertEquals(2, lines.size());
-        assertEquals(
-                new File(testDir, "jdk/lib/tools.jar").getCanonicalFile(),
-                new File((String) lines.get(1)).getCanonicalFile());
+        ItUtils.assertCanonicalFileEquals(
+                testDir.resolve("jdk/lib/tools.jar"),
+                Path.of((String) lines.get(1)));
     }
 }
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0064MojoConfigViaSettersTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0064MojoConfigViaSettersTest.java
index 05fe48b2c4..920f35f6f1 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0064MojoConfigViaSettersTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0064MojoConfigViaSettersTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 
 import org.junit.jupiter.api.Test;
 
@@ -32,10 +32,10 @@ public class MavenIT0064MojoConfigViaSettersTest extends AbstractMavenIntegratio
      */
     @Test
     public void testit0064() throws Exception {
-        File testDir = extractResources("/it0064");
+        Path testDir = extractResources("it0064");
 
         // First, build the test plugin
-        Verifier verifier = newVerifier(new File(testDir, "maven-it-plugin-setter").getAbsolutePath());
+        Verifier verifier = newVerifier(testDir.resolve("maven-it-plugin-setter"));
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         verifier.addCliArgument("install");
@@ -43,7 +43,7 @@ public void testit0064() throws Exception {
         verifier.verifyErrorFreeLog();
 
         // Then, run the test project that uses the plugin
-        verifier = newVerifier(testDir.getAbsolutePath());
+        verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         verifier.addCliArgument("org.apache.maven.its.plugins:maven-it-plugin-setter:setter-touch");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0071PluginConfigWithDottedPropertyTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0071PluginConfigWithDottedPropertyTest.java
index 62f92b8a94..e25710fe96 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0071PluginConfigWithDottedPropertyTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0071PluginConfigWithDottedPropertyTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 
 import org.junit.jupiter.api.Test;
 
@@ -38,9 +38,9 @@ public class MavenIT0071PluginConfigWithDottedPropertyTest extends AbstractMaven
      */
     @Test
     public void testit0071() throws Exception {
-        File testDir = extractResources("/it0071");
+        Path testDir = extractResources("it0071");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         verifier.addCliArgument("org.apache.maven.its.plugins:maven-it-plugin-touch:touch");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0072InterpolationWithDottedPropertyTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0072InterpolationWithDottedPropertyTest.java
index 8dc63ad65f..6a8a98fadf 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0072InterpolationWithDottedPropertyTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0072InterpolationWithDottedPropertyTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 import java.util.Properties;
 
 import org.junit.jupiter.api.Test;
@@ -41,9 +41,9 @@ public class MavenIT0072InterpolationWithDottedPropertyTest extends AbstractMave
      */
     @Test
     public void testit0072() throws Exception {
-        File testDir = extractResources("/it0072");
+        Path testDir = extractResources("it0072");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         verifier.addCliArgument("validate");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0085TransitiveSystemScopeTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0085TransitiveSystemScopeTest.java
index ecb6fce524..62d9900f32 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0085TransitiveSystemScopeTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0085TransitiveSystemScopeTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 import java.util.Collection;
 
 import org.junit.jupiter.api.Test;
@@ -37,13 +37,13 @@ public class MavenIT0085TransitiveSystemScopeTest extends AbstractMavenIntegrati
      */
     @Test
     public void testit0085() throws Exception {
-        File testDir = extractResources("/it0085");
+        Path testDir = extractResources("it0085");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         verifier.deleteArtifacts("org.apache.maven.its.it0085");
-        verifier.getSystemProperties().setProperty("test.home", testDir.getAbsolutePath());
+        verifier.getSystemProperties().setProperty("test.home", testDir.toString());
         verifier.filterFile("settings-template.xml", "settings.xml");
         verifier.addCliArgument("--settings");
         verifier.addCliArgument("settings.xml");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0086PluginRealmTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0086PluginRealmTest.java
index 01897f7758..5f13b72ab8 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0086PluginRealmTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0086PluginRealmTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 import java.util.Properties;
 
 import org.junit.jupiter.api.Test;
@@ -42,8 +42,8 @@ public class MavenIT0086PluginRealmTest extends AbstractMavenIntegrationTestCase
      */
     @Test
     public void testit0086() throws Exception {
-        File testDir = extractResources("/it0086");
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Path testDir = extractResources("it0086");
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         verifier.addCliArgument("validate");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0087PluginRealmWithProjectLevelDepsTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0087PluginRealmWithProjectLevelDepsTest.java
index 1f95d9e0f7..b23f918e7b 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0087PluginRealmWithProjectLevelDepsTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0087PluginRealmWithProjectLevelDepsTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 import java.util.Properties;
 
 import org.junit.jupiter.api.Test;
@@ -42,8 +42,8 @@ public class MavenIT0087PluginRealmWithProjectLevelDepsTest extends AbstractMave
      */
     @Test
     public void testit0087() throws Exception {
-        File testDir = extractResources("/it0087");
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Path testDir = extractResources("it0087");
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         verifier.deleteArtifacts("org.apache.maven.its.it0087");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0090EnvVarInterpolationTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0090EnvVarInterpolationTest.java
index dcba8988ea..1f063aeff2 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0090EnvVarInterpolationTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0090EnvVarInterpolationTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 import java.util.Properties;
 
 import org.junit.jupiter.api.Test;
@@ -35,9 +35,9 @@ public class MavenIT0090EnvVarInterpolationTest extends AbstractMavenIntegration
      */
     @Test
     public void testit0090() throws Exception {
-        File testDir = extractResources("/it0090");
+        Path testDir = extractResources("it0090");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         verifier.setEnvironmentVariable("MAVEN_TEST_ENVAR", "MAVEN_TEST_ENVAR_VALUE");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0108SnapshotUpdateTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0108SnapshotUpdateTest.java
index 87bc11fd89..c71ebac431 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0108SnapshotUpdateTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0108SnapshotUpdateTest.java
@@ -18,15 +18,14 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
 import java.io.IOException;
 import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.attribute.FileTime;
 import java.text.SimpleDateFormat;
 import java.util.Calendar;
 import java.util.Date;
 import java.util.Locale;
-
-import org.codehaus.plexus.util.FileUtils;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Disabled;
 import org.junit.jupiter.api.Test;
@@ -42,30 +41,29 @@ public class MavenIT0108SnapshotUpdateTest extends AbstractMavenIntegrationTestC
 
     private Verifier verifier;
 
-    private File artifact;
+    private Path artifact;
 
-    private File repository;
+    private Path repository;
 
-    private File localRepoFile;
+    private Path localRepoFile;
 
     private static final int TIME_OFFSET = 50000;
 
     @BeforeEach
     protected void setUp() throws Exception {
-        File testDir = extractResources("/it0108");
-        verifier = newVerifier(testDir.getAbsolutePath());
+        Path testDir = extractResources("it0108");
+        verifier = newVerifier(testDir);
         localRepoFile = getLocalRepoFile(verifier);
         deleteLocalArtifact(verifier, localRepoFile);
 
-        repository = new File(testDir, "repository");
+        repository = testDir.resolve("repository");
         recreateRemoteRepository(repository);
 
         // create artifact in repository (TODO: into verifier)
-        artifact = new File(
-                repository,
+        artifact = repository.resolve(
                 "org/apache/maven/maven-core-it-support/1.0-SNAPSHOT/maven-core-it-support-1.0-SNAPSHOT.jar");
-        artifact.getParentFile().mkdirs();
-        Files.writeString(artifact.getAbsoluteFile().toPath(), "originalArtifact");
+        Files.createDirectories(artifact.getParent());
+        Files.writeString(artifact, "originalArtifact");
 
         verifier.verifyArtifactNotPresent("org.apache.maven", "maven-core-it-support", "1.0-SNAPSHOT", "jar");
     }
@@ -80,9 +78,9 @@ public void testSnapshotUpdated() throws Exception {
         verifyArtifactContent("originalArtifact");
 
         // set in the past to ensure it is downloaded
-        localRepoFile.setLastModified(System.currentTimeMillis() - TIME_OFFSET);
+        Files.setLastModifiedTime(localRepoFile, FileTime.fromMillis(System.currentTimeMillis() - TIME_OFFSET));
 
-        Files.writeString(artifact.getAbsoluteFile().toPath(), "updatedArtifact");
+        Files.writeString(artifact, "updatedArtifact");
 
         verifier.addCliArgument("package");
         verifier.execute();
@@ -94,9 +92,9 @@ public void testSnapshotUpdated() throws Exception {
 
     @Test
     public void testSnapshotUpdatedWithMetadata() throws Exception {
-        File metadata = new File(repository, "org/apache/maven/maven-core-it-support/1.0-SNAPSHOT/maven-metadata.xml");
+        Path metadata = repository.resolve("org/apache/maven/maven-core-it-support/1.0-SNAPSHOT/maven-metadata.xml");
         Files.writeString(
-                metadata.getAbsoluteFile().toPath(),
+                metadata,
                 constructMetadata("1", System.currentTimeMillis() - TIME_OFFSET, true));
 
         verifier.addCliArgument("package");
@@ -106,10 +104,10 @@ public void testSnapshotUpdatedWithMetadata() throws Exception {
 
         verifyArtifactContent("originalArtifact");
 
-        Files.writeString(artifact.getAbsoluteFile().toPath(), "updatedArtifact");
-        metadata = new File(repository, "org/apache/maven/maven-core-it-support/1.0-SNAPSHOT/maven-metadata.xml");
+        Files.writeString(artifact, "updatedArtifact");
+        metadata = repository.resolve("org/apache/maven/maven-core-it-support/1.0-SNAPSHOT/maven-metadata.xml");
         Files.writeString(
-                metadata.getAbsoluteFile().toPath(), constructMetadata("2", System.currentTimeMillis(), true));
+                metadata, constructMetadata("2", System.currentTimeMillis(), true));
 
         verifier.addCliArgument("package");
         verifier.execute();
@@ -121,15 +119,15 @@ public void testSnapshotUpdatedWithMetadata() throws Exception {
 
     @Test
     public void testSnapshotUpdatedWithLocalMetadata() throws Exception {
-        File localMetadata = getMetadataFile("org/apache/maven", "maven-core-it-support", "1.0-SNAPSHOT");
+        Path localMetadata = getMetadataFile("org/apache/maven", "maven-core-it-support", "1.0-SNAPSHOT");
 
-        FileUtils.deleteDirectory(localMetadata.getParentFile());
-        assertFalse(localMetadata.getParentFile().exists());
-        localMetadata.getParentFile().mkdirs();
+        ItUtils.deleteDirectory(localMetadata.getParent());
+        assertFalse(Files.exists(localMetadata.getParent()));
+        Files.createDirectories(localMetadata.getParent());
 
-        File metadata = new File(repository, "org/apache/maven/maven-core-it-support/1.0-SNAPSHOT/maven-metadata.xml");
+        Path metadata = repository.resolve("org/apache/maven/maven-core-it-support/1.0-SNAPSHOT/maven-metadata.xml");
         Files.writeString(
-                metadata.getAbsoluteFile().toPath(),
+                metadata,
                 constructMetadata("1", System.currentTimeMillis() - TIME_OFFSET, true));
 
         verifier.addCliArgument("package");
@@ -138,14 +136,14 @@ public void testSnapshotUpdatedWithLocalMetadata() throws Exception {
         verifier.verifyErrorFreeLog();
 
         verifyArtifactContent("originalArtifact");
-        assertFalse(localMetadata.exists());
+        assertFalse(Files.exists(localMetadata));
 
-        Files.writeString(localRepoFile.getAbsoluteFile().toPath(), "localArtifact");
+        Files.writeString(localRepoFile, "localArtifact");
         Files.writeString(
-                localMetadata.getAbsoluteFile().toPath(),
+                localMetadata,
                 constructLocalMetadata("org.apache.maven", "maven-core-it-support", System.currentTimeMillis(), true));
         // update the remote file, but we shouldn't be looking
-        artifact.setLastModified(System.currentTimeMillis());
+        Files.setLastModifiedTime(artifact, FileTime.fromMillis(System.currentTimeMillis()));
 
         verifier.addCliArgument("package");
         verifier.execute();
@@ -157,11 +155,11 @@ public void testSnapshotUpdatedWithLocalMetadata() throws Exception {
         Calendar cal = Calendar.getInstance();
         cal.add(Calendar.YEAR, -1);
         Files.writeString(
-                localMetadata.getAbsoluteFile().toPath(),
+                localMetadata,
                 constructLocalMetadata("org.apache.maven", "maven-core-it-support", cal.getTimeInMillis(), true));
         Files.writeString(
-                metadata.getAbsoluteFile().toPath(), constructMetadata("2", System.currentTimeMillis() - 2000, true));
-        artifact.setLastModified(System.currentTimeMillis());
+                metadata, constructMetadata("2", System.currentTimeMillis() - 2000, true));
+        Files.setLastModifiedTime(artifact, FileTime.fromMillis(System.currentTimeMillis()));
 
         verifier.addCliArgument("package");
         verifier.execute();
@@ -173,11 +171,11 @@ public void testSnapshotUpdatedWithLocalMetadata() throws Exception {
 
     @Test
     public void testSnapshotUpdatedWithMetadataUsingFileTimestamp() throws Exception {
-        File metadata = new File(repository, "org/apache/maven/maven-core-it-support/1.0-SNAPSHOT/maven-metadata.xml");
+        Path metadata = repository.resolve("org/apache/maven/maven-core-it-support/1.0-SNAPSHOT/maven-metadata.xml");
         Files.writeString(
-                metadata.getAbsoluteFile().toPath(),
+                metadata,
                 constructMetadata("1", System.currentTimeMillis() - TIME_OFFSET, false));
-        metadata.setLastModified(System.currentTimeMillis() - TIME_OFFSET);
+        Files.setLastModifiedTime(metadata, FileTime.fromMillis(System.currentTimeMillis() - TIME_OFFSET));
 
         verifier.addCliArgument("package");
         verifier.execute();
@@ -186,10 +184,10 @@ public void testSnapshotUpdatedWithMetadataUsingFileTimestamp() throws Exception
 
         verifyArtifactContent("originalArtifact");
 
-        Files.writeString(artifact.getAbsoluteFile().toPath(), "updatedArtifact");
-        metadata = new File(repository, "org/apache/maven/maven-core-it-support/1.0-SNAPSHOT/maven-metadata.xml");
+        Files.writeString(artifact, "updatedArtifact");
+        metadata = repository.resolve("org/apache/maven/maven-core-it-support/1.0-SNAPSHOT/maven-metadata.xml");
         Files.writeString(
-                metadata.getAbsoluteFile().toPath(), constructMetadata("2", System.currentTimeMillis(), false));
+                metadata, constructMetadata("2", System.currentTimeMillis(), false));
 
         verifier.addCliArgument("package");
         verifier.execute();
@@ -199,8 +197,8 @@ public void testSnapshotUpdatedWithMetadataUsingFileTimestamp() throws Exception
         verifier.verifyErrorFreeLog();
     }
 
-    private File getMetadataFile(String groupId, String artifactId, String version) {
-        return new File(verifier.getArtifactMetadataPath(groupId, artifactId, version, "maven-metadata-local.xml"));
+    private Path getMetadataFile(String groupId, String artifactId, String version) {
+        return verifier.getArtifactMetadataPath(groupId, artifactId, version, "maven-metadata-local.xml");
     }
 
     private void verifyArtifactContent(String s) throws IOException, VerificationException {
@@ -208,22 +206,22 @@ private void verifyArtifactContent(String s) throws IOException, VerificationExc
         verifier.verifyArtifactContent("org.apache.maven", "maven-core-it-support", "1.0-SNAPSHOT", "jar", s);
     }
 
-    private static File deleteLocalArtifact(Verifier verifier, File localRepoFile) throws IOException {
+    private static Path deleteLocalArtifact(Verifier verifier, Path localRepoFile) throws IOException {
         verifier.deleteArtifact("org.apache.maven", "maven-core-it-support", "1.0-SNAPSHOT", "jar");
         // this is to delete metadata - TODO: incorporate into deleteArtifact in verifier
-        FileUtils.deleteDirectory(localRepoFile.getParentFile());
+        ItUtils.deleteDirectory(localRepoFile.getParent());
         return localRepoFile;
     }
 
-    private static File getLocalRepoFile(Verifier verifier) {
-        return new File(verifier.getArtifactPath("org.apache.maven", "maven-core-it-support", "1.0-SNAPSHOT", "jar"));
+    private static Path getLocalRepoFile(Verifier verifier) {
+        return verifier.getArtifactPath("org.apache.maven", "maven-core-it-support", "1.0-SNAPSHOT", "jar");
     }
 
-    private static void recreateRemoteRepository(File repository) throws IOException {
+    private static void recreateRemoteRepository(Path repository) throws IOException {
         // create a repository (TODO: into verifier)
-        FileUtils.deleteDirectory(repository);
-        assertFalse(repository.exists());
-        repository.mkdirs();
+        ItUtils.deleteDirectory(repository);
+        assertFalse(Files.exists(repository));
+        Files.createDirectories(repository);
     }
 
     private String constructMetadata(String buildNumber, long timestamp, boolean writeLastUpdated) {
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0113ServerAuthzAvailableToWagonMgrInPluginTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0113ServerAuthzAvailableToWagonMgrInPluginTest.java
index 2330bfa28d..e31888b2a4 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0113ServerAuthzAvailableToWagonMgrInPluginTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0113ServerAuthzAvailableToWagonMgrInPluginTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 import java.util.Properties;
 
 import org.junit.jupiter.api.Test;
@@ -35,9 +35,9 @@ public class MavenIT0113ServerAuthzAvailableToWagonMgrInPluginTest extends Abstr
      */
     @Test
     public void testit0113() throws Exception {
-        File testDir = extractResources("/it0113");
+        Path testDir = extractResources("it0113");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         verifier.addCliArgument("--settings");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0130CleanLifecycleTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0130CleanLifecycleTest.java
index 9a7a04ed78..42b8a46b45 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0130CleanLifecycleTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0130CleanLifecycleTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 
 import org.junit.jupiter.api.Test;
 
@@ -36,9 +36,9 @@ public class MavenIT0130CleanLifecycleTest extends AbstractMavenIntegrationTestC
      */
     @Test
     public void testit0130() throws Exception {
-        File testDir = extractResources("/it0130");
+        Path testDir = extractResources("it0130");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.deleteDirectory("target");
         verifier.setAutoclean(false);
         verifier.addCliArgument("clean");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0131SiteLifecycleTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0131SiteLifecycleTest.java
index 35705e12b6..96b59a56a0 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0131SiteLifecycleTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0131SiteLifecycleTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 
 import org.junit.jupiter.api.Test;
 
@@ -36,9 +36,9 @@ public class MavenIT0131SiteLifecycleTest extends AbstractMavenIntegrationTestCa
      */
     @Test
     public void testit0131() throws Exception {
-        File testDir = extractResources("/it0131");
+        Path testDir = extractResources("it0131");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.deleteDirectory("target");
         verifier.setAutoclean(false);
         verifier.addCliArgument("site-deploy");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0132PomLifecycleTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0132PomLifecycleTest.java
index bc225cf4d0..90a0c241dc 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0132PomLifecycleTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0132PomLifecycleTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 
 import org.junit.jupiter.api.Test;
 
@@ -36,9 +36,9 @@ public class MavenIT0132PomLifecycleTest extends AbstractMavenIntegrationTestCas
      */
     @Test
     public void testit0132() throws Exception {
-        File testDir = extractResources("/it0132");
+        Path testDir = extractResources("it0132");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.deleteDirectory("target");
         verifier.setAutoclean(false);
         verifier.addCliArgument("deploy");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0133JarLifecycleTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0133JarLifecycleTest.java
index 5214843cc7..161fab2a35 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0133JarLifecycleTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0133JarLifecycleTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 
 import org.junit.jupiter.api.Test;
 
@@ -36,9 +36,9 @@ public class MavenIT0133JarLifecycleTest extends AbstractMavenIntegrationTestCas
      */
     @Test
     public void testit0133() throws Exception {
-        File testDir = extractResources("/it0133");
+        Path testDir = extractResources("it0133");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.deleteDirectory("target");
         verifier.setAutoclean(false);
         verifier.addCliArgument("deploy");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0134WarLifecycleTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0134WarLifecycleTest.java
index d75f9307fc..dce86ae750 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0134WarLifecycleTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0134WarLifecycleTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 
 import org.junit.jupiter.api.Test;
 
@@ -36,9 +36,9 @@ public class MavenIT0134WarLifecycleTest extends AbstractMavenIntegrationTestCas
      */
     @Test
     public void testit0134() throws Exception {
-        File testDir = extractResources("/it0134");
+        Path testDir = extractResources("it0134");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.deleteDirectory("target");
         verifier.setAutoclean(false);
         verifier.addCliArgument("deploy");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0135EjbLifecycleTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0135EjbLifecycleTest.java
index 18cceed81e..cde5158c81 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0135EjbLifecycleTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0135EjbLifecycleTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 
 import org.junit.jupiter.api.Test;
 
@@ -36,9 +36,9 @@ public class MavenIT0135EjbLifecycleTest extends AbstractMavenIntegrationTestCas
      */
     @Test
     public void testit0135() throws Exception {
-        File testDir = extractResources("/it0135");
+        Path testDir = extractResources("it0135");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.deleteDirectory("target");
         verifier.setAutoclean(false);
         verifier.addCliArgument("deploy");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0136RarLifecycleTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0136RarLifecycleTest.java
index 6f194b42a2..58e09365cd 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0136RarLifecycleTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0136RarLifecycleTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 
 import org.junit.jupiter.api.Test;
 
@@ -36,9 +36,9 @@ public class MavenIT0136RarLifecycleTest extends AbstractMavenIntegrationTestCas
      */
     @Test
     public void testit0136() throws Exception {
-        File testDir = extractResources("/it0136");
+        Path testDir = extractResources("it0136");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.deleteDirectory("target");
         verifier.setAutoclean(false);
         verifier.addCliArgument("deploy");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0137EarLifecycleTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0137EarLifecycleTest.java
index bb61e482dc..6e1eec95d0 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0137EarLifecycleTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0137EarLifecycleTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 
 import org.junit.jupiter.api.Test;
 
@@ -36,9 +36,9 @@ public class MavenIT0137EarLifecycleTest extends AbstractMavenIntegrationTestCas
      */
     @Test
     public void testit0137() throws Exception {
-        File testDir = extractResources("/it0137");
+        Path testDir = extractResources("it0137");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.deleteDirectory("target");
         verifier.setAutoclean(false);
         verifier.addCliArgument("deploy");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0138PluginLifecycleTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0138PluginLifecycleTest.java
index e7dd44ed0c..44ff2f9b4b 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0138PluginLifecycleTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0138PluginLifecycleTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 
 import org.junit.jupiter.api.Test;
 
@@ -36,9 +36,9 @@ public class MavenIT0138PluginLifecycleTest extends AbstractMavenIntegrationTest
      */
     @Test
     public void testit0138() throws Exception {
-        File testDir = extractResources("/it0138");
+        Path testDir = extractResources("it0138");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.deleteDirectory("target");
         verifier.setAutoclean(false);
         verifier.addCliArgument("deploy");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0139InterpolationWithProjectPrefixTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0139InterpolationWithProjectPrefixTest.java
index fd321c401b..b6da8c2d4a 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0139InterpolationWithProjectPrefixTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0139InterpolationWithProjectPrefixTest.java
@@ -18,9 +18,8 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 import java.util.Properties;
-
 import org.junit.jupiter.api.Test;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
@@ -40,10 +39,10 @@ public class MavenIT0139InterpolationWithProjectPrefixTest extends AbstractMaven
      */
     @Test
     public void testit0139() throws Exception {
-        File testDir = extractResources("/it0139");
-        File child = new File(testDir, "child");
+        Path testDir = extractResources("it0139");
+        Path child = testDir.resolve("child");
 
-        Verifier verifier = newVerifier(child.getAbsolutePath());
+        Verifier verifier = newVerifier(child);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         verifier.addCliArgument("initialize");
@@ -53,7 +52,7 @@ public void testit0139() throws Exception {
         Properties props = verifier.loadProperties("target/interpolated.properties");
         String prefix = "project.properties.";
 
-        assertEquals(child.getCanonicalFile(), new File(props.getProperty(prefix + "projectDir")).getCanonicalFile());
+        ItUtils.assertCanonicalFileEquals(child, Path.of(props.getProperty(prefix + "projectDir")));
 
         assertEquals("org.apache.maven.its.it0139.child", props.getProperty(prefix + "projectGroupId"));
         assertEquals("child", props.getProperty(prefix + "projectArtifactId"));
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0140InterpolationWithPomPrefixTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0140InterpolationWithPomPrefixTest.java
index ccba8249be..0d4fe2136d 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0140InterpolationWithPomPrefixTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0140InterpolationWithPomPrefixTest.java
@@ -18,9 +18,8 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 import java.util.Properties;
-
 import org.junit.jupiter.api.Disabled;
 import org.junit.jupiter.api.Test;
 
@@ -44,10 +43,10 @@ public class MavenIT0140InterpolationWithPomPrefixTest extends AbstractMavenInte
      */
     @Test
     public void testit0140() throws Exception {
-        File testDir = extractResources("/it0140");
-        File child = new File(testDir, "child");
+        Path testDir = extractResources("it0140");
+        Path child = testDir.resolve("child");
 
-        Verifier verifier = newVerifier(child.getAbsolutePath());
+        Verifier verifier = newVerifier(child);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         verifier.addCliArgument("initialize");
@@ -57,7 +56,7 @@ public void testit0140() throws Exception {
         Properties props = verifier.loadProperties("target/interpolated.properties");
         String prefix = "project.properties.";
 
-        assertEquals(child.getCanonicalFile(), new File(props.getProperty(prefix + "projectDir")).getCanonicalFile());
+        ItUtils.assertCanonicalFileEquals(child, Path.of(props.getProperty(prefix + "projectDir")));
 
         assertEquals("org.apache.maven.its.it0140.child", props.getProperty(prefix + "projectGroupId"));
         assertEquals("child", props.getProperty(prefix + "projectArtifactId"));
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0142DirectDependencyScopesTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0142DirectDependencyScopesTest.java
index 35ee6c1135..04cbe6b8c1 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0142DirectDependencyScopesTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0142DirectDependencyScopesTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 import java.util.List;
 
 import org.junit.jupiter.api.Test;
@@ -44,9 +44,9 @@ public class MavenIT0142DirectDependencyScopesTest extends AbstractMavenIntegrat
      */
     @Test
     public void testit0142() throws Exception {
-        File testDir = extractResources("/it0142");
+        Path testDir = extractResources("it0142");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         verifier.deleteArtifacts("org.apache.maven.its.it0142");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0143TransitiveDependencyScopesTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0143TransitiveDependencyScopesTest.java
index bb9784731f..41599187ea 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0143TransitiveDependencyScopesTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0143TransitiveDependencyScopesTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 import java.util.List;
 import java.util.Map;
 
@@ -237,9 +237,9 @@ public void testitTestScope() throws Exception {
     }
 
     private Verifier run(String scope) throws Exception {
-        File testDir = extractResources("/it0143");
+        Path testDir = extractResources("it0143");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target-" + scope);
         verifier.deleteArtifacts("org.apache.maven.its.it0143");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0144LifecycleExecutionOrderTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0144LifecycleExecutionOrderTest.java
index 8d54d8315c..346c3d38df 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0144LifecycleExecutionOrderTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0144LifecycleExecutionOrderTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -39,9 +39,9 @@ public class MavenIT0144LifecycleExecutionOrderTest extends AbstractMavenIntegra
      */
     @Test
     public void testit0144() throws Exception {
-        File testDir = extractResources("/it0144");
+        Path testDir = extractResources("it0144");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.deleteDirectory("target");
         verifier.setAutoclean(false);
         verifier.addCliArguments("post-clean", "deploy", "site-deploy");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0146InstallerSnapshotNaming.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0146InstallerSnapshotNaming.java
index a6d1bcb520..2734e74afe 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0146InstallerSnapshotNaming.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0146InstallerSnapshotNaming.java
@@ -18,11 +18,10 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
 import java.io.IOException;
 import java.net.InetAddress;
+import java.nio.file.Path;
 import java.util.Map;
-
 import org.eclipse.jetty.server.Handler;
 import org.eclipse.jetty.server.NetworkConnector;
 import org.eclipse.jetty.server.Server;
@@ -41,17 +40,17 @@ public class MavenIT0146InstallerSnapshotNaming extends AbstractMavenIntegration
 
     private int port;
 
-    private final File testDir;
+    private final Path testDir;
 
     public MavenIT0146InstallerSnapshotNaming() throws IOException {
         super();
-        testDir = extractResources("/it0146");
+        testDir = extractResources("it0146");
     }
 
     @BeforeEach
     protected void setUp() throws Exception {
         ResourceHandler resourceHandler = new ResourceHandler();
-        resourceHandler.setResourceBase(new File(testDir, "repo").getAbsolutePath());
+        resourceHandler.setResourceBase(testDir.resolve("repo").toString());
         HandlerList handlers = new HandlerList();
         handlers.setHandlers(new Handler[] {resourceHandler, new DefaultHandler()});
 
@@ -75,7 +74,7 @@ protected void tearDown() throws Exception {
 
     @Test
     public void testitRemoteDownloadTimestampedName() throws Exception {
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
 
         Map<String, String> properties = verifier.newDefaultFilterMap();
         properties.put("@host@", InetAddress.getLoopbackAddress().getCanonicalHostName());
@@ -101,7 +100,7 @@ public void testitRemoteDownloadTimestampedName() throws Exception {
 
     @Test
     public void testitNonTimestampedNameWithInstalledSNAPSHOT() throws Exception {
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.deleteArtifacts("org.apache.maven.its.it0146");
         verifier.addCliArgument("-f");
         verifier.addCliArgument("project/pom.xml");
@@ -112,7 +111,7 @@ public void testitNonTimestampedNameWithInstalledSNAPSHOT() throws Exception {
         verifier.execute();
         verifier.verifyErrorFreeLog();
 
-        verifier = newVerifier(testDir.getAbsolutePath());
+        verifier = newVerifier(testDir);
 
         Map<String, String> properties = verifier.newDefaultFilterMap();
         properties.put("@host@", InetAddress.getLoopbackAddress().getCanonicalHostName());
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0199CyclicImportScopeTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0199CyclicImportScopeTest.java
index 58c5c7098d..b67ee15aa8 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0199CyclicImportScopeTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenIT0199CyclicImportScopeTest.java
@@ -18,8 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
-
+import java.nio.file.Path;
 import org.junit.jupiter.api.Test;
 
 public class MavenIT0199CyclicImportScopeTest extends AbstractMavenIntegrationTestCase {
@@ -39,8 +38,8 @@ public void testit0199() throws Exception {
     }
 
     private void build(String module, String expectedArtifact) throws Exception {
-        File testDir = extractResources("/cyclic-import-scope");
-        Verifier verifier = newVerifier(new File(testDir.getAbsolutePath(), module).getAbsolutePath());
+        Path testDir = extractResources("cyclic-import-scope");
+        Verifier verifier = newVerifier(testDir.resolve(module));
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         verifier.addCliArgument("install");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITBootstrapTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITBootstrapTest.java
index 0c13751f48..407a9cfa2e 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITBootstrapTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITBootstrapTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 
 import org.junit.jupiter.api.Test;
 
@@ -38,9 +38,9 @@ public class MavenITBootstrapTest extends AbstractMavenIntegrationTestCase {
      */
     @Test
     public void testBootstrap() throws Exception {
-        File testDir = extractResources("/bootstrap");
+        Path testDir = extractResources("bootstrap");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath(), "remote");
+        Verifier verifier = newVerifier(testDir.toString(), "remote");
         verifier.setAutoclean(false);
         verifier.addCliArgument("--settings");
         verifier.addCliArgument("settings.xml");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITConsumerPomBomFromSettingsRepoTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITConsumerPomBomFromSettingsRepoTest.java
index 22f9139109..079173f781 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITConsumerPomBomFromSettingsRepoTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITConsumerPomBomFromSettingsRepoTest.java
@@ -57,11 +57,9 @@ class MavenITConsumerPomBomFromSettingsRepoTest extends AbstractMavenIntegration
      */
     @Test
     void testConsumerPomWithBomFromSettingsProfileRepo() throws Exception {
-        Path basedir = extractResources("/gh-11767-consumer-pom-bom-from-settings-repo")
-                .toPath()
-                .toAbsolutePath();
+        Path basedir = extractResources("gh-11767-consumer-pom-bom-from-settings-repo");
 
-        Verifier verifier = newVerifier(basedir.toString());
+        Verifier verifier = newVerifier(basedir);
         verifier.deleteArtifacts("org.apache.maven.its.cpbom");
 
         // Apply settings template with the custom repository URL
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITMissingNamespaceTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITMissingNamespaceTest.java
index f0d735dad0..64fde45f8a 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITMissingNamespaceTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITMissingNamespaceTest.java
@@ -18,8 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
-
+import java.nio.file.Path;
 import org.junit.jupiter.api.Test;
 
 public class MavenITMissingNamespaceTest extends AbstractMavenIntegrationTestCase {
@@ -32,8 +31,8 @@ public MavenITMissingNamespaceTest() {
      */
     @Test
     public void testMissingNamespace() throws Exception {
-        File testDir = extractResources("/missing-namespace");
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Path testDir = extractResources("missing-namespace");
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         verifier.addCliArgument("validate");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITgh10210SettingsXmlDecryptTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITgh10210SettingsXmlDecryptTest.java
index 63fcaad34f..fc8152f284 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITgh10210SettingsXmlDecryptTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITgh10210SettingsXmlDecryptTest.java
@@ -18,10 +18,9 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
 import java.nio.file.Files;
+import java.nio.file.Path;
 import java.util.Arrays;
-
 import org.junit.Assert;
 import org.junit.jupiter.api.Test;
 
@@ -33,10 +32,10 @@ class MavenITgh10210SettingsXmlDecryptTest extends AbstractMavenIntegrationTestC
 
     @Test
     void testItPass() throws Exception {
-        File testDir = extractResources("/gh-10210-settings-xml-decrypt");
+        Path testDir = extractResources("gh-10210-settings-xml-decrypt");
 
-        Verifier verifier = new Verifier(testDir.getAbsolutePath());
-        verifier.setUserHomeDirectory(testDir.toPath().resolve("HOME"));
+        Verifier verifier = newVerifier(testDir);
+        verifier.setUserHomeDirectory(testDir.resolve("HOME"));
         verifier.addCliArgument("-s");
         verifier.addCliArgument("settings-passes.xml");
         verifier.addCliArgument("process-resources");
@@ -51,15 +50,15 @@ void testItPass() throws Exception {
                         "prop5=Hello Oleg {L6L/HbmrY+cH+sNkphnq3fguYepTpM04WlIXb8nB1pk=} is this a password?",
                         "prop6=password",
                         "prop7=password"),
-                Files.readAllLines(testDir.toPath().resolve("target/classes/file.properties")));
+                Files.readAllLines(testDir.resolve("target/classes/file.properties")));
     }
 
     @Test
     void testItFail() throws Exception {
-        File testDir = extractResources("/gh-10210-settings-xml-decrypt");
+        Path testDir = extractResources("gh-10210-settings-xml-decrypt");
 
-        Verifier verifier = new Verifier(testDir.getAbsolutePath());
-        verifier.setUserHomeDirectory(testDir.toPath().resolve("HOME"));
+        Verifier verifier = newVerifier(testDir);
+        verifier.setUserHomeDirectory(testDir.resolve("HOME"));
         verifier.addCliArgument("-s");
         verifier.addCliArgument("settings-fails.xml");
         verifier.addCliArgument("process-resources");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITgh10312TerminallyDeprecatedMethodInGuiceTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITgh10312TerminallyDeprecatedMethodInGuiceTest.java
index e0c8107010..ac371829e7 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITgh10312TerminallyDeprecatedMethodInGuiceTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITgh10312TerminallyDeprecatedMethodInGuiceTest.java
@@ -18,8 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
-
+import java.nio.file.Path;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.condition.EnabledForJreRange;
 import org.junit.jupiter.api.condition.JRE;
@@ -32,15 +31,18 @@
  */
 class MavenITgh10312TerminallyDeprecatedMethodInGuiceTest extends AbstractMavenIntegrationTestCase {
 
+    private static final String RESOURCE_PATH = "gh-10312-terminally-deprecated-method-in-guice";
+
     MavenITgh10312TerminallyDeprecatedMethodInGuiceTest() {}
 
     @Test
     @EnabledForJreRange(min = JRE.JAVA_24)
     void worryingShouldNotBePrinted() throws Exception {
-        File testDir = extractResources("/gh-10312-terminally-deprecated-method-in-guice");
+        Path testDir = extractResources(RESOURCE_PATH);
 
-        Verifier verifier = new Verifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir, null);
         verifier.setForkJvm(true);
+        verifier.setLogFileName("log-no-warning.txt");
         verifier.addCliArgument("validate");
         verifier.execute();
 
@@ -56,10 +58,11 @@ void worryingShouldNotBePrinted() throws Exception {
     @Test
     @EnabledForJreRange(min = JRE.JAVA_24, max = JRE.JAVA_25)
     void allowOverwriteByUser() throws Exception {
-        File testDir = extractResources("/gh-10312-terminally-deprecated-method-in-guice");
+        Path testDir = extractResources(RESOURCE_PATH);
 
-        Verifier verifier = new Verifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir, null);
         verifier.setForkJvm(true);
+        verifier.setLogFileName("log-warning.txt");
         verifier.addCliArgument("validate");
         verifier.addCliArgument("-Dguice_custom_class_loading=BRIDGE");
         verifier.execute();
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITgh10937QuotedPipesInMavenOptsTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITgh10937QuotedPipesInMavenOptsTest.java
index 0765147c80..73d614dcc0 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITgh10937QuotedPipesInMavenOptsTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITgh10937QuotedPipesInMavenOptsTest.java
@@ -38,9 +38,9 @@ class MavenITgh10937QuotedPipesInMavenOptsTest extends AbstractMavenIntegrationT
     @Test
     void testIt() throws Exception {
         Path basedir =
-                extractResources("/gh-10937-pipes-maven-opts").getAbsoluteFile().toPath();
+                extractResources("gh-10937-pipes-maven-opts");
 
-        Verifier verifier = newVerifier(basedir.toString());
+        Verifier verifier = newVerifier(basedir);
         verifier.setEnvironmentVariable("MAVEN_OPTS", "-Dprop.maven-opts=\"foo|bar\"");
         // Enable debug logging for launcher script to diagnose jvm.config parsing issues
         verifier.setEnvironmentVariable("MAVEN_DEBUG_SCRIPT", "1");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITgh11055DIServiceInjectionTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITgh11055DIServiceInjectionTest.java
index 89fe0445e0..a30027ed25 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITgh11055DIServiceInjectionTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITgh11055DIServiceInjectionTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 
 import org.junit.jupiter.api.Test;
 
@@ -34,9 +34,9 @@ class MavenITgh11055DIServiceInjectionTest extends AbstractMavenIntegrationTestC
 
     @Test
     void testGetServiceSucceeds() throws Exception {
-        File testDir = extractResources("/gh-11055-di-service-injection");
+        Path testDir = extractResources("gh-11055-di-service-injection");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.addCliArgument("verify");
         verifier.execute();
         verifier.verifyErrorFreeLog();
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITgh11084ReactorReaderPreferConsumerPomTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITgh11084ReactorReaderPreferConsumerPomTest.java
index 3dce0d548f..cd8edd1321 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITgh11084ReactorReaderPreferConsumerPomTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITgh11084ReactorReaderPreferConsumerPomTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 
 import org.junit.jupiter.api.Test;
 
@@ -31,17 +31,17 @@ class MavenITgh11084ReactorReaderPreferConsumerPomTest extends AbstractMavenInte
 
     @Test
     void partialReactorShouldResolveUsingConsumerPom() throws Exception {
-        File testDir = extractResources("/gh-11084-reactorreader-prefer-consumer-pom");
+        Path testDir = extractResources("gh-11084-reactorreader-prefer-consumer-pom");
 
         // First build module a to populate project-local-repo with artifacts including consumer POM
-        Verifier v1 = newVerifier(testDir.getAbsolutePath());
+        Verifier v1 = newVerifier(testDir);
         v1.addCliArguments("clean", "package", "-X", "-Dmaven.consumer.pom.flatten=true");
         v1.setLogFileName("log-1.txt");
         v1.execute();
         v1.verifyErrorFreeLog();
 
         // Now build only module b; ReactorReader should pick consumer POM from project-local-repo
-        Verifier v2 = newVerifier(testDir.getAbsolutePath());
+        Verifier v2 = newVerifier(testDir);
         v2.setLogFileName("log-2.txt");
         v2.addCliArguments("clean", "compile", "-f", "b", "-X", "-Dmaven.consumer.pom.flatten=true");
         v2.execute();
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITgh11140RepoDmUnresolvedTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITgh11140RepoDmUnresolvedTest.java
index 3032fe769c..f4831f2cfd 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITgh11140RepoDmUnresolvedTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITgh11140RepoDmUnresolvedTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 
 import org.junit.jupiter.api.Test;
 
@@ -31,8 +31,8 @@ class MavenITgh11140RepoDmUnresolvedTest extends AbstractMavenIntegrationTestCas
 
     @Test
     void testWarnsOnUnresolvedPlaceholders() throws Exception {
-        File testDir = extractResources("/gh-11140-repo-dm-unresolved");
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Path testDir = extractResources("gh-11140-repo-dm-unresolved");
+        Verifier verifier = newVerifier(testDir);
 
         verifier.addCliArgument("validate");
         verifier.execute();
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITgh11140RepoInterpolationTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITgh11140RepoInterpolationTest.java
index b9a9298dee..84c7235e7d 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITgh11140RepoInterpolationTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITgh11140RepoInterpolationTest.java
@@ -18,10 +18,8 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
 import java.nio.file.Path;
 import java.util.List;
-
 import org.junit.jupiter.api.Test;
 
 import static org.junit.jupiter.api.Assertions.assertTrue;
@@ -35,12 +33,11 @@ class MavenITgh11140RepoInterpolationTest extends AbstractMavenIntegrationTestCa
 
     @Test
     void testInterpolationFromEnvAndProps() throws Exception {
-        File testDir = extractResources("/gh-11140-repo-interpolation");
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Path testDir = extractResources("gh-11140-repo-interpolation");
+        Verifier verifier = newVerifier(testDir);
 
         // Provide env vars consumed by POM via ${env.*}
-        Path base = testDir.toPath().toAbsolutePath();
-        String baseUri = getBaseUri(base);
+        String baseUri = getBaseUri(testDir);
         verifier.setEnvironmentVariable("IT_REPO_BASE", baseUri);
         verifier.setEnvironmentVariable("IT_DM_BASE", baseUri);
 
@@ -72,8 +69,8 @@ private static String getBaseUri(Path base) {
 
     @Test
     void testUnresolvedPlaceholderWarnsAndSkipsRepository() throws Exception {
-        File testDir = extractResources("/gh-11140-repo-interpolation");
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Path testDir = extractResources("gh-11140-repo-interpolation");
+        Verifier verifier = newVerifier(testDir);
 
         // Do NOT set env vars, so placeholders stay
         verifier.addCliArgument("validate");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITgh11162ConsumerPomScopesTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITgh11162ConsumerPomScopesTest.java
index 25f350717c..5787c88f8d 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITgh11162ConsumerPomScopesTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITgh11162ConsumerPomScopesTest.java
@@ -40,9 +40,9 @@ class MavenITgh11162ConsumerPomScopesTest extends AbstractMavenIntegrationTestCa
 
     @Test
     void testConsumerPomFiltersScopes() throws Exception {
-        Path basedir = extractResources("/gh-11162-consumer-pom-scopes").toPath();
+        Path basedir = extractResources("gh-11162-consumer-pom-scopes");
 
-        Verifier verifier = newVerifier(basedir.toString());
+        Verifier verifier = newVerifier(basedir);
         verifier.addCliArgument("install");
         verifier.addCliArgument("-Dmaven.consumer.pom.flatten=true");
         verifier.execute();
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITgh11181CoreExtensionsMetaVersionsTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITgh11181CoreExtensionsMetaVersionsTest.java
index 8639439232..1ce9ed20d7 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITgh11181CoreExtensionsMetaVersionsTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITgh11181CoreExtensionsMetaVersionsTest.java
@@ -35,11 +35,9 @@ class MavenITgh11181CoreExtensionsMetaVersionsTest extends AbstractMavenIntegrat
      */
     @Test
     void pwMetaVersionIsInvalid() throws Exception {
-        Path testDir = extractResources("/gh-11181-core-extensions-meta-versions")
-                .toPath()
-                .toAbsolutePath()
+        Path testDir = extractResources("gh-11181-core-extensions-meta-versions")
                 .resolve("pw-metaversion-is-invalid");
-        Verifier verifier = newVerifier(testDir.toString());
+        Verifier verifier = newVerifier(testDir);
         verifier.setUserHomeDirectory(testDir.resolve("HOME"));
         verifier.setAutoclean(false);
         verifier.addCliArgument("validate");
@@ -57,11 +55,9 @@ void pwMetaVersionIsInvalid() throws Exception {
      */
     @Test
     void uwMetaVersionIsValid() throws Exception {
-        Path testDir = extractResources("/gh-11181-core-extensions-meta-versions")
-                .toPath()
-                .toAbsolutePath()
+        Path testDir = extractResources("gh-11181-core-extensions-meta-versions")
                 .resolve("uw-metaversion-is-valid");
-        Verifier verifier = newVerifier(testDir.toString());
+        Verifier verifier = newVerifier(testDir);
         verifier.setUserHomeDirectory(testDir.resolve("HOME"));
         verifier.setHandleLocalRepoTail(false);
         verifier.setAutoclean(false);
@@ -76,11 +72,9 @@ void uwMetaVersionIsValid() throws Exception {
      */
     @Test
     void uwPwDifferentVersionIsConflict() throws Exception {
-        Path testDir = extractResources("/gh-11181-core-extensions-meta-versions")
-                .toPath()
-                .toAbsolutePath()
+        Path testDir = extractResources("gh-11181-core-extensions-meta-versions")
                 .resolve("uw-pw-different-version-is-conflict");
-        Verifier verifier = newVerifier(testDir.toString());
+        Verifier verifier = newVerifier(testDir);
         verifier.setUserHomeDirectory(testDir.resolve("HOME"));
         verifier.setHandleLocalRepoTail(false);
         verifier.setAutoclean(false);
@@ -97,11 +91,9 @@ void uwPwDifferentVersionIsConflict() throws Exception {
      */
     @Test
     void uwPwSameVersionIsNotConflict() throws Exception {
-        Path testDir = extractResources("/gh-11181-core-extensions-meta-versions")
-                .toPath()
-                .toAbsolutePath()
+        Path testDir = extractResources("gh-11181-core-extensions-meta-versions")
                 .resolve("uw-pw-same-version-is-not-conflict");
-        Verifier verifier = newVerifier(testDir.toString());
+        Verifier verifier = newVerifier(testDir);
         verifier.setUserHomeDirectory(testDir.resolve("HOME"));
         verifier.setHandleLocalRepoTail(false);
         verifier.setAutoclean(false);
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITgh11196CIFriendlyProfilesTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITgh11196CIFriendlyProfilesTest.java
index 60a3d1c062..f765d4bc71 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITgh11196CIFriendlyProfilesTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITgh11196CIFriendlyProfilesTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 import java.util.Properties;
 
 import org.junit.jupiter.api.Test;
@@ -43,9 +43,9 @@ class MavenITgh11196CIFriendlyProfilesTest extends AbstractMavenIntegrationTestC
      */
     @Test
     void testCiFriendlyVersionWithoutProfile() throws Exception {
-        File testDir = extractResources("/gh-11196-ci-friendly-profiles");
+        Path testDir = extractResources("gh-11196-ci-friendly-profiles");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.addCliArgument("validate");
         verifier.execute();
@@ -65,9 +65,9 @@ void testCiFriendlyVersionWithoutProfile() throws Exception {
      */
     @Test
     void testCiFriendlyVersionWithReleaseProfile() throws Exception {
-        File testDir = extractResources("/gh-11196-ci-friendly-profiles");
+        Path testDir = extractResources("gh-11196-ci-friendly-profiles");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.addCliArgument("-PreleaseBuild");
         verifier.addCliArgument("validate");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITgh11280DuplicateDependencyConsumerPomTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITgh11280DuplicateDependencyConsumerPomTest.java
index 764c2bf5b8..3cf5c0a702 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITgh11280DuplicateDependencyConsumerPomTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITgh11280DuplicateDependencyConsumerPomTest.java
@@ -18,8 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
-
+import java.nio.file.Path;
 import org.junit.jupiter.api.Test;
 
 /**
@@ -61,9 +60,9 @@ class MavenITgh11280DuplicateDependencyConsumerPomTest extends AbstractMavenInte
      */
     @Test
     void testDuplicateDependencyWithNullAndEmptyClassifier() throws Exception {
-        File testDir = extractResources("/gh-11280-duplicate-dependency-consumer-pom");
+        Path testDir = extractResources("gh-11280-duplicate-dependency-consumer-pom");
 
-        Verifier verifier = new Verifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir, null);
         verifier.addCliArgument("install");
         verifier.execute();
 
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITgh11314PluginInjectionTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITgh11314PluginInjectionTest.java
index 1c32e8a31a..cb60292a98 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITgh11314PluginInjectionTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITgh11314PluginInjectionTest.java
@@ -18,8 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
-
+import java.nio.file.Path;
 import org.junit.jupiter.api.Test;
 
 /**
@@ -45,25 +44,25 @@ public class MavenITgh11314PluginInjectionTest extends AbstractMavenIntegrationT
      */
     @Test
     public void testV3MojoWithMavenContainerInjection() throws Exception {
-        File testDir = extractResources("/gh-11314-v3-mojo-injection");
+        Path testDir = extractResources("gh-11314-v3-mojo-injection");
 
         // Before, build and install the parent POM
-        Verifier parentVerifier = newVerifier(testDir.getAbsolutePath(), false);
+        Verifier parentVerifier = newVerifier(testDir, false);
         parentVerifier.addCliArgument("-N");
         parentVerifier.addCliArgument("install");
         parentVerifier.execute();
         parentVerifier.verifyErrorFreeLog();
 
         // First, build and install the test plugin
-        File pluginDir = new File(testDir, "plugin");
-        Verifier pluginVerifier = newVerifier(pluginDir.getAbsolutePath(), false);
+        Path pluginDir = testDir.resolve("plugin");
+        Verifier pluginVerifier = newVerifier(pluginDir, false);
         pluginVerifier.addCliArgument("install");
         pluginVerifier.execute();
         pluginVerifier.verifyErrorFreeLog();
 
         // Now run the test project that uses the plugin
-        File consumerDir = new File(testDir, "consumer");
-        Verifier verifier = newVerifier(consumerDir.getAbsolutePath(), false);
+        Path consumerDir = testDir.resolve("consumer");
+        Verifier verifier = newVerifier(consumerDir, false);
         verifier.addCliArguments("test:test-goal");
         verifier.execute();
         verifier.verifyErrorFreeLog();
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITgh11321Test.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITgh11321Test.java
index 60dbb49c24..d7caa57a66 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITgh11321Test.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITgh11321Test.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 
 import org.junit.jupiter.api.Test;
 
@@ -42,17 +42,17 @@ public class MavenITgh11321Test extends AbstractMavenIntegrationTestCase {
      */
     @Test
     public void testParentAboveRootDirectoryRejected() throws Exception {
-        File testDir = extractResources("/gh-11321-parent-above-root");
+        Path testDir = extractResources("gh-11321-parent-above-root");
 
         // First, verify that normal build works from the actual root
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.addCliArgument("validate");
         verifier.execute();
         verifier.verifyErrorFreeLog();
 
         // Now test with -f pointing to the subdirectory that contains .mvn
         // This should fail with a proper error message about parent being above root
-        verifier = newVerifier(testDir.getAbsolutePath());
+        verifier = newVerifier(testDir);
         verifier.addCliArgument("-f");
         verifier.addCliArgument("deps");
         verifier.addCliArgument("validate");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITgh11346DependencyManagementOverrideTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITgh11346DependencyManagementOverrideTest.java
index a161e8ae79..7702810e69 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITgh11346DependencyManagementOverrideTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITgh11346DependencyManagementOverrideTest.java
@@ -18,9 +18,8 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 import java.util.List;
-
 import org.apache.maven.api.Constants;
 import org.junit.jupiter.api.Test;
 
@@ -57,9 +56,9 @@ public class MavenITgh11346DependencyManagementOverrideTest extends AbstractMave
      */
     @Test
     public void testDependencyManagementOverride() throws Exception {
-        File testDir = extractResources("/gh-11346-dependency-management-override");
+        Path testDir = extractResources("gh-11346-dependency-management-override");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.deleteArtifacts("org.apache.maven.its.mng.depman");
         // Test with dependency manager transitivity disabled instead of consumer POM flattening
         verifier.addCliArgument("-D" + Constants.MAVEN_CONSUMER_POM_FLATTEN + "=false");
@@ -89,9 +88,9 @@ public void testDependencyManagementOverride() throws Exception {
 
     @Test
     public void testDependencyManagementOverrideNoTransitive() throws Exception {
-        File testDir = extractResources("/gh-11346-dependency-management-override");
+        Path testDir = extractResources("gh-11346-dependency-management-override");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.deleteArtifacts("org.apache.maven.its.mng.depman");
         // Test with dependency manager transitivity disabled instead of consumer POM flattening
         verifier.addCliArgument("-D" + Constants.MAVEN_CONSUMER_POM_FLATTEN + "=false");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITgh11356InvalidTransitiveRepositoryTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITgh11356InvalidTransitiveRepositoryTest.java
index 1b00323acd..44d3bbed29 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITgh11356InvalidTransitiveRepositoryTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITgh11356InvalidTransitiveRepositoryTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 import org.junit.jupiter.api.Test;
 
 /**
@@ -31,10 +31,10 @@ public class MavenITgh11356InvalidTransitiveRepositoryTest extends AbstractMaven
 
     @Test
     public void testInvalidTransitiveRepository() throws Exception {
-        File testDir = extractResources("/gh-11356-invalid-transitive-repository");
+        Path testDir = extractResources("gh-11356-invalid-transitive-repository");
 
         // First, verify that normal build works from the actual root
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.addCliArgument("compile");
         verifier.execute();
         verifier.verifyErrorFreeLog();
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITgh11363PipeSymbolsInJvmConfigTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITgh11363PipeSymbolsInJvmConfigTest.java
index 4603bf09cf..5e3e6ee9a3 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITgh11363PipeSymbolsInJvmConfigTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITgh11363PipeSymbolsInJvmConfigTest.java
@@ -36,11 +36,9 @@ public class MavenITgh11363PipeSymbolsInJvmConfigTest extends AbstractMavenInteg
      */
     @Test
     void testPipeSymbolsInJvmConfig() throws Exception {
-        Path basedir = extractResources("/gh-11363-pipe-symbols-jvm-config")
-                .getAbsoluteFile()
-                .toPath();
+        Path basedir = extractResources("/gh-11363-pipe-symbols-jvm-config");
 
-        Verifier verifier = newVerifier(basedir.toString());
+        Verifier verifier = newVerifier(basedir);
         verifier.setForkJvm(true); // Use forked JVM to test .mvn/jvm.config processing
         // Enable debug logging for launcher script to diagnose jvm.config parsing issues
         verifier.setEnvironmentVariable("MAVEN_DEBUG_SCRIPT", "1");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITgh11378SealedParameterConfigTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITgh11378SealedParameterConfigTest.java
index e4d2a2794e..b333d4a4c7 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITgh11378SealedParameterConfigTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITgh11378SealedParameterConfigTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 
 import org.junit.jupiter.api.Test;
 
@@ -29,16 +29,15 @@ public class MavenITgh11378SealedParameterConfigTest extends AbstractMavenIntegr
 
     @Test
     public void testSealedParameterImplementationCanUseSimpleName() throws Exception {
-        File testDir = extractResources("/gh-11378-sealed-parameter-config");
+        Path testDir = extractResources("/gh-11378-sealed-parameter-config");
 
-        Verifier parentVerifier = newVerifier(testDir.getAbsolutePath(), false);
+        Verifier parentVerifier = newVerifier(testDir, false);
         parentVerifier.addCliArgument("-N");
         parentVerifier.addCliArgument("install");
         parentVerifier.execute();
         parentVerifier.verifyErrorFreeLog();
 
-        File pluginDir = new File(testDir, "plugin");
-        Verifier pluginVerifier = newVerifier(pluginDir.getAbsolutePath(), false);
+        Verifier pluginVerifier = newVerifier(testDir.resolve("plugin"), false);
         pluginVerifier.getSystemProperties().put("maven.compiler.source", "17");
         pluginVerifier.getSystemProperties().put("maven.compiler.target", "17");
         pluginVerifier.getSystemProperties().put("maven.compiler.release", "17");
@@ -46,8 +45,7 @@ public void testSealedParameterImplementationCanUseSimpleName() throws Exception
         pluginVerifier.execute();
         pluginVerifier.verifyErrorFreeLog();
 
-        File consumerDir = new File(testDir, "consumer");
-        Verifier verifier = newVerifier(consumerDir.getAbsolutePath(), false);
+        Verifier verifier = newVerifier(testDir.resolve("consumer"), false);
         verifier.addCliArgument("test:test-goal");
         verifier.execute();
         verifier.verifyErrorFreeLog();
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITgh11381ResourceTargetPathTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITgh11381ResourceTargetPathTest.java
index 33d68092f1..0b048d1af0 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITgh11381ResourceTargetPathTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITgh11381ResourceTargetPathTest.java
@@ -18,8 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
-
+import java.nio.file.Path;
 import org.junit.jupiter.api.Test;
 
 /**
@@ -40,9 +39,9 @@ class MavenITgh11381ResourceTargetPathTest extends AbstractMavenIntegrationTestC
      */
     @Test
     void testRelativeTargetPathInResources() throws Exception {
-        File testDir = extractResources("/gh-11381");
+        Path testDir = extractResources("gh-11381");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         verifier.addCliArgument("process-resources");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITgh11384RecursiveVariableReferenceTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITgh11384RecursiveVariableReferenceTest.java
index 5c60d90820..eacfd1bf5e 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITgh11384RecursiveVariableReferenceTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITgh11384RecursiveVariableReferenceTest.java
@@ -38,9 +38,9 @@ class MavenITgh11384RecursiveVariableReferenceTest extends AbstractMavenIntegrat
      */
     @Test
     void testIt() throws Exception {
-        Path basedir = extractResources("/gh-11384").getAbsoluteFile().toPath();
+        Path basedir = extractResources("gh-11384");
 
-        Verifier verifier = newVerifier(basedir.toString());
+        Verifier verifier = newVerifier(basedir);
         verifier.addCliArgument("help:effective-pom");
         verifier.execute();
         verifier.verifyErrorFreeLog();
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITgh11399FlattenPluginParentCycleTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITgh11399FlattenPluginParentCycleTest.java
index b5ecf4e420..e3f614a72b 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITgh11399FlattenPluginParentCycleTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITgh11399FlattenPluginParentCycleTest.java
@@ -18,8 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
-
+import java.nio.file.Path;
 import org.junit.jupiter.api.Test;
 
 /**
@@ -45,9 +44,9 @@ class MavenITgh11399FlattenPluginParentCycleTest extends AbstractMavenIntegratio
      */
     @Test
     void testFlattenPluginWithParentExpansionDoesNotCauseCycle() throws Exception {
-        File testDir = extractResources("/gh-11399-flatten-plugin-parent-cycle");
+        Path testDir = extractResources("gh-11399-flatten-plugin-parent-cycle");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteArtifacts("org.apache.maven.its.mng8750");
         verifier.addCliArgument("install");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITgh11409ProfileSourceTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITgh11409ProfileSourceTest.java
index c7aec3f6e8..4848ca13c3 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITgh11409ProfileSourceTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITgh11409ProfileSourceTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 
 import org.junit.jupiter.api.Test;
 
@@ -38,9 +38,9 @@ class MavenITgh11409ProfileSourceTest extends AbstractMavenIntegrationTestCase {
      */
     @Test
     void testProfileSourceInMultiModuleProject() throws Exception {
-        File testDir = extractResources("/gh-11409");
+        Path testDir = extractResources("/gh-11409");
 
-        Verifier verifier = newVerifier(new File(testDir, "subproject").getAbsolutePath());
+        Verifier verifier = newVerifier(testDir.resolve("subproject"));
         verifier.addCliArgument("help:active-profiles");
         verifier.execute();
         verifier.verifyErrorFreeLog();
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITgh11427BomConsumerPomTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITgh11427BomConsumerPomTest.java
index 81efacfded..271181341a 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITgh11427BomConsumerPomTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITgh11427BomConsumerPomTest.java
@@ -20,7 +20,6 @@
 
 import java.nio.file.Files;
 import java.nio.file.Path;
-import java.nio.file.Paths;
 import java.util.List;
 import java.util.stream.Stream;
 
@@ -44,17 +43,15 @@ class MavenITgh11427BomConsumerPomTest extends AbstractMavenIntegrationTestCase
      */
     @Test
     void testBomConsumerPomWithoutFlatten() throws Exception {
-        Path basedir = extractResources("/gh-11427-bom-consumer-pom")
-                .getAbsoluteFile()
-                .toPath();
+        Path basedir = extractResources("/gh-11427-bom-consumer-pom");
 
-        Verifier verifier = newVerifier(basedir.toString());
+        Verifier verifier = newVerifier(basedir);
         verifier.addCliArguments("install");
         verifier.execute();
         verifier.verifyErrorFreeLog();
 
-        Path consumerPomPath = Paths.get(
-                verifier.getArtifactPath("org.apache.maven.its.gh-11427", "bom", "1.0.0-SNAPSHOT", "pom"));
+        Path consumerPomPath =
+                verifier.getArtifactPath("org.apache.maven.its.gh-11427", "bom", "1.0.0-SNAPSHOT", "pom");
 
         assertTrue(Files.exists(consumerPomPath), "consumer pom not found at " + consumerPomPath);
 
@@ -82,17 +79,15 @@ void testBomConsumerPomWithoutFlatten() throws Exception {
      */
     @Test
     void testBomConsumerPomWithFlatten() throws Exception {
-        Path basedir = extractResources("/gh-11427-bom-consumer-pom")
-                .getAbsoluteFile()
-                .toPath();
+        Path basedir = extractResources("/gh-11427-bom-consumer-pom");
 
-        Verifier verifier = newVerifier(basedir.toString());
+        Verifier verifier = newVerifier(basedir);
         verifier.addCliArguments("install", "-Dmaven.consumer.pom.flatten=true");
         verifier.execute();
         verifier.verifyErrorFreeLog();
 
-        Path consumerPomPath = Paths.get(
-                verifier.getArtifactPath("org.apache.maven.its.gh-11427", "bom", "1.0.0-SNAPSHOT", "pom"));
+        Path consumerPomPath =
+                verifier.getArtifactPath("org.apache.maven.its.gh-11427", "bom", "1.0.0-SNAPSHOT", "pom");
 
         assertTrue(Files.exists(consumerPomPath), "consumer pom not found at " + consumerPomPath);
 
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITgh11456MixinsConsumerPomTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITgh11456MixinsConsumerPomTest.java
index 1d70146ced..93f4ce569b 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITgh11456MixinsConsumerPomTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITgh11456MixinsConsumerPomTest.java
@@ -41,9 +41,9 @@ class MavenITgh11456MixinsConsumerPomTest extends AbstractMavenIntegrationTestCa
      */
     @Test
     void testMixinsWithoutFlattening() throws Exception {
-        Path basedir = extractResources("/gh-11456-mixins-consumer-pom/non-flattened").toPath();
+        Path basedir = extractResources("/gh-11456-mixins-consumer-pom/non-flattened");
 
-        Verifier verifier = newVerifier(basedir.toString());
+        Verifier verifier = newVerifier(basedir);
         verifier.addCliArgument("-Dmaven.repo.local=" + basedir.resolve("repo"));
         verifier.addCliArgument("package");
         try {
@@ -61,9 +61,9 @@ void testMixinsWithoutFlattening() throws Exception {
      */
     @Test
     void testMixinsWithFlattening() throws Exception {
-        Path basedir = extractResources("/gh-11456-mixins-consumer-pom/flattened").toPath();
+        Path basedir = extractResources("/gh-11456-mixins-consumer-pom/flattened");
 
-        Verifier verifier = newVerifier(basedir.toString());
+        Verifier verifier = newVerifier(basedir);
         verifier.addCliArgument("-Dmaven.repo.local=" + basedir.resolve("repo").toString());
         verifier.addCliArgument("package");
         verifier.execute();
@@ -94,9 +94,9 @@ void testMixinsWithFlattening() throws Exception {
      */
     @Test
     void testMixinsWithPreserveModelVersion() throws Exception {
-        Path basedir = extractResources("/gh-11456-mixins-consumer-pom/preserve-model-version").toPath();
+        Path basedir = extractResources("/gh-11456-mixins-consumer-pom/preserve-model-version");
 
-        Verifier verifier = newVerifier(basedir.toString());
+        Verifier verifier = newVerifier(basedir);
         verifier.addCliArgument("-Dmaven.repo.local=" + basedir.resolve("repo").toString());
         verifier.addCliArgument("package");
         verifier.execute();
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITgh11485AtSignInJvmConfigTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITgh11485AtSignInJvmConfigTest.java
index c23128946e..4ab2e2f40d 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITgh11485AtSignInJvmConfigTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITgh11485AtSignInJvmConfigTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 import java.util.Properties;
 
 import org.junit.jupiter.api.Test;
@@ -34,11 +34,11 @@ public class MavenITgh11485AtSignInJvmConfigTest extends AbstractMavenIntegratio
 
     @Test
     public void testAtSignInJvmConfig() throws Exception {
-        File testDir = extractResources("/gh-11485-at-sign");
+        Path testDir = extractResources("/gh-11485-at-sign");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.addCliArgument(
-                "-Dexpression.outputFile=" + new File(testDir, "target/pom.properties").getAbsolutePath());
+                "-Dexpression.outputFile=" + testDir.resolve("target/pom.properties"));
         verifier.setForkJvm(true); // custom .mvn/jvm.config
         // Enable debug logging for launcher script to diagnose jvm.config parsing issues
         verifier.setEnvironmentVariable("MAVEN_DEBUG_SCRIPT", "1");
@@ -47,7 +47,7 @@ public void testAtSignInJvmConfig() throws Exception {
         verifier.verifyErrorFreeLog();
 
         Properties props = verifier.loadProperties("target/pom.properties");
-        String expectedPath = testDir.getAbsolutePath().replace('\\', '/');
+        String expectedPath = testDir.toString().replace('\\', '/');
         assertEquals(
                 expectedPath + "/workspace@2/test",
                 props.getProperty("project.properties.pathWithAtProp").replace('\\', '/'),
@@ -60,14 +60,14 @@ public void testAtSignInJvmConfig() throws Exception {
 
     @Test
     public void testAtSignInCommandLineProperty() throws Exception {
-        File testDir = extractResources("/gh-11485-at-sign");
+        Path testDir = extractResources("/gh-11485-at-sign");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.addCliArgument(
-                "-Dexpression.outputFile=" + new File(testDir, "target/pom.properties").getAbsolutePath());
+                "-Dexpression.outputFile=" + testDir.resolve("target/pom.properties"));
         verifier.setForkJvm(true); // custom .mvn/jvm.config
         // Pass a path with @ character via command line (simulating Jenkins workspace)
-        String jenkinsPath = testDir.getAbsolutePath().replace('\\', '/') + "/jenkins.workspace/proj@2";
+        String jenkinsPath = testDir.toString().replace('\\', '/') + "/jenkins.workspace/proj@2";
         verifier.addCliArgument("-Dcmdline.path=" + jenkinsPath);
         verifier.addCliArgument("-Dcmdline.value=test@value");
         verifier.addCliArgument("validate");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITgh11715EffectivePomNamespaceTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITgh11715EffectivePomNamespaceTest.java
index 2a908e09ce..64b5cab7d6 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITgh11715EffectivePomNamespaceTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITgh11715EffectivePomNamespaceTest.java
@@ -33,9 +33,9 @@ class MavenITgh11715EffectivePomNamespaceTest extends AbstractMavenIntegrationTe
 
     @Test
     void testIt() throws Exception {
-        Path basedir = extractResources("/gh-11715").getAbsoluteFile().toPath();
+        Path basedir = extractResources("/gh-11715");
 
-        Verifier verifier = newVerifier(basedir.toString());
+        Verifier verifier = newVerifier(basedir);
         verifier.addCliArgument("help:effective-pom");
         verifier.execute();
         verifier.verifyErrorFreeLog();
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITgh11772ConsumerPom410Test.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITgh11772ConsumerPom410Test.java
index d238e7a97d..4ccf4b2175 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITgh11772ConsumerPom410Test.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITgh11772ConsumerPom410Test.java
@@ -18,7 +18,6 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
 import java.io.Reader;
 import java.nio.file.Files;
 import java.nio.file.Path;
@@ -47,9 +46,9 @@ class MavenITgh11772ConsumerPom410Test extends AbstractMavenIntegrationTestCase
 
     @Test
     void testConsumerPomsAre400BuildPomsAre410() throws Exception {
-        File basedir = extractResources("/gh-11772-consumer-pom-410");
+        Path basedir = extractResources("/gh-11772-consumer-pom-410");
 
-        Verifier verifier = newVerifier(basedir.getAbsolutePath());
+        Verifier verifier = newVerifier(basedir);
         verifier.deleteArtifacts(GROUP_ID);
         verifier.addCliArguments("install");
         verifier.execute();
@@ -57,14 +56,14 @@ void testConsumerPomsAre400BuildPomsAre410() throws Exception {
 
         // Verify parent consumer POM (main artifact) is 4.0.0
         Path parentConsumerPom =
-                Path.of(verifier.getArtifactPath(GROUP_ID, "parent", "1.0.0-SNAPSHOT", "pom"));
+                verifier.getArtifactPath(GROUP_ID, "parent", "1.0.0-SNAPSHOT", "pom");
         assertTrue(Files.exists(parentConsumerPom), "Parent consumer POM should exist");
         Model parentConsumer = readModel(parentConsumerPom);
         assertEquals("4.0.0", parentConsumer.getModelVersion(), "Parent consumer POM should be 4.0.0");
 
         // Verify parent build POM retains 4.1.0 features
         Path parentBuildPom =
-                Path.of(verifier.getArtifactPath(GROUP_ID, "parent", "1.0.0-SNAPSHOT", "pom", "build"));
+                verifier.getArtifactPath(GROUP_ID, "parent", "1.0.0-SNAPSHOT", "pom", "build");
         assertTrue(Files.exists(parentBuildPom), "Parent build POM should exist");
         Model parentBuild = readModel(parentBuildPom);
         // Build POM should retain subprojects (4.1.0 feature)
@@ -73,7 +72,7 @@ void testConsumerPomsAre400BuildPomsAre410() throws Exception {
 
         // Verify child consumer POM is 4.0.0
         Path childConsumerPom =
-                Path.of(verifier.getArtifactPath(GROUP_ID, "child", "1.0.0-SNAPSHOT", "pom"));
+                verifier.getArtifactPath(GROUP_ID, "child", "1.0.0-SNAPSHOT", "pom");
         assertTrue(Files.exists(childConsumerPom), "Child consumer POM should exist");
         Model childConsumer = readModel(childConsumerPom);
         assertEquals("4.0.0", childConsumer.getModelVersion(), "Child consumer POM should be 4.0.0");
@@ -85,7 +84,7 @@ void testConsumerPomsAre400BuildPomsAre410() throws Exception {
 
         // Verify child build POM exists
         Path childBuildPom =
-                Path.of(verifier.getArtifactPath(GROUP_ID, "child", "1.0.0-SNAPSHOT", "pom", "build"));
+                verifier.getArtifactPath(GROUP_ID, "child", "1.0.0-SNAPSHOT", "pom", "build");
         assertTrue(Files.exists(childBuildPom), "Child build POM should exist");
     }
 
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITgh11798ConsumerPomProfileActivationTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITgh11798ConsumerPomProfileActivationTest.java
index 4e4f11a3ba..773c9202c6 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITgh11798ConsumerPomProfileActivationTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITgh11798ConsumerPomProfileActivationTest.java
@@ -34,9 +34,9 @@ class MavenITgh11798ConsumerPomProfileActivationTest extends AbstractMavenIntegr
 
     @Test
     void testConsumerPomResolvesParentProfileProperties() throws Exception {
-        Path basedir = extractResources("/gh-11798-consumer-pom-profile-activation").toPath();
+        Path basedir = extractResources("/gh-11798-consumer-pom-profile-activation");
 
-        Verifier verifier = newVerifier(basedir.toString());
+        Verifier verifier = newVerifier(basedir);
         verifier.addCliArgument("install");
         verifier.execute();
         verifier.verifyErrorFreeLog();
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITgh11978PlaceholderInCliArgTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITgh11978PlaceholderInCliArgTest.java
index b6aefaa36b..fde0c7f009 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITgh11978PlaceholderInCliArgTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITgh11978PlaceholderInCliArgTest.java
@@ -37,11 +37,9 @@ class MavenITgh11978PlaceholderInCliArgTest extends AbstractMavenIntegrationTest
 
     @Test
     void testIt() throws Exception {
-        Path basedir = extractResources("/gh-11978-placeholder-in-cli-arg")
-                .getAbsoluteFile()
-                .toPath();
+        Path basedir = extractResources("/gh-11978-placeholder-in-cli-arg");
 
-        Verifier verifier = newVerifier(basedir.toString());
+        Verifier verifier = newVerifier(basedir);
         verifier.setForkJvm(true); // NOTE: We want to go through the launcher script
         // The placeholder name contains dots, which is invalid as a shell variable name.
         // Without the fix, the shell's `eval exec` aborts with "bad substitution".
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITgh12184CIFriendlyParentVersionTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITgh12184CIFriendlyParentVersionTest.java
index 2ba11172c0..37a2523e5a 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITgh12184CIFriendlyParentVersionTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITgh12184CIFriendlyParentVersionTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 
 import org.junit.jupiter.api.Test;
 
@@ -35,9 +35,9 @@ class MavenITgh12184CIFriendlyParentVersionTest extends AbstractMavenIntegration
      */
     @Test
     void testCiFriendlyParentVersionFromProperties() throws Exception {
-        File testDir = extractResources("/gh-12184-ci-friendly-parent-version");
+        Path testDir = extractResources("/gh-12184-ci-friendly-parent-version");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.addCliArgument("validate");
         verifier.execute();
         verifier.verifyErrorFreeLog();
@@ -49,9 +49,9 @@ void testCiFriendlyParentVersionFromProperties() throws Exception {
      */
     @Test
     void testCiFriendlyParentVersionFromCli() throws Exception {
-        File testDir = extractResources("/gh-12184-ci-friendly-parent-version");
+        Path testDir = extractResources("/gh-12184-ci-friendly-parent-version");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.addCliArgument("-Drevision=2.0.0");
         verifier.addCliArgument("validate");
         verifier.execute();
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITgh12288SettingsProfileAetherPropertiesTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITgh12288SettingsProfileAetherPropertiesTest.java
index 5d774e8aed..543846724d 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITgh12288SettingsProfileAetherPropertiesTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITgh12288SettingsProfileAetherPropertiesTest.java
@@ -18,9 +18,9 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Files;
+import java.nio.file.Path;
 
-import org.codehaus.plexus.util.FileUtils;
 import org.junit.jupiter.api.Test;
 
 import static org.junit.jupiter.api.Assertions.assertFalse;
@@ -68,18 +68,16 @@ public void testActiveProfilesList() throws Exception {
 
     @Test
     public void testActiveByDefaultDeactivatedViaCli() throws Exception {
-        File testDir = extractResources("/settings-profile-aether-properties");
+        Path testDir = extractResources("settings-profile-aether-properties");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.setLogFileName("log-deactivation.txt");
         verifier.deleteDirectory("target");
         verifier.deleteArtifacts("org.apache.maven.its.settings.profile.aether");
 
-        // Sibling tests in this class install under the same custom prefix; clear it to
-        // avoid false positives if those tests ran first.
-        File customPrefixSubtree = new File(verifier.getLocalRepository(), "it-custom-prefix");
-        FileUtils.deleteDirectory(customPrefixSubtree);
+        Path customPrefixSubtree = verifier.getLocalRepository().resolve("it-custom-prefix");
+        ItUtils.deleteDirectory(customPrefixSubtree);
 
         verifier.addCliArgument("--settings");
         verifier.addCliArgument("settings-active-by-default.xml");
@@ -88,24 +86,24 @@ public void testActiveByDefaultDeactivatedViaCli() throws Exception {
         verifier.execute();
         verifier.verifyErrorFreeLog();
 
-        File localRepo = new File(verifier.getLocalRepository());
+        Path localRepo = verifier.getLocalRepository();
         String gavRelativePath = "org/apache/maven/its/settings/profile/aether/test-artifact/1.0/test-artifact-1.0.pom";
-        File flatLayout = new File(localRepo, gavRelativePath);
-        File customPrefix = new File(localRepo, "it-custom-prefix/" + gavRelativePath);
+        Path flatLayout = localRepo.resolve(gavRelativePath);
+        Path customPrefix = localRepo.resolve("it-custom-prefix/" + gavRelativePath);
 
         assertTrue(
-                flatLayout.exists(),
+                Files.exists(flatLayout),
                 "Expected artifact at flat layout (profile deactivated via -P !), but not found at " + flatLayout);
 
         assertFalse(
-                customPrefix.exists(),
+                Files.exists(customPrefix),
                 "Found artifact at custom prefix " + customPrefix + " — deactivation via -P ! was ignored.");
     }
 
     private void runAndAssertCustomPrefix(String settingsFile) throws Exception {
-        File testDir = extractResources("/settings-profile-aether-properties");
+        Path testDir = extractResources("settings-profile-aether-properties");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         verifier.deleteArtifacts("org.apache.maven.its.settings.profile.aether");
@@ -116,29 +114,29 @@ private void runAndAssertCustomPrefix(String settingsFile) throws Exception {
         verifier.execute();
         verifier.verifyErrorFreeLog();
 
-        File localRepo = new File(verifier.getLocalRepository());
+        Path localRepo = verifier.getLocalRepository();
         String gavRelativePath = "org/apache/maven/its/settings/profile/aether/test-artifact/1.0/test-artifact-1.0.pom";
 
-        File expectedAtCustomPrefix = new File(localRepo, "it-custom-prefix/" + gavRelativePath);
-        File flatLayout = new File(localRepo, gavRelativePath);
-        File defaultSplitPrefix = new File(localRepo, "installed/" + gavRelativePath);
+        Path expectedAtCustomPrefix = localRepo.resolve("it-custom-prefix/" + gavRelativePath);
+        Path flatLayout = localRepo.resolve(gavRelativePath);
+        Path defaultSplitPrefix = localRepo.resolve("installed/" + gavRelativePath);
 
         assertTrue(
-                expectedAtCustomPrefix.exists(),
+                Files.exists(expectedAtCustomPrefix),
                 "Expected install to use custom localPrefix 'it-custom-prefix' from "
                         + settingsFile
                         + ", but artifact not found at "
                         + expectedAtCustomPrefix);
 
         assertFalse(
-                flatLayout.exists(),
+                Files.exists(flatLayout),
                 "Found artifact at flat layout "
                         + flatLayout
                         + " — indicates the settings.xml profile properties did not reach the resolver"
                         + " session config in time for LRM init.");
 
         assertFalse(
-                defaultSplitPrefix.exists(),
+                Files.exists(defaultSplitPrefix),
                 "Found artifact at default split-LRM prefix "
                         + defaultSplitPrefix
                         + " — indicates split=true was honored but localPrefix was silently dropped.");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITgh12305InvalidCollectRequestUninterpolatedManagedDepsTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITgh12305InvalidCollectRequestUninterpolatedManagedDepsTest.java
index c867d6ef38..2e41e1311e 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITgh12305InvalidCollectRequestUninterpolatedManagedDepsTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITgh12305InvalidCollectRequestUninterpolatedManagedDepsTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 
 import org.junit.jupiter.api.Test;
 
@@ -39,9 +39,9 @@ public class MavenITgh12305InvalidCollectRequestUninterpolatedManagedDepsTest ex
 
     @Test
     public void testUninterpolatedManagedDepsFromImportedBom() throws Exception {
-        File testDir = extractResources("/gh-12305-invalid-collect-request");
+        Path testDir = extractResources("/gh-12305-invalid-collect-request");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.deleteArtifacts("org.apache.maven.its.gh12305");
         verifier.filterFile("settings-template.xml", "settings.xml");
         verifier.addCliArgument("--settings");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITgh2532DuplicateDependencyEffectiveModelTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITgh2532DuplicateDependencyEffectiveModelTest.java
index 9ac7fcc9c4..87431e066a 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITgh2532DuplicateDependencyEffectiveModelTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITgh2532DuplicateDependencyEffectiveModelTest.java
@@ -18,8 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
-
+import java.nio.file.Path;
 import org.junit.jupiter.api.Test;
 
 /**
@@ -57,9 +56,9 @@ class MavenITgh2532DuplicateDependencyEffectiveModelTest extends AbstractMavenIn
      */
     @Test
     void testDuplicateDependencyWithPropertyPlaceholders() throws Exception {
-        File testDir = extractResources("/gh-2532-duplicate-dependency-effective-model");
+        Path testDir = extractResources("gh-2532-duplicate-dependency-effective-model");
 
-        Verifier verifier = new Verifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir, null);
         verifier.setLogFileName("testDuplicateDependencyWithPropertyPlaceholders.txt");
         verifier.addCliArgument("package");
         verifier.execute();
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITgh2576ItrNotHonoredTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITgh2576ItrNotHonoredTest.java
index 294cd20ed2..25136424c4 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITgh2576ItrNotHonoredTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITgh2576ItrNotHonoredTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 import org.junit.jupiter.api.Test;
 
 import static org.junit.jupiter.api.Assertions.assertThrows;
@@ -34,23 +34,23 @@ class MavenITgh2576ItrNotHonoredTest extends AbstractMavenIntegrationTestCase {
 
     @Test
     void testItrNotHonored() throws Exception {
-        File testDir = extractResources("/gh-2576-itr-not-honored").getAbsoluteFile();
+        Path testDir = extractResources("gh-2576-itr-not-honored");
 
-        Verifier verifier = new Verifier(testDir.toString());
+        Verifier verifier = newVerifier(testDir);
         verifier.deleteArtifacts("org.apache.maven.its.gh2576");
 
-        verifier = new Verifier(new File(testDir, "parent").toString());
+        verifier = newVerifier(testDir.resolve("parent"));
         verifier.addCliArguments("install:install-file", "-Dfile=pom.xml", "-DpomFile=pom.xml", "-DlocalRepositoryPath=../repo/");
         verifier.execute();
         verifier.verifyErrorFreeLog();
 
         // use maven 3 personality so that we don't flatten the pom
-        verifier = new Verifier(new File(testDir, "dep").toString());
+        verifier = newVerifier(testDir.resolve("dep"));
         verifier.addCliArguments("install", "-Dmaven.maven3Personality");
         verifier.execute();
         verifier.verifyErrorFreeLog();
 
-        verifier = new Verifier(new File(testDir, "consumer").toString());
+        verifier = newVerifier(testDir.resolve("consumer"));
         verifier.addCliArguments("install", "-itr");
         assertThrows(VerificationException.class, verifier::execute);
     }
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0095ReactorFailureBehaviorTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0095ReactorFailureBehaviorTest.java
index 93843b5b72..025e1f20fe 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0095ReactorFailureBehaviorTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0095ReactorFailureBehaviorTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 
 import org.junit.jupiter.api.Test;
 
@@ -38,9 +38,9 @@ public class MavenITmng0095ReactorFailureBehaviorTest extends AbstractMavenInteg
      */
     @Test
     public void testitFailFast() throws Exception {
-        File testDir = extractResources("/mng-0095");
+        Path testDir = extractResources("mng-0095");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         verifier.deleteDirectory("subproject1/target");
@@ -70,9 +70,9 @@ public void testitFailFast() throws Exception {
      */
     @Test
     public void testitFailNever() throws Exception {
-        File testDir = extractResources("/mng-0095");
+        Path testDir = extractResources("mng-0095");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         verifier.deleteDirectory("subproject1/target");
@@ -98,9 +98,9 @@ public void testitFailNever() throws Exception {
      */
     @Test
     public void testitFailAtEnd() throws Exception {
-        File testDir = extractResources("/mng-0095");
+        Path testDir = extractResources("mng-0095");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         verifier.deleteDirectory("subproject1/target");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0187CollectedProjectsTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0187CollectedProjectsTest.java
index 5f0660084e..41e6c40fe3 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0187CollectedProjectsTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0187CollectedProjectsTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
@@ -44,9 +44,9 @@ public class MavenITmng0187CollectedProjectsTest extends AbstractMavenIntegratio
      */
     @Test
     public void testit() throws Exception {
-        File testDir = extractResources("/mng-0187");
+        Path testDir = extractResources("mng-0187");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         verifier.deleteDirectory("sub-1/target");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0249ResolveDepsFromReactorTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0249ResolveDepsFromReactorTest.java
index 68acc78d26..54e42b459b 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0249ResolveDepsFromReactorTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0249ResolveDepsFromReactorTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 import java.util.List;
 
 import org.junit.jupiter.api.Test;
@@ -40,9 +40,9 @@ public class MavenITmng0249ResolveDepsFromReactorTest extends AbstractMavenInteg
      */
     @Test
     public void testitMNG0249() throws Exception {
-        File testDir = extractResources("/mng-0249");
+        Path testDir = extractResources("mng-0249");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.addCliArgument("validate");
         verifier.execute();
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0282NonReactorExecWhenProjectIndependentTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0282NonReactorExecWhenProjectIndependentTest.java
index d3aee5a0c3..9a6df5c047 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0282NonReactorExecWhenProjectIndependentTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0282NonReactorExecWhenProjectIndependentTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 
 import org.junit.jupiter.api.Test;
 
@@ -37,10 +37,10 @@ public class MavenITmng0282NonReactorExecWhenProjectIndependentTest extends Abst
      */
     @Test
     public void testitMNG282() throws Exception {
-        File testDir = extractResources("/mng-0282");
+        Path testDir = extractResources("mng-0282");
 
         // First, build the test plugin
-        Verifier verifier = newVerifier(new File(testDir, "maven-it-plugin-no-project").getAbsolutePath());
+        Verifier verifier = newVerifier(testDir.resolve("maven-it-plugin-no-project"));
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         verifier.addCliArgument("install");
@@ -48,7 +48,7 @@ public void testitMNG282() throws Exception {
         verifier.verifyErrorFreeLog();
 
         // Then, run the test project that uses the plugin
-        verifier = newVerifier(testDir.getAbsolutePath());
+        verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         verifier.deleteDirectory("subproject/target");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0294MergeGlobalAndUserSettingsTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0294MergeGlobalAndUserSettingsTest.java
index c11dfeb17e..675307a42b 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0294MergeGlobalAndUserSettingsTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0294MergeGlobalAndUserSettingsTest.java
@@ -18,8 +18,9 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 
+import java.nio.file.Paths;
 import org.junit.jupiter.api.Test;
 
 /**
@@ -37,9 +38,9 @@ public class MavenITmng0294MergeGlobalAndUserSettingsTest extends AbstractMavenI
      */
     @Test
     public void testitMNG294() throws Exception {
-        File testDir = extractResources("/mng-0294");
+        Path testDir = extractResources("mng-0294");
 
-        Verifier verifier = new Verifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir, null);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         verifier.addCliArgument("--settings");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0377PluginLookupFromPrefixTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0377PluginLookupFromPrefixTest.java
index e8d841abf6..68ad617862 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0377PluginLookupFromPrefixTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0377PluginLookupFromPrefixTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 
 import org.junit.jupiter.api.Test;
 
@@ -38,9 +38,9 @@ public class MavenITmng0377PluginLookupFromPrefixTest extends AbstractMavenInteg
      */
     @Test
     public void testitMNG377() throws Exception {
-        File testDir = extractResources("/mng-0377");
+        Path testDir = extractResources("mng-0377");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         verifier.deleteArtifacts("org.apache.maven.its.mng0377");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0449PluginVersionResolutionTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0449PluginVersionResolutionTest.java
index a18e7d3f12..2b4a8cb01d 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0449PluginVersionResolutionTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0449PluginVersionResolutionTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 
 import org.junit.jupiter.api.Test;
 
@@ -38,10 +38,10 @@ public class MavenITmng0449PluginVersionResolutionTest extends AbstractMavenInte
      */
     @Test
     public void testitLifecycleInvocation() throws Exception {
-        File testDir = extractResources("/mng-0449");
-        testDir = new File(testDir, "lifecycle");
+        Path testDir = extractResources("mng-0449");
+        testDir = testDir.resolve("lifecycle");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         try {
@@ -71,10 +71,10 @@ public void testitLifecycleInvocation() throws Exception {
      */
     @Test
     public void testitCliInvocation() throws Exception {
-        File testDir = extractResources("/mng-0449");
-        testDir = new File(testDir, "direct");
+        Path testDir = extractResources("mng-0449");
+        testDir = testDir.resolve("direct");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         try {
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0461TolerateMissingDependencyPomTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0461TolerateMissingDependencyPomTest.java
index 0b453e8c62..85277722e3 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0461TolerateMissingDependencyPomTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0461TolerateMissingDependencyPomTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 import java.util.List;
 
 import org.junit.jupiter.api.Test;
@@ -39,9 +39,9 @@ public class MavenITmng0461TolerateMissingDependencyPomTest extends AbstractMave
      */
     @Test
     public void testit() throws Exception {
-        File testDir = extractResources("/mng-0461");
+        Path testDir = extractResources("mng-0461");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         verifier.deleteArtifacts("org.apache.maven.its.mng0461");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0469ReportConfigTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0469ReportConfigTest.java
index a477e92990..0eba2ba5b5 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0469ReportConfigTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0469ReportConfigTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 import java.util.Properties;
 
 import org.junit.jupiter.api.Test;
@@ -41,9 +41,9 @@ public class MavenITmng0469ReportConfigTest extends AbstractMavenIntegrationTest
      */
     @Test
     public void testitBuildConfigDominantDuringBuild() throws Exception {
-        File testDir = extractResources("/mng-0469/test1");
+        Path testDir = extractResources("mng-0469/test1");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.deleteDirectory("target");
         verifier.setAutoclean(false);
         verifier.addCliArgument("org.apache.maven.its.plugins:maven-it-plugin-configuration:2.1-SNAPSHOT:config");
@@ -60,9 +60,9 @@ public void testitBuildConfigDominantDuringBuild() throws Exception {
      */
     @Test
     public void testitBuildConfigIrrelevantForReports() throws Exception {
-        File testDir = extractResources("/mng-0469/test2");
+        Path testDir = extractResources("mng-0469/test2");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.deleteDirectory("target");
         verifier.setAutoclean(false);
         // Inline version check: (,3.0-alpha-1) - current Maven version doesn't match this range
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0471CustomLifecycleTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0471CustomLifecycleTest.java
index b48c06bca6..5277e8b298 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0471CustomLifecycleTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0471CustomLifecycleTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 
 import org.junit.jupiter.api.Test;
 
@@ -37,9 +37,9 @@ public class MavenITmng0471CustomLifecycleTest extends AbstractMavenIntegrationT
      */
     @Test
     public void testitMNG471() throws Exception {
-        File testDir = extractResources("/mng-0471");
+        Path testDir = extractResources("mng-0471");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         verifier.addCliArguments(
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0479OverrideCentralRepoTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0479OverrideCentralRepoTest.java
index 082b7e364a..a3d6ccc5a9 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0479OverrideCentralRepoTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0479OverrideCentralRepoTest.java
@@ -18,9 +18,8 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 import java.util.Properties;
-
 import org.junit.jupiter.api.Test;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
@@ -41,11 +40,11 @@ public class MavenITmng0479OverrideCentralRepoTest extends AbstractMavenIntegrat
      */
     @Test
     public void testitModel() throws Exception {
-        File testDir = extractResources("/mng-0479");
+        Path testDir = extractResources("mng-0479");
 
         // Phase 1: Ensure the test plugin is downloaded before the test cuts off access to central
-        File child1 = new File(testDir, "setup");
-        Verifier verifier = newVerifier(child1.getAbsolutePath());
+        Path child1 = testDir.resolve("setup");
+        Verifier verifier = newVerifier(child1);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
 
@@ -54,8 +53,8 @@ public void testitModel() throws Exception {
         verifier.verifyErrorFreeLog();
 
         // Phase 2: Now run the test
-        File child2 = new File(testDir, "test");
-        verifier = newVerifier(child2.getAbsolutePath());
+        Path child2 = testDir.resolve("test");
+        verifier = newVerifier(child2);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
 
@@ -112,9 +111,9 @@ public void testitModel() throws Exception {
      */
     @Test
     public void testitResolution() throws Exception {
-        File testDir = extractResources("/mng-0479");
+        Path testDir = extractResources("mng-0479");
 
-        Verifier verifier = newVerifier(new File(testDir, "test-1").getAbsolutePath());
+        Verifier verifier = newVerifier(testDir.resolve("test-1"));
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         verifier.deleteArtifacts("org.apache.maven.its.mng0479");
@@ -133,7 +132,7 @@ public void testitResolution() throws Exception {
         verifier.verifyArtifactPresent("org.apache.maven.its.mng0479", "b", "0.1-SNAPSHOT", "jar");
         verifier.verifyArtifactPresent("org.apache.maven.its.mng0479", "b", "0.1-SNAPSHOT", "pom");
 
-        verifier = newVerifier(new File(testDir, "test-2").getAbsolutePath());
+        verifier = newVerifier(testDir.resolve("test-2"));
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         verifier.filterFile("settings-template.xml", "settings.xml");
@@ -150,7 +149,7 @@ public void testitResolution() throws Exception {
 
         verifier.verifyArtifactNotPresent("org.apache.maven.its.mng0479", "parent", "0.1", "pom");
 
-        verifier = newVerifier(new File(testDir, "test-3").getAbsolutePath());
+        verifier = newVerifier(testDir.resolve("test-3"));
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         verifier.filterFile("settings-template.xml", "settings.xml");
@@ -168,7 +167,7 @@ public void testitResolution() throws Exception {
         verifier.verifyArtifactNotPresent("org.apache.maven.its.mng0479", "a", "0.1", "jar");
         verifier.verifyArtifactNotPresent("org.apache.maven.its.mng0479", "a", "0.1", "pom");
 
-        verifier = newVerifier(new File(testDir, "test-4").getAbsolutePath());
+        verifier = newVerifier(testDir.resolve("test-4"));
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         verifier.filterFile("settings-template.xml", "settings.xml");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0496IgnoreUnknownPluginParametersTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0496IgnoreUnknownPluginParametersTest.java
index 4a76127e9d..c20dae026e 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0496IgnoreUnknownPluginParametersTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0496IgnoreUnknownPluginParametersTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 
 import org.junit.jupiter.api.Test;
 
@@ -38,9 +38,9 @@ public class MavenITmng0496IgnoreUnknownPluginParametersTest extends AbstractMav
      */
     @Test
     public void testitMNG496() throws Exception {
-        File testDir = extractResources("/mng-0496");
+        Path testDir = extractResources("mng-0496");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         verifier.addCliArgument("org.apache.maven.its.plugins:maven-it-plugin-log-file:2.1-SNAPSHOT:reset");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0505VersionRangeTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0505VersionRangeTest.java
index 7ed9ce6e6e..428356067c 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0505VersionRangeTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0505VersionRangeTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 import java.util.Collection;
 
 import org.junit.jupiter.api.Test;
@@ -45,9 +45,9 @@ public class MavenITmng0505VersionRangeTest extends AbstractMavenIntegrationTest
      */
     @Test
     public void testitMNG505() throws Exception {
-        File testDir = extractResources("/mng-0505");
+        Path testDir = extractResources("mng-0505");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         verifier.deleteArtifacts("org.apache.maven.its.mng0505");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0507ArtifactRelocationTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0507ArtifactRelocationTest.java
index 3c5a9c26c6..b49badaf79 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0507ArtifactRelocationTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0507ArtifactRelocationTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 import java.util.List;
 
 import org.junit.jupiter.api.Test;
@@ -40,9 +40,9 @@ public class MavenITmng0507ArtifactRelocationTest extends AbstractMavenIntegrati
      */
     @Test
     public void testitMNG507() throws Exception {
-        File testDir = extractResources("/mng-0507");
+        Path testDir = extractResources("mng-0507");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         verifier.deleteArtifacts("org.apache.maven", "maven-core-it-support", "1.1");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0522InheritedPluginMgmtConfigTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0522InheritedPluginMgmtConfigTest.java
index d9c3e10b49..268fc6f2d8 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0522InheritedPluginMgmtConfigTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0522InheritedPluginMgmtConfigTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 
 import org.junit.jupiter.api.Test;
 
@@ -37,9 +37,9 @@ public class MavenITmng0522InheritedPluginMgmtConfigTest extends AbstractMavenIn
      */
     @Test
     public void testitMNG522() throws Exception {
-        File testDir = extractResources("/mng-0522");
+        Path testDir = extractResources("mng-0522");
 
-        Verifier verifier = newVerifier(new File(testDir, "child-project").getAbsolutePath());
+        Verifier verifier = newVerifier(testDir.resolve("child-project"));
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         verifier.addCliArgument("process-resources");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0553SettingsAuthzEncryptionTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0553SettingsAuthzEncryptionTest.java
index 03937ea337..fc34fbd388 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0553SettingsAuthzEncryptionTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0553SettingsAuthzEncryptionTest.java
@@ -18,11 +18,10 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
-
 import org.eclipse.jetty.security.ConstraintMapping;
 import org.eclipse.jetty.security.ConstraintSecurityHandler;
 import org.eclipse.jetty.security.HashLoginService;
@@ -50,7 +49,7 @@
 @Disabled("Bounds: [2.1.0,3.0-alpha-1),[3.0-alpha-3,4.0.0-beta-4]")
 public class MavenITmng0553SettingsAuthzEncryptionTest extends AbstractMavenIntegrationTestCase {
 
-    private File testDir;
+    private Path testDir;
 
     private Server server;
 
@@ -58,7 +57,7 @@ public class MavenITmng0553SettingsAuthzEncryptionTest extends AbstractMavenInte
 
     @BeforeEach
     protected void setUp() throws Exception {
-        testDir = extractResources("/mng-0553");
+        testDir = extractResources("mng-0553");
 
         Constraint constraint = new Constraint(__BASIC_AUTH, "user");
         constraint.setAuthenticate(true);
@@ -79,7 +78,7 @@ protected void setUp() throws Exception {
         securityHandler.setConstraintMappings(new ConstraintMapping[] {constraintMapping});
 
         ResourceHandler repoHandler = new ResourceHandler();
-        repoHandler.setResourceBase(new File(testDir, "repo").getAbsolutePath());
+        repoHandler.setResourceBase(testDir.resolve("repo").toString());
 
         HandlerList handlerList = new HandlerList();
         handlerList.addHandler(securityHandler);
@@ -110,17 +109,17 @@ protected void tearDown() throws Exception {
      */
     @Test
     public void testitBasic() throws Exception {
-        testDir = new File(testDir, "test-1");
+        testDir = testDir.resolve("test-1");
 
         Map<String, String> filterProps = new HashMap<>();
         filterProps.put("@port@", Integer.toString(port));
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteArtifacts("org.apache.maven.its.mng0553");
         verifier.verifyArtifactNotPresent("org.apache.maven.its.mng0553", "a", "0.1-SNAPSHOT", "jar");
         verifier.filterFile("settings-template.xml", "settings.xml", filterProps);
-        verifier.setUserHomeDirectory(new File(testDir, "userhome").toPath());
+        verifier.setUserHomeDirectory(testDir.resolve("userhome"));
         verifier.addCliArgument("--settings");
         verifier.addCliArgument("settings.xml");
         verifier.addCliArgument("validate");
@@ -138,16 +137,16 @@ public void testitBasic() throws Exception {
      */
     @Test
     public void testitRelocation() throws Exception {
-        testDir = new File(testDir, "test-2");
+        testDir = testDir.resolve("test-2");
 
         Map<String, String> filterProps = new HashMap<>();
         filterProps.put("@port@", Integer.toString(port));
         // NOTE: The upper-case scheme name is essential part of the test
         String secUrl = "FILE://"
-                + new File(testDir, "relocated-settings-security.xml").toURI().getRawPath();
+                + testDir.resolve("relocated-settings-security.xml").toUri().getRawPath();
         filterProps.put("@relocation@", secUrl);
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteArtifacts("org.apache.maven.its.mng0553");
         verifier.verifyArtifactNotPresent("org.apache.maven.its.mng0553", "a", "0.1-SNAPSHOT", "jar");
@@ -161,7 +160,7 @@ public void testitRelocation() throws Exception {
         // NOTE: The selection of the Turkish language for the JVM locale is essential part of the test
         verifier.setEnvironmentVariable(
                 "MAVEN_OPTS",
-                "-Dsettings.security=" + new File(testDir, "settings~security.xml").getAbsolutePath()
+                "-Dsettings.security=" + testDir.resolve("settings~security.xml")
                         + " -Duser.language=tr");
         verifier.addCliArgument("validate");
         verifier.execute();
@@ -179,11 +178,11 @@ public void testitRelocation() throws Exception {
     public void testitEncryption() throws Exception {
         // requiresMavenVersion("[2.1.0,3.0-alpha-1),[3.0-alpha-7,)");
 
-        testDir = new File(testDir, "test-3");
+        testDir = testDir.resolve("test-3");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
-        verifier.setUserHomeDirectory(new File(testDir, "userhome").toPath());
+        verifier.setUserHomeDirectory(testDir.resolve("userhome"));
         verifier.addCliArgument("--encrypt-master-password");
         verifier.addCliArgument("test");
         verifier.setLogFileName("log-emp.txt");
@@ -194,9 +193,9 @@ public void testitEncryption() throws Exception {
         List<String> log = verifier.loadLogLines();
         assertNotNull(findPassword(log));
 
-        verifier = newVerifier(testDir.getAbsolutePath());
+        verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
-        verifier.setUserHomeDirectory(new File(testDir, "userhome").toPath());
+        verifier.setUserHomeDirectory(testDir.resolve("userhome"));
         verifier.addCliArgument("--encrypt-password");
         verifier.addCliArgument("testpass");
         verifier.setLogFileName("log-ep.txt");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0557UserSettingsCliOptionTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0557UserSettingsCliOptionTest.java
index 895a4e22ff..a2edc59ad2 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0557UserSettingsCliOptionTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0557UserSettingsCliOptionTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 
 import org.junit.jupiter.api.Test;
 
@@ -37,9 +37,9 @@ public class MavenITmng0557UserSettingsCliOptionTest extends AbstractMavenIntegr
      */
     @Test
     public void testitMNG557() throws Exception {
-        File testDir = extractResources("/mng-0557");
+        Path testDir = extractResources("mng-0557");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         verifier.addCliArgument("--settings");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0612NewestConflictResolverTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0612NewestConflictResolverTest.java
index 08a4015bf7..2d0209a738 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0612NewestConflictResolverTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0612NewestConflictResolverTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 
 import org.junit.jupiter.api.Disabled;
 import org.junit.jupiter.api.Test;
@@ -39,20 +39,20 @@ public class MavenITmng0612NewestConflictResolverTest extends AbstractMavenInteg
      */
     @Test
     public void testitMNG612() throws Exception {
-        File testDir = extractResources("/mng-0612/dependency");
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Path testDir = extractResources("mng-0612/dependency");
+        Verifier verifier = newVerifier(testDir);
         verifier.addCliArgument("install");
         verifier.execute();
         verifier.verifyErrorFreeLog();
 
-        testDir = extractResources("/mng-0612/plugin");
-        verifier = newVerifier(testDir.getAbsolutePath());
+        testDir = extractResources("mng-0612/plugin");
+        verifier = newVerifier(testDir);
         verifier.addCliArgument("install");
         verifier.execute();
         verifier.verifyErrorFreeLog();
 
-        testDir = extractResources("/mng-0612/project");
-        verifier = newVerifier(testDir.getAbsolutePath());
+        testDir = extractResources("mng-0612/project");
+        verifier = newVerifier(testDir);
         verifier.addCliArgument("verify");
         verifier.execute();
         verifier.verifyErrorFreeLog();
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0666IgnoreLegacyPomTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0666IgnoreLegacyPomTest.java
index 76623c4183..97d2a57515 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0666IgnoreLegacyPomTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0666IgnoreLegacyPomTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 import java.util.List;
 
 import org.junit.jupiter.api.Test;
@@ -41,9 +41,9 @@ public class MavenITmng0666IgnoreLegacyPomTest extends AbstractMavenIntegrationT
      */
     @Test
     public void testitMNG666() throws Exception {
-        File testDir = extractResources("/mng-0666");
+        Path testDir = extractResources("mng-0666");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         verifier.deleteArtifacts("org.apache.maven.its.it0059");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0674PluginParameterAliasTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0674PluginParameterAliasTest.java
index fe04f7cfc1..6645b584e3 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0674PluginParameterAliasTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0674PluginParameterAliasTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 import java.util.Properties;
 
 import org.junit.jupiter.api.Test;
@@ -41,9 +41,9 @@ public class MavenITmng0674PluginParameterAliasTest extends AbstractMavenIntegra
      */
     @Test
     public void testitLifecycle() throws Exception {
-        File testDir = extractResources("/mng-0674");
+        Path testDir = extractResources("mng-0674");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         verifier.setLogFileName("log-lifecycle.txt");
@@ -64,9 +64,9 @@ public void testitLifecycle() throws Exception {
      */
     @Test
     public void testitCli() throws Exception {
-        File testDir = extractResources("/mng-0674");
+        Path testDir = extractResources("mng-0674");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         verifier.setLogFileName("log-cli.txt");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0680ParentBasedirTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0680ParentBasedirTest.java
index 3135fc0eae..3fbe159d4b 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0680ParentBasedirTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0680ParentBasedirTest.java
@@ -18,9 +18,8 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 import java.util.Properties;
-
 import org.junit.jupiter.api.Test;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
@@ -40,13 +39,11 @@ public class MavenITmng0680ParentBasedirTest extends AbstractMavenIntegrationTes
      */
     @Test
     public void testitMNG680() throws Exception {
-        File testDir = extractResources("/mng-0680");
-
-        testDir = testDir.getCanonicalFile();
+        Path testDir = extractResources("mng-0680");
 
-        File subDir = new File(testDir, "subproject");
+        Path subDir = testDir.resolve("subproject");
 
-        Verifier verifier = newVerifier(subDir.getAbsolutePath());
+        Verifier verifier = newVerifier(subDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         verifier.addCliArgument("validate");
@@ -54,7 +51,7 @@ public void testitMNG680() throws Exception {
         verifier.verifyErrorFreeLog();
 
         Properties props = verifier.loadProperties("target/basedir.properties");
-        assertEquals(subDir, new File(props.getProperty("project.basedir")));
-        assertEquals(testDir, new File(props.getProperty("project.parent.basedir")));
+        assertEquals(subDir, Path.of(props.getProperty("project.basedir")));
+        assertEquals(testDir, Path.of(props.getProperty("project.parent.basedir")));
     }
 }
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0761MissingSnapshotDistRepoTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0761MissingSnapshotDistRepoTest.java
index 77fefc8958..c17c856e7e 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0761MissingSnapshotDistRepoTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0761MissingSnapshotDistRepoTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 
 import org.junit.jupiter.api.Test;
 
@@ -38,9 +38,9 @@ public class MavenITmng0761MissingSnapshotDistRepoTest extends AbstractMavenInte
      */
     @Test
     public void testitMNG761() throws Exception {
-        File testDir = extractResources("/mng-0761");
+        Path testDir = extractResources("mng-0761");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         verifier.deleteArtifacts("org.apache.maven.its.mng0761");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0768OfflineModeTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0768OfflineModeTest.java
index cfbc1145af..511f43e1b4 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0768OfflineModeTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0768OfflineModeTest.java
@@ -21,7 +21,7 @@
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
-import java.io.File;
+import java.nio.file.Path;
 import java.io.IOException;
 import java.io.PrintWriter;
 import java.util.ArrayList;
@@ -53,7 +53,7 @@ public class MavenITmng0768OfflineModeTest extends AbstractMavenIntegrationTestC
      */
     @Test
     public void testitMNG768() throws Exception {
-        File testDir = extractResources("/mng-0768");
+        Path testDir = extractResources("mng-0768");
 
         final List<String> requestedUris = Collections.synchronizedList(new ArrayList<>());
 
@@ -99,7 +99,7 @@ public void handle(
             int port = ((NetworkConnector) server.getConnectors()[0]).getLocalPort();
 
             // phase 1: run build in online mode to fill local repo
-            Verifier verifier = newVerifier(testDir.getAbsolutePath());
+            Verifier verifier = newVerifier(testDir);
             verifier.setAutoclean(false);
             verifier.deleteDirectory("target");
             verifier.deleteArtifacts("org.apache.maven.its.mng0768");
@@ -117,7 +117,7 @@ public void handle(
             requestedUris.clear();
 
             // phase 2: run build in offline mode to check it still passes, without network accesses
-            verifier = newVerifier(testDir.getAbsolutePath());
+            verifier = newVerifier(testDir);
             verifier.setAutoclean(false);
             verifier.deleteDirectory("target");
             verifier.addCliArgument("-o");
@@ -134,7 +134,7 @@ public void handle(
 
             // phase 3: delete test artifact and run build in offline mode to check it fails now
             // NOTE: Adding the settings again to offer Maven the bad choice of using the remote repo
-            verifier = newVerifier(testDir.getAbsolutePath());
+            verifier = newVerifier(testDir);
             verifier.setAutoclean(false);
             verifier.deleteDirectory("target");
             verifier.deleteArtifacts("org.apache.maven.its.mng0768");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0773SettingsProfileReactorPollutionTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0773SettingsProfileReactorPollutionTest.java
index 2d61abbcc6..11eff84d3e 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0773SettingsProfileReactorPollutionTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0773SettingsProfileReactorPollutionTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 
 import org.junit.jupiter.api.Test;
 
@@ -37,9 +37,9 @@ public class MavenITmng0773SettingsProfileReactorPollutionTest extends AbstractM
      */
     @Test
     public void testitMNG773() throws Exception {
-        File testDir = extractResources("/mng-0773");
+        Path testDir = extractResources("mng-0773");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.addCliArgument("--settings");
         verifier.addCliArgument("settings.xml");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0781PluginConfigVsExecConfigTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0781PluginConfigVsExecConfigTest.java
index 3db5b8ba07..da4dff06f3 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0781PluginConfigVsExecConfigTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0781PluginConfigVsExecConfigTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 
 import org.junit.jupiter.api.Test;
 
@@ -38,9 +38,9 @@ public class MavenITmng0781PluginConfigVsExecConfigTest extends AbstractMavenInt
      */
     @Test
     public void testitMNG0781() throws Exception {
-        File testDir = extractResources("/mng-0781");
+        Path testDir = extractResources("mng-0781");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         verifier.addCliArgument("process-resources");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0786ProfileAwareReactorTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0786ProfileAwareReactorTest.java
index 3a374c1546..7254fecd9a 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0786ProfileAwareReactorTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0786ProfileAwareReactorTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 
 import org.junit.jupiter.api.Test;
 
@@ -38,9 +38,9 @@ public class MavenITmng0786ProfileAwareReactorTest extends AbstractMavenIntegrat
      */
     @Test
     public void testitMNG0786() throws Exception {
-        File testDir = extractResources("/mng-0786");
+        Path testDir = extractResources("mng-0786");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("sub1/target");
         verifier.deleteDirectory("sub2/target");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0814ExplicitProfileActivationTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0814ExplicitProfileActivationTest.java
index 995b88cc49..ce8b6ee81a 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0814ExplicitProfileActivationTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0814ExplicitProfileActivationTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 import java.util.Properties;
 
 import org.junit.jupiter.api.Test;
@@ -40,9 +40,9 @@ public class MavenITmng0814ExplicitProfileActivationTest extends AbstractMavenIn
      */
     @Test
     public void testitMNG814() throws Exception {
-        File testDir = extractResources("/mng-0814");
+        Path testDir = extractResources("mng-0814");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         verifier.addCliArgument("-P");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0818WarDepsNotTransitiveTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0818WarDepsNotTransitiveTest.java
index ea4fd1f387..7a3533003a 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0818WarDepsNotTransitiveTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0818WarDepsNotTransitiveTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 import java.util.Collection;
 import java.util.Collections;
 
@@ -41,9 +41,9 @@ public class MavenITmng0818WarDepsNotTransitiveTest extends AbstractMavenIntegra
      */
     @Test
     public void testitMNG0818() throws Exception {
-        File testDir = extractResources("/mng-0818");
+        Path testDir = extractResources("mng-0818");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         verifier.deleteArtifacts("org.apache.maven.its.it0080");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0820ConflictResolutionTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0820ConflictResolutionTest.java
index 154a2bad66..c91c21d0aa 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0820ConflictResolutionTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0820ConflictResolutionTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 import java.util.Collection;
 
 import org.junit.jupiter.api.Test;
@@ -42,9 +42,9 @@ public class MavenITmng0820ConflictResolutionTest extends AbstractMavenIntegrati
      */
     @Test
     public void testitMNG0820() throws Exception {
-        File testDir = extractResources("/mng-0820");
+        Path testDir = extractResources("mng-0820");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         verifier.deleteArtifacts("org.apache.maven.its.mng0820");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0823MojoContextPassingTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0823MojoContextPassingTest.java
index 5e0feca52b..b943f622c0 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0823MojoContextPassingTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0823MojoContextPassingTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 
 import org.junit.jupiter.api.Test;
 
@@ -37,10 +37,10 @@ public class MavenITmng0823MojoContextPassingTest extends AbstractMavenIntegrati
      */
     @Test
     public void testitMNG0823() throws Exception {
-        File testDir = extractResources("/mng-0823");
+        Path testDir = extractResources("mng-0823");
 
         // First, build the test plugin
-        Verifier verifier = newVerifier(new File(testDir, "maven-it-plugin-context-passing").getAbsolutePath());
+        Verifier verifier = newVerifier(testDir.resolve("maven-it-plugin-context-passing"));
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         verifier.addCliArgument("install");
@@ -48,7 +48,7 @@ public void testitMNG0823() throws Exception {
         verifier.verifyErrorFreeLog();
 
         // Then, run the test project that uses the plugin
-        verifier = newVerifier(testDir.getAbsolutePath());
+        verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         verifier.addCliArguments(
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0828PluginConfigValuesInDebugTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0828PluginConfigValuesInDebugTest.java
index 9529b68753..eff32cb162 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0828PluginConfigValuesInDebugTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0828PluginConfigValuesInDebugTest.java
@@ -18,11 +18,10 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 import java.text.SimpleDateFormat;
 import java.util.Date;
 import java.util.Locale;
-
 import org.junit.jupiter.api.Test;
 
 import static org.junit.jupiter.api.Assertions.assertTrue;
@@ -43,9 +42,9 @@ public class MavenITmng0828PluginConfigValuesInDebugTest extends AbstractMavenIn
      */
     @Test
     public void testitMNG0828() throws Exception {
-        File testDir = extractResources("/mng-0828");
+        Path testDir = extractResources("mng-0828");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         verifier.addCliArgument("-X");
@@ -56,7 +55,7 @@ public void testitMNG0828() throws Exception {
         String log = verifier.loadLogContent();
 
         checkLog(log, "[DEBUG]   (f) aliasDefaultExpressionParam = test");
-        checkLog(log, "[DEBUG]   (f) basedir = " + testDir.getCanonicalPath());
+        checkLog(log, "[DEBUG]   (f) basedir = " + testDir);
         checkLog(
                 log,
                 "[DEBUG]   (f) beanParam = org.apache.maven.plugin.coreit.Bean[fieldParam=field, setterParam=setter, setterCalled=true]");
@@ -80,7 +79,7 @@ public void testitMNG0828() throws Exception {
 
         checkLog(log, "[DEBUG]   (f) doubleParam = -1.5");
         checkLog(log, "[DEBUG]   (f) fieldParam = field");
-        checkLog(log, "[DEBUG]   (f) fileParam = " + new File(testDir, "pom.xml").getCanonicalPath());
+        checkLog(log, "[DEBUG]   (f) fileParam = " + testDir.resolve("pom.xml"));
         checkLog(log, "[DEBUG]   (f) floatParam = 0.0");
         checkLog(log, "[DEBUG]   (f) integerParam = 0");
         checkLog(log, "[DEBUG]   (f) listParam = [one, two, three, four]");
@@ -91,7 +90,7 @@ public void testitMNG0828() throws Exception {
         checkLog(
                 log,
                 "[DEBUG]   (f) propertiesFile = "
-                        + new File(testDir, "target/plugin-config.properties").getCanonicalPath());
+                        + testDir.resolve("target/plugin-config.properties"));
 
         // Properties item order is not guaranteed, so only check begin of params ...
         checkLog(log, "[DEBUG]   (f) propertiesParam = {key");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0836PluginParentResolutionTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0836PluginParentResolutionTest.java
index f35870f684..87016b52d7 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0836PluginParentResolutionTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0836PluginParentResolutionTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 
 import org.junit.jupiter.api.Test;
 
@@ -39,9 +39,9 @@ public class MavenITmng0836PluginParentResolutionTest extends AbstractMavenInteg
      */
     @Test
     public void testitMNG836() throws Exception {
-        File testDir = extractResources("/mng-0836");
+        Path testDir = extractResources("mng-0836");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         verifier.deleteArtifacts("org.apache.maven.its.mng836");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0848UserPropertyOverridesDefaultValueTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0848UserPropertyOverridesDefaultValueTest.java
index 2f57a3f6d2..bde8872444 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0848UserPropertyOverridesDefaultValueTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0848UserPropertyOverridesDefaultValueTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 import java.util.Properties;
 
 import org.junit.jupiter.api.Test;
@@ -40,9 +40,9 @@ public class MavenITmng0848UserPropertyOverridesDefaultValueTest extends Abstrac
      */
     @Test
     public void testitMNG848() throws Exception {
-        File testDir = extractResources("/mng-0848");
+        Path testDir = extractResources("mng-0848");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         verifier.addCliArgument("-Dconfig.aliasDefaultExpressionParam=PASSED");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0866EvaluateDefaultValueTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0866EvaluateDefaultValueTest.java
index b7dd906044..f1ec519545 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0866EvaluateDefaultValueTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0866EvaluateDefaultValueTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 import java.util.Properties;
 
 import org.junit.jupiter.api.Test;
@@ -41,9 +41,9 @@ public class MavenITmng0866EvaluateDefaultValueTest extends AbstractMavenIntegra
      */
     @Test
     public void testitMNG866() throws Exception {
-        File testDir = extractResources("/mng-0866");
+        Path testDir = extractResources("mng-0866");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         verifier.addCliArgument("validate");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0870ReactorAwarePluginDiscoveryTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0870ReactorAwarePluginDiscoveryTest.java
index 8c5646f03f..05cdffaca4 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0870ReactorAwarePluginDiscoveryTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0870ReactorAwarePluginDiscoveryTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 
 import org.junit.jupiter.api.Test;
 
@@ -38,9 +38,9 @@ public class MavenITmng0870ReactorAwarePluginDiscoveryTest extends AbstractMaven
      */
     @Test
     public void testitMNG0870() throws Exception {
-        File testDir = extractResources("/mng-0870");
+        Path testDir = extractResources("mng-0870");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("project/target");
         verifier.deleteArtifacts("org.apache.maven.its.mng0870");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0947OptionalDependencyTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0947OptionalDependencyTest.java
index fd9ae60c58..4e6bf0abb8 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0947OptionalDependencyTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0947OptionalDependencyTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 import java.util.List;
 
 import org.junit.jupiter.api.Test;
@@ -43,9 +43,9 @@ public class MavenITmng0947OptionalDependencyTest extends AbstractMavenIntegrati
     public void testit() throws Exception {
         // failingMavenVersions("(,3.1.0-alpha-1)");
 
-        File testDir = extractResources("/mng-0947");
+        Path testDir = extractResources("mng-0947");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         verifier.deleteArtifacts("org.apache.maven.its.mng0947");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0956ComponentInjectionViaProjectLevelPluginDepTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0956ComponentInjectionViaProjectLevelPluginDepTest.java
index 04db046509..7081b20776 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0956ComponentInjectionViaProjectLevelPluginDepTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0956ComponentInjectionViaProjectLevelPluginDepTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 import java.util.Properties;
 
 import org.junit.jupiter.api.Test;
@@ -40,8 +40,8 @@ public class MavenITmng0956ComponentInjectionViaProjectLevelPluginDepTest extend
      */
     @Test
     public void testitMNG0956() throws Exception {
-        File testDir = extractResources("/mng-0956");
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Path testDir = extractResources("mng-0956");
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         verifier.deleteArtifacts("org.apache.maven.its.mng0956");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0985NonExecutedPluginMgmtGoalsTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0985NonExecutedPluginMgmtGoalsTest.java
index 53e55e6f40..f8b33fe834 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0985NonExecutedPluginMgmtGoalsTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng0985NonExecutedPluginMgmtGoalsTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 
 import org.junit.jupiter.api.Test;
 
@@ -39,8 +39,8 @@ public class MavenITmng0985NonExecutedPluginMgmtGoalsTest extends AbstractMavenI
      */
     @Test
     public void testitMNG0985() throws Exception {
-        File testDir = extractResources("/mng-0985");
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Path testDir = extractResources("mng-0985");
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         verifier.addCliArgument("initialize");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng1021EqualAttachmentBuildNumberTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng1021EqualAttachmentBuildNumberTest.java
index ff7a97683e..e621cc132d 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng1021EqualAttachmentBuildNumberTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng1021EqualAttachmentBuildNumberTest.java
@@ -18,8 +18,9 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
-
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Path;
 import org.junit.jupiter.api.Test;
 
 import static org.junit.jupiter.api.Assertions.assertTrue;
@@ -40,8 +41,8 @@ public class MavenITmng1021EqualAttachmentBuildNumberTest extends AbstractMavenI
      */
     @Test
     public void testitMNG1021() throws Exception {
-        File testDir = extractResources("/mng-1021");
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Path testDir = extractResources("mng-1021");
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("repo");
         verifier.deleteArtifacts("org.apache.maven.its.mng1021");
@@ -54,7 +55,7 @@ public void testitMNG1021() throws Exception {
         verifier.verifyArtifactPresent("org.apache.maven.its.mng1021", "test", "1-SNAPSHOT", "jar");
 
         String dir = "repo/org/apache/maven/its/mng1021/test/";
-        String snapshot = getSnapshotVersion(new File(testDir, dir + "1-SNAPSHOT"));
+        String snapshot = getSnapshotVersion(testDir.resolve(dir + "1-SNAPSHOT"));
         assertTrue(snapshot.endsWith("-1"), snapshot);
 
         verifier.verifyFilePresent(dir + "maven-metadata.xml");
@@ -74,14 +75,15 @@ public void testitMNG1021() throws Exception {
         verifier.verifyFilePresent(dir + "1-SNAPSHOT/test-" + snapshot + "-it.jar.sha1");
     }
 
-    private String getSnapshotVersion(File artifactDir) {
-        File[] files = artifactDir.listFiles();
-        for (File file : files) {
-            String name = file.getName();
-            if (name.endsWith(".pom")) {
-                return name.substring("test-".length(), name.length() - ".pom".length());
-            }
+    private String getSnapshotVersion(Path artifactDir) throws IOException {
+        try (var stream = Files.list(artifactDir)) {
+            return stream
+                    .filter(Files::isRegularFile)
+                    .map(Path::getFileName)
+                    .map(Path::toString)
+                    .filter(name -> name.endsWith(".pom"))
+                    .findFirst()
+                    .map(pomName -> pomName.substring("test-".length(), pomName.length() - ".pom".length()))
+                    .orElseThrow(() -> new IllegalStateException("POM not found in " + artifactDir));
         }
-        throw new IllegalStateException("POM not found in " + artifactDir);
-    }
-}
+    }}
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng1052PluginMgmtConfigTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng1052PluginMgmtConfigTest.java
index 20cac281a3..b24ee8d47d 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng1052PluginMgmtConfigTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng1052PluginMgmtConfigTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 
 import org.junit.jupiter.api.Test;
 
@@ -39,8 +39,8 @@ public class MavenITmng1052PluginMgmtConfigTest extends AbstractMavenIntegration
      */
     @Test
     public void testitMNG1052() throws Exception {
-        File testDir = extractResources("/mng-1052");
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Path testDir = extractResources("mng-1052");
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         verifier.addCliArgument("process-resources");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng1073AggregatorForksReactorTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng1073AggregatorForksReactorTest.java
index e46e4aab2d..3c05d8c23d 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng1073AggregatorForksReactorTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng1073AggregatorForksReactorTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 
 import org.junit.jupiter.api.Test;
 
@@ -39,9 +39,9 @@ public void testitForkLifecycle() throws Exception {
         // excluded 2.1.x and 2.2.x due to MNG-4325
         // requiresMavenVersion("[2.0,2.1.0),[3.0-alpha-3,)");
 
-        File testDir = extractResources("/mng-1073");
+        Path testDir = extractResources("mng-1073");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         verifier.deleteDirectory("sub-1/target");
@@ -64,9 +64,9 @@ public void testitForkLifecycle() throws Exception {
      */
     @Test
     public void testitForkGoal() throws Exception {
-        File testDir = extractResources("/mng-1073");
+        Path testDir = extractResources("mng-1073");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         verifier.deleteDirectory("sub-1/target");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng1088ReactorPluginResolutionTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng1088ReactorPluginResolutionTest.java
index a04c495a94..18a4bc2d8a 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng1088ReactorPluginResolutionTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng1088ReactorPluginResolutionTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 
 import org.junit.jupiter.api.Disabled;
 import org.junit.jupiter.api.Test;
@@ -41,9 +41,9 @@ public class MavenITmng1088ReactorPluginResolutionTest extends AbstractMavenInte
      */
     @Test
     public void testitMNG1088() throws Exception {
-        File testDir = extractResources("/mng-1088");
+        Path testDir = extractResources("mng-1088");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("client/target");
         verifier.deleteArtifacts("org.apache.maven.its.mng1088");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng11009StackOverflowParentResolutionTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng11009StackOverflowParentResolutionTest.java
index 841e359bbf..5ea0a1ad0b 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng11009StackOverflowParentResolutionTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng11009StackOverflowParentResolutionTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 
 import org.junit.jupiter.api.Test;
 
@@ -40,9 +40,9 @@ public class MavenITmng11009StackOverflowParentResolutionTest extends AbstractMa
      */
     @Test
     public void testStackOverflowInParentResolution() throws Exception {
-        File testDir = extractResources("/mng-11009-stackoverflow-parent-resolution");
+        Path testDir = extractResources("mng-11009-stackoverflow-parent-resolution");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteArtifacts("org.apache.maven.its.mng11009");
 
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng11133MixinsPrecedenceTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng11133MixinsPrecedenceTest.java
index f8b6134838..b60d5abf75 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng11133MixinsPrecedenceTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng11133MixinsPrecedenceTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 import java.nio.file.Files;
 
 import org.junit.jupiter.api.Test;
@@ -32,9 +32,9 @@ public class MavenITmng11133MixinsPrecedenceTest extends AbstractMavenIntegratio
 
     @Test
     public void testMixinOverridesParentProperty() throws Exception {
-        File testDir = extractResources("/mng-11133-mixins/project");
+        Path testDir = extractResources("/mng-11133-mixins/project");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         verifier.addCliArgument("help:effective-pom");
@@ -43,7 +43,7 @@ public void testMixinOverridesParentProperty() throws Exception {
         verifier.verifyErrorFreeLog();
 
         verifier.verifyFilePresent("target/effective-pom.xml");
-        String effectivePom = Files.readString(new File(testDir, "target/effective-pom.xml").toPath());
+        String effectivePom = Files.readString(testDir.resolve("target/effective-pom.xml"));
         assertTrue(effectivePom.contains("<maven.compiler.release>21</maven.compiler.release>"));
     }
 }
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng1142VersionRangeIntersectionTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng1142VersionRangeIntersectionTest.java
index c8d859e230..9186185f85 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng1142VersionRangeIntersectionTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng1142VersionRangeIntersectionTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 import java.util.List;
 
 import org.junit.jupiter.api.Test;
@@ -57,9 +57,9 @@ public void testitBA() throws Exception {
     }
 
     private void testit(String project) throws Exception {
-        File testDir = extractResources("/mng-1142");
+        Path testDir = extractResources("mng-1142");
 
-        Verifier verifier = newVerifier(new File(testDir, project).getAbsolutePath());
+        Verifier verifier = newVerifier(testDir.resolve(project));
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         verifier.deleteArtifacts("org.apache.maven.its.mng1142");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng1144MultipleDefaultGoalsTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng1144MultipleDefaultGoalsTest.java
index 161f976f04..99d42eff3f 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng1144MultipleDefaultGoalsTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng1144MultipleDefaultGoalsTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 
 import org.junit.jupiter.api.Test;
 
@@ -36,9 +36,9 @@ public class MavenITmng1144MultipleDefaultGoalsTest extends AbstractMavenIntegra
      */
     @Test
     public void testit() throws Exception {
-        File testDir = extractResources("/mng-1144");
+        Path testDir = extractResources("mng-1144");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         verifier.execute();
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng11796DefaultPhasesStandardLifecycleTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng11796DefaultPhasesStandardLifecycleTest.java
index f1b96b05cc..2bb1302497 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng11796DefaultPhasesStandardLifecycleTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng11796DefaultPhasesStandardLifecycleTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 
 import org.junit.jupiter.api.Test;
 
@@ -38,16 +38,16 @@ class MavenITmng11796DefaultPhasesStandardLifecycleTest extends AbstractMavenInt
      */
     @Test
     void testDefaultPhasesBindToStandardLifecyclePhases() throws Exception {
-        File testDir = extractResources("/mng-11796-default-phases-standard-lifecycle");
+        Path testDir = extractResources("/mng-11796-default-phases-standard-lifecycle");
 
         // Install the extension plugin
-        Verifier verifier = newVerifier(new File(testDir, "extension-plugin").getAbsolutePath());
+        Verifier verifier = newVerifier(testDir.resolve("extension-plugin"));
         verifier.addCliArgument("install");
         verifier.execute();
         verifier.verifyErrorFreeLog();
 
         // Run compile on the consumer project - the touch goal should execute at process-sources
-        verifier = newVerifier(new File(testDir, "consumer-project").getAbsolutePath());
+        verifier = newVerifier(testDir.resolve("consumer-project"));
         verifier.addCliArgument("compile");
         verifier.execute();
         verifier.verifyErrorFreeLog();
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng1233WarDepWithProvidedScopeTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng1233WarDepWithProvidedScopeTest.java
index 9f23a2f51f..c3cdec5696 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng1233WarDepWithProvidedScopeTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng1233WarDepWithProvidedScopeTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 import java.util.Collection;
 
 import org.junit.jupiter.api.Test;
@@ -41,9 +41,9 @@ public class MavenITmng1233WarDepWithProvidedScopeTest extends AbstractMavenInte
      */
     @Test
     public void testitMNG1233() throws Exception {
-        File testDir = extractResources("/mng-1233");
+        Path testDir = extractResources("mng-1233");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         verifier.deleteArtifacts("org.apache.maven.its.it0083");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng1323AntrunDependenciesTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng1323AntrunDependenciesTest.java
index 5d88f8b58d..d3710b79c1 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng1323AntrunDependenciesTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng1323AntrunDependenciesTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 import java.util.Properties;
 
 import org.junit.jupiter.api.Test;
@@ -42,9 +42,9 @@ public class MavenITmng1323AntrunDependenciesTest extends AbstractMavenIntegrati
      */
     @Test
     public void testitMNG1323() throws Exception {
-        File testDir = extractResources("/mng-1323");
+        Path testDir = extractResources("mng-1323");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         verifier.deleteDirectory("a/target");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng1349ChecksumFormatsTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng1349ChecksumFormatsTest.java
index 7881963865..2518bb7766 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng1349ChecksumFormatsTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng1349ChecksumFormatsTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 
 import org.junit.jupiter.api.Test;
 
@@ -37,9 +37,9 @@ public class MavenITmng1349ChecksumFormatsTest extends AbstractMavenIntegrationT
      */
     @Test
     public void testitMNG1349() throws Exception {
-        File testDir = extractResources("/mng-1349");
+        Path testDir = extractResources("mng-1349");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteArtifacts("org.apache.maven.its.mng1349");
         verifier.filterFile("settings-template.xml", "settings.xml");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng1412DependenciesOrderTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng1412DependenciesOrderTest.java
index 3b97e25993..a1e6b36726 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng1412DependenciesOrderTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng1412DependenciesOrderTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 import java.util.List;
 
 import org.junit.jupiter.api.Test;
@@ -38,9 +38,9 @@ public class MavenITmng1412DependenciesOrderTest extends AbstractMavenIntegratio
 
     @Test
     public void testitMNG1412() throws Exception {
-        File testDir = extractResources("/mng-1412");
+        Path testDir = extractResources("mng-1412");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         verifier.deleteArtifacts("org.apache.maven.its.mng1412");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng1415QuotedSystemPropertiesTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng1415QuotedSystemPropertiesTest.java
index c97ac838b4..83d077d0dc 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng1415QuotedSystemPropertiesTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng1415QuotedSystemPropertiesTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 import java.util.Properties;
 
 import org.junit.jupiter.api.Test;
@@ -39,9 +39,9 @@ public class MavenITmng1415QuotedSystemPropertiesTest extends AbstractMavenInteg
      */
     @Test
     public void testitMNG1415() throws Exception {
-        File testDir = extractResources("/mng-1415");
+        Path testDir = extractResources("mng-1415");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         verifier.addCliArgument("-Dtest.property=Test Property");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng1491ReactorArtifactIdCollisionTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng1491ReactorArtifactIdCollisionTest.java
index 52f55fcc11..15314a032f 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng1491ReactorArtifactIdCollisionTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng1491ReactorArtifactIdCollisionTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 
 import org.junit.jupiter.api.Test;
 
@@ -31,9 +31,9 @@ public class MavenITmng1491ReactorArtifactIdCollisionTest extends AbstractMavenI
 
     @Test
     public void testitMNG1491() throws Exception {
-        File testDir = extractResources("/mng-1491");
+        Path testDir = extractResources("mng-1491");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
 
         try {
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng1493NonStandardModulePomNamesTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng1493NonStandardModulePomNamesTest.java
index f2a50a1dad..fdd6862fd5 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng1493NonStandardModulePomNamesTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng1493NonStandardModulePomNamesTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 
 import org.junit.jupiter.api.Test;
 
@@ -31,11 +31,11 @@ public class MavenITmng1493NonStandardModulePomNamesTest extends AbstractMavenIn
 
     @Test
     public void testitMNG1493() throws Exception {
-        File testDir = extractResources("/mng-1493");
+        Path testDir = extractResources("mng-1493");
 
         Verifier verifier;
 
-        verifier = newVerifier(testDir.getAbsolutePath());
+        verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
 
         verifier.addCliArgument("initialize");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng1701DuplicatePluginTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng1701DuplicatePluginTest.java
index c465f9238b..1c2efb4d7b 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng1701DuplicatePluginTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng1701DuplicatePluginTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 import java.util.List;
 
 import org.junit.jupiter.api.Test;
@@ -39,9 +39,9 @@ public class MavenITmng1701DuplicatePluginTest extends AbstractMavenIntegrationT
      */
     @Test
     public void testit() throws Exception {
-        File testDir = extractResources("/mng-1701");
+        Path testDir = extractResources("mng-1701");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         try {
             verifier.addCliArgument("validate");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng1703PluginMgmtDepInheritanceTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng1703PluginMgmtDepInheritanceTest.java
index 10cfd9042e..e5e5bf1278 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng1703PluginMgmtDepInheritanceTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng1703PluginMgmtDepInheritanceTest.java
@@ -18,9 +18,8 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 import java.util.Properties;
-
 import org.junit.jupiter.api.Test;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
@@ -42,9 +41,9 @@ public class MavenITmng1703PluginMgmtDepInheritanceTest extends AbstractMavenInt
      */
     @Test
     public void testitMNG1703() throws Exception {
-        File testDir = extractResources("/mng-1703");
+        Path testDir = extractResources("mng-1703");
 
-        Verifier verifier = newVerifier(new File(testDir, "child").getAbsolutePath());
+        Verifier verifier = newVerifier(testDir.resolve("child"));
         verifier.setAutoclean(false);
         verifier.filterFile("settings-template.xml", "settings.xml");
         verifier.addCliArgument("--settings");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng1751ForcedMetadataUpdateDuringDeploymentTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng1751ForcedMetadataUpdateDuringDeploymentTest.java
index b903b41734..1094d26a58 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng1751ForcedMetadataUpdateDuringDeploymentTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng1751ForcedMetadataUpdateDuringDeploymentTest.java
@@ -18,11 +18,10 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
 import java.nio.file.Files;
+import java.nio.file.Path;
 import java.nio.file.StandardCopyOption;
 import java.util.Properties;
-
 import org.junit.jupiter.api.Test;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
@@ -43,17 +42,17 @@ public class MavenITmng1751ForcedMetadataUpdateDuringDeploymentTest extends Abst
      */
     @Test
     public void testit() throws Exception {
-        File testDir = extractResources("/mng-1751");
+        Path testDir = extractResources("mng-1751");
 
-        File dir = new File(testDir, "repo/org/apache/maven/its/mng1751/dep/0.1-SNAPSHOT");
-        File templateMetadataFile = new File(dir, "template-metadata.xml");
-        File metadataFile = new File(dir, "maven-metadata.xml");
-        Files.copy(templateMetadataFile.toPath(), metadataFile.toPath(), StandardCopyOption.REPLACE_EXISTING);
+        Path dir = testDir.resolve("repo/org/apache/maven/its/mng1751/dep/0.1-SNAPSHOT");
+        Path templateMetadataFile = dir.resolve("template-metadata.xml");
+        Path metadataFile = dir.resolve("maven-metadata.xml");
+        Files.copy(templateMetadataFile, metadataFile, StandardCopyOption.REPLACE_EXISTING);
         String checksum = ItUtils.calcHash(metadataFile, "SHA-1");
-        Files.writeString(metadataFile.toPath().getParent().resolve(metadataFile.getName() + ".sha1"), checksum);
+        Files.writeString(metadataFile.getParent().resolve(metadataFile.getFileName() + ".sha1"), checksum);
 
         // phase 1: deploy a new snapshot, this should update the metadata despite its future timestamp
-        Verifier verifier = newVerifier(new File(testDir, "dep").getAbsolutePath());
+        Verifier verifier = newVerifier(testDir.resolve("dep"));
         verifier.setAutoclean(false);
         verifier.deleteArtifacts("org.apache.maven.its.mng1751");
         verifier.addCliArgument("validate");
@@ -61,7 +60,7 @@ public void testit() throws Exception {
         verifier.verifyErrorFreeLog();
 
         // phase 2: resolve snapshot, if the previous deployment didn't update the metadata, we get the wrong file
-        verifier = newVerifier(new File(testDir, "test").getAbsolutePath());
+        verifier = newVerifier(testDir.resolve("test"));
         verifier.setAutoclean(false);
         verifier.deleteArtifacts("org.apache.maven.its.mng1751");
         verifier.filterFile("settings-template.xml", "settings.xml");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng1803PomValidationErrorIncludesLineNumberTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng1803PomValidationErrorIncludesLineNumberTest.java
index a8b87b4058..949a633c31 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng1803PomValidationErrorIncludesLineNumberTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng1803PomValidationErrorIncludesLineNumberTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 import java.util.List;
 
 import org.junit.jupiter.api.Test;
@@ -39,9 +39,9 @@ public class MavenITmng1803PomValidationErrorIncludesLineNumberTest extends Abst
      */
     @Test
     public void testit() throws Exception {
-        File testDir = extractResources("/mng-1803");
+        Path testDir = extractResources("mng-1803");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         try {
             verifier.addCliArgument("validate");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng1895ScopeConflictResolutionTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng1895ScopeConflictResolutionTest.java
index 7f5f19fb2c..09d83d8e26 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng1895ScopeConflictResolutionTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng1895ScopeConflictResolutionTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 import java.util.List;
 import java.util.Map;
 
@@ -42,9 +42,9 @@ public class MavenITmng1895ScopeConflictResolutionTest extends AbstractMavenInte
      */
     @Test
     public void testitDirectVsIndirect() throws Exception {
-        File testDir = extractResources("/mng-1895/direct-vs-indirect");
+        Path testDir = extractResources("mng-1895/direct-vs-indirect");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteArtifacts("org.apache.maven.its.mng1895");
         verifier.deleteDirectory("target");
@@ -209,9 +209,9 @@ public void testitProvidedVsTest() throws Exception {
     }
 
     private Verifier run(String scopeB, String scopeA) throws Exception {
-        File testDir = extractResources("/mng-1895/strong-vs-weak");
+        Path testDir = extractResources("mng-1895/strong-vs-weak");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteArtifacts("org.apache.maven.its.mng1895");
         verifier.deleteDirectory("target");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng1957JdkActivationWithVersionRangeTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng1957JdkActivationWithVersionRangeTest.java
index 9044d8d722..fc7d0a83f6 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng1957JdkActivationWithVersionRangeTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng1957JdkActivationWithVersionRangeTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 import java.util.Properties;
 
 import org.junit.jupiter.api.Test;
@@ -41,9 +41,9 @@ public class MavenITmng1957JdkActivationWithVersionRangeTest extends AbstractMav
      */
     @Test
     public void testitMNG1957() throws Exception {
-        File testDir = extractResources("/mng-1957");
+        Path testDir = extractResources("mng-1957");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         verifier.addCliArgument("validate");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng1992SystemPropOverridesPomPropTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng1992SystemPropOverridesPomPropTest.java
index 6a799aac83..0ca64fa3dc 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng1992SystemPropOverridesPomPropTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng1992SystemPropOverridesPomPropTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 import java.util.Properties;
 
 import org.junit.jupiter.api.Test;
@@ -42,9 +42,9 @@ public class MavenITmng1992SystemPropOverridesPomPropTest extends AbstractMavenI
      */
     @Test
     public void testitMNG1992() throws Exception {
-        File testDir = extractResources("/mng-1992");
+        Path testDir = extractResources("mng-1992");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         verifier.getSystemProperties().setProperty("config.stringParam", "PASSED");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng1995InterpolateBooleanModelElementsTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng1995InterpolateBooleanModelElementsTest.java
index 02d2ba8c3d..acefe1221e 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng1995InterpolateBooleanModelElementsTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng1995InterpolateBooleanModelElementsTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 import java.util.Properties;
 
 import org.junit.jupiter.api.Test;
@@ -41,9 +41,9 @@ public class MavenITmng1995InterpolateBooleanModelElementsTest extends AbstractM
      */
     @Test
     public void testitMNG1995() throws Exception {
-        File testDir = extractResources("/mng-1995");
+        Path testDir = extractResources("mng-1995");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
 
         verifier.addCliArgument("validate");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2006ChildPathAwareUrlInheritanceTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2006ChildPathAwareUrlInheritanceTest.java
index 4b28a93ae8..8705cecf19 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2006ChildPathAwareUrlInheritanceTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2006ChildPathAwareUrlInheritanceTest.java
@@ -18,9 +18,8 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 import java.util.Properties;
-
 import org.junit.jupiter.api.Test;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
@@ -41,9 +40,9 @@ public class MavenITmng2006ChildPathAwareUrlInheritanceTest extends AbstractMave
      */
     @Test
     public void testitMNG2006() throws Exception {
-        File testDir = extractResources("/mng-2006");
+        Path testDir = extractResources("mng-2006");
 
-        Verifier verifier = newVerifier(new File(testDir, "child").getAbsolutePath());
+        Verifier verifier = newVerifier(testDir.resolve("child"));
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         verifier.addCliArgument("validate");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2045testJarDependenciesBrokenInReactorTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2045testJarDependenciesBrokenInReactorTest.java
index 212397101c..7d342bbc80 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2045testJarDependenciesBrokenInReactorTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2045testJarDependenciesBrokenInReactorTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 import java.util.List;
 
 import org.junit.jupiter.api.Test;
@@ -41,9 +41,9 @@ public class MavenITmng2045testJarDependenciesBrokenInReactorTest extends Abstra
 
     @Test
     public void testitMNG2045() throws Exception {
-        File testDir = extractResources("/mng-2045");
+        Path testDir = extractResources("mng-2045");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("test-user/target");
         verifier.deleteArtifacts("org.apache.maven.its.mng2045");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2052InterpolateWithSettingsProfilePropertiesTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2052InterpolateWithSettingsProfilePropertiesTest.java
index 62d713dd22..358b554d41 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2052InterpolateWithSettingsProfilePropertiesTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2052InterpolateWithSettingsProfilePropertiesTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 
 import org.junit.jupiter.api.Test;
 
@@ -38,9 +38,9 @@ public class MavenITmng2052InterpolateWithSettingsProfilePropertiesTest extends
      */
     @Test
     public void testitMNG2052() throws Exception {
-        File testDir = extractResources("/mng-2052");
+        Path testDir = extractResources("mng-2052");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.addCliArgument("--settings");
         verifier.addCliArgument("settings.xml");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2054PluginExecutionInheritanceTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2054PluginExecutionInheritanceTest.java
index 94affd8f1e..fd5686a0e6 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2054PluginExecutionInheritanceTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2054PluginExecutionInheritanceTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 import java.util.Arrays;
 import java.util.List;
 
@@ -40,8 +40,8 @@ public class MavenITmng2054PluginExecutionInheritanceTest extends AbstractMavenI
      */
     @Test
     public void testitMNG2054() throws Exception {
-        File testDir = extractResources("/mng-2054");
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Path testDir = extractResources("mng-2054");
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("project/project-level2/project-level3/project-jar/target");
         verifier.addCliArgument("validate");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2068ReactorRelativeParentsTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2068ReactorRelativeParentsTest.java
index 5a880aa64f..3eca5494db 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2068ReactorRelativeParentsTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2068ReactorRelativeParentsTest.java
@@ -18,8 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
-
+import java.nio.file.Path;
 import org.junit.jupiter.api.Test;
 
 /**
@@ -43,10 +42,10 @@ public class MavenITmng2068ReactorRelativeParentsTest extends AbstractMavenInteg
      */
     @Test
     public void testitInheritedIdFields() throws Exception {
-        File testDir = extractResources("/mng-2068/test-1");
-        File projectDir = new File(testDir, "parent");
+        Path testDir = extractResources("mng-2068/test-1");
+        Path projectDir = testDir.resolve("parent");
 
-        Verifier verifier = newVerifier(projectDir.getAbsolutePath());
+        Verifier verifier = newVerifier(projectDir);
         verifier.setAutoclean(false);
         verifier.deleteArtifacts("org.apache.maven.its.mng2068");
         verifier.addCliArgument("validate");
@@ -61,10 +60,10 @@ public void testitInheritedIdFields() throws Exception {
      */
     @Test
     public void testitExplicitIdFields() throws Exception {
-        File testDir = extractResources("/mng-2068/test-2");
-        File projectDir = new File(testDir, "parent");
+        Path testDir = extractResources("mng-2068/test-2");
+        Path projectDir = testDir.resolve("parent");
 
-        Verifier verifier = newVerifier(projectDir.getAbsolutePath());
+        Verifier verifier = newVerifier(projectDir);
         verifier.setAutoclean(false);
         verifier.deleteArtifacts("org.apache.maven.its.mng2068");
         verifier.addCliArgument("validate");
@@ -79,10 +78,10 @@ public void testitExplicitIdFields() throws Exception {
      */
     @Test
     public void testitComplex() throws Exception {
-        File testDir = extractResources("/mng-2068/test-3");
-        File projectDir = testDir;
+        Path testDir = extractResources("mng-2068/test-3");
+        Path projectDir = testDir;
 
-        Verifier verifier = newVerifier(projectDir.getAbsolutePath());
+        Verifier verifier = newVerifier(projectDir);
         verifier.setAutoclean(false);
         verifier.deleteArtifacts("org.apache.maven.its.mng2068");
         verifier.addCliArgument("validate");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2098VersionRangeSatisfiedFromWrongRepoTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2098VersionRangeSatisfiedFromWrongRepoTest.java
index ed68fb5af3..6c85b410a3 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2098VersionRangeSatisfiedFromWrongRepoTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2098VersionRangeSatisfiedFromWrongRepoTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 
 import org.junit.jupiter.api.Test;
 
@@ -39,9 +39,9 @@ public class MavenITmng2098VersionRangeSatisfiedFromWrongRepoTest extends Abstra
      */
     @Test
     public void testit() throws Exception {
-        File testDir = extractResources("/mng-2098");
+        Path testDir = extractResources("mng-2098");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteArtifacts("org.apache.maven.its.mng2098");
         verifier.addCliArgument("-s");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2103PluginExecutionInheritanceTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2103PluginExecutionInheritanceTest.java
index 5186ce723b..65213410ed 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2103PluginExecutionInheritanceTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2103PluginExecutionInheritanceTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 import java.util.Arrays;
 import java.util.List;
 
@@ -40,9 +40,9 @@ public class MavenITmng2103PluginExecutionInheritanceTest extends AbstractMavenI
      */
     @Test
     public void testit() throws Exception {
-        File testDir = extractResources("/mng-2103");
+        Path testDir = extractResources("mng-2103");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("child-1/target");
         verifier.deleteDirectory("child-2/target");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2123VersionRangeDependencyTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2123VersionRangeDependencyTest.java
index 66e316b0e1..567ea71bb8 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2123VersionRangeDependencyTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2123VersionRangeDependencyTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 import java.util.List;
 
 import org.junit.jupiter.api.Test;
@@ -32,9 +32,9 @@ public class MavenITmng2123VersionRangeDependencyTest extends AbstractMavenInteg
 
     @Test
     public void testitMNG2123() throws Exception {
-        File testDir = extractResources("/mng-2123");
+        Path testDir = extractResources("mng-2123");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         verifier.deleteArtifacts("org.apache.maven.its.mng2123");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2124PomInterpolationWithParentValuesTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2124PomInterpolationWithParentValuesTest.java
index 43799711c7..6e65c28b07 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2124PomInterpolationWithParentValuesTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2124PomInterpolationWithParentValuesTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 import java.util.Properties;
 
 import org.junit.jupiter.api.Test;
@@ -37,10 +37,10 @@ public class MavenITmng2124PomInterpolationWithParentValuesTest extends Abstract
      */
     @Test
     public void testitMNG2124() throws Exception {
-        File testDir = extractResources("/mng-2124");
-        File child = new File(testDir, "parent/child");
+        Path testDir = extractResources("mng-2124");
+        Path child = testDir.resolve("parent/child");
 
-        Verifier verifier = newVerifier(child.getAbsolutePath());
+        Verifier verifier = newVerifier(child);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         verifier.addCliArgument("initialize");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2130ParentLookupFromReactorCacheTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2130ParentLookupFromReactorCacheTest.java
index 6245e730f3..dc3311c19e 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2130ParentLookupFromReactorCacheTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2130ParentLookupFromReactorCacheTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 
 import org.junit.jupiter.api.Test;
 
@@ -35,9 +35,9 @@ public class MavenITmng2130ParentLookupFromReactorCacheTest extends AbstractMave
      */
     @Test
     public void testitMNG2130() throws Exception {
-        File testDir = extractResources("/mng-2130");
+        Path testDir = extractResources("mng-2130");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteArtifacts("org.apache.maven.mng2130");
         verifier.addCliArgument("validate");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2135PluginBuildInReactorTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2135PluginBuildInReactorTest.java
index f893e03475..d574db1f2e 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2135PluginBuildInReactorTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2135PluginBuildInReactorTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 
 import org.junit.jupiter.api.Test;
 
@@ -36,9 +36,9 @@ public class MavenITmng2135PluginBuildInReactorTest extends AbstractMavenIntegra
      */
     @Test
     public void testit() throws Exception {
-        File testDir = extractResources("/mng-2135");
+        Path testDir = extractResources("mng-2135");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("plugin/target");
         verifier.deleteDirectory("project/target");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2136ActiveByDefaultProfileTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2136ActiveByDefaultProfileTest.java
index 11aaa527e8..95548cc780 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2136ActiveByDefaultProfileTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2136ActiveByDefaultProfileTest.java
@@ -18,9 +18,8 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 import java.util.Properties;
-
 import org.junit.jupiter.api.Test;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
@@ -41,14 +40,14 @@ public class MavenITmng2136ActiveByDefaultProfileTest extends AbstractMavenInteg
      */
     @Test
     public void testitMNG2136() throws Exception {
-        File testDir = extractResources("/mng-2136");
+        Path testDir = extractResources("mng-2136");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
 
         verifier.addCliArgument(
-                "-Dexpression.outputFile=" + new File(testDir, "target/expression.properties").getPath());
+                "-Dexpression.outputFile=" + testDir.resolve("target/expression.properties"));
         verifier.addCliArgument("-Dexpression.expressions=project/properties");
         verifier.addCliArgument("--settings");
         verifier.addCliArgument("settings.xml");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2140ReactorAwareDepResolutionWhenForkTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2140ReactorAwareDepResolutionWhenForkTest.java
index a608addfa6..292492f43f 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2140ReactorAwareDepResolutionWhenForkTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2140ReactorAwareDepResolutionWhenForkTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 import java.util.List;
 
 import org.junit.jupiter.api.Test;
@@ -39,9 +39,9 @@ public class MavenITmng2140ReactorAwareDepResolutionWhenForkTest extends Abstrac
      */
     @Test
     public void testit() throws Exception {
-        File testDir = extractResources("/mng-2140");
+        Path testDir = extractResources("mng-2140");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         verifier.addCliArgument("validate");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2174PluginDepsManagedByParentProfileTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2174PluginDepsManagedByParentProfileTest.java
index 700c97f21d..d57898b59e 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2174PluginDepsManagedByParentProfileTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2174PluginDepsManagedByParentProfileTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 import java.util.Properties;
 
 import org.junit.jupiter.api.Test;
@@ -42,9 +42,9 @@ public class MavenITmng2174PluginDepsManagedByParentProfileTest extends Abstract
      */
     @Test
     public void testitMNG2174() throws Exception {
-        File testDir = extractResources("/mng-2174");
+        Path testDir = extractResources("mng-2174");
 
-        Verifier verifier = newVerifier(new File(testDir, "sub").getAbsolutePath());
+        Verifier verifier = newVerifier(testDir.resolve("sub"));
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         verifier.deleteArtifacts("org.apache.maven.its.mng2174");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2196ParentResolutionTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2196ParentResolutionTest.java
index 8aebd9bf0c..2d0e3727ec 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2196ParentResolutionTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2196ParentResolutionTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 
 import org.junit.jupiter.api.Disabled;
 import org.junit.jupiter.api.Test;
@@ -38,9 +38,9 @@ public class MavenITmng2196ParentResolutionTest extends AbstractMavenIntegration
      */
     @Test
     public void testitMNG2196() throws Exception {
-        File testDir = extractResources("/mng-2196");
+        Path testDir = extractResources("mng-2196");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteArtifacts("org.apache.maven.its.mng2196");
 
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2199ParentVersionRangeTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2199ParentVersionRangeTest.java
index c64b8dfcd1..21dfa77799 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2199ParentVersionRangeTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2199ParentVersionRangeTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 import java.util.List;
 import java.util.regex.Pattern;
 
@@ -34,9 +34,9 @@ public class MavenITmng2199ParentVersionRangeTest extends AbstractMavenIntegrati
     public void testValidParentVersionRangeWithInclusiveUpperBound() throws Exception {
         // failingMavenVersions("(3.2.2,3.5.0-alpha-0)");
         Verifier verifier = null;
-        File testDir = extractResources("/mng-2199-parent-version-range/valid-inclusive-upper-bound");
+        Path testDir = extractResources("mng-2199-parent-version-range/valid-inclusive-upper-bound");
 
-        verifier = newVerifier(testDir.getAbsolutePath());
+        verifier = newVerifier(testDir);
         verifier.addCliArgument("-U");
         verifier.setAutoclean(false);
         verifier.addCliArgument("verify");
@@ -46,7 +46,7 @@ public void testValidParentVersionRangeWithInclusiveUpperBound() throws Exceptio
         // All Maven versions not supporting remote parent version ranges will log a warning message whenever
         // building a parent fails. The build succeeds without any parent. If that warning message appears in the
         // log, parent resolution failed.
-        final List<String> lines = verifier.loadFile(new File(testDir, "log.txt"), false);
+        final List<String> lines = verifier.loadFile(testDir.resolve("log.txt"));
         assertFalse(indexOf(lines, ".*Failed to build parent project.*") >= 0, "Unexpected error message found.");
     }
 
@@ -54,9 +54,9 @@ public void testValidParentVersionRangeWithInclusiveUpperBound() throws Exceptio
     public void testValidParentVersionRangeWithExclusiveUpperBound() throws Exception {
         // failingMavenVersions("(3.2.2,3.5.0-alpha-0)");
         Verifier verifier = null;
-        File testDir = extractResources("/mng-2199-parent-version-range/valid-exclusive-upper-bound");
+        Path testDir = extractResources("mng-2199-parent-version-range/valid-exclusive-upper-bound");
 
-        verifier = newVerifier(testDir.getAbsolutePath());
+        verifier = newVerifier(testDir);
         verifier.addCliArgument("-U");
         verifier.setAutoclean(false);
         verifier.addCliArgument("verify");
@@ -66,17 +66,17 @@ public void testValidParentVersionRangeWithExclusiveUpperBound() throws Exceptio
         // All Maven versions not supporting remote parent version ranges will log a warning message whenever
         // building a parent fails. The build succeeds without any parent. If that warning message appears in the
         // log, parent resolution failed.
-        final List<String> lines = verifier.loadFile(new File(testDir, "log.txt"), false);
+        final List<String> lines = verifier.loadFile(testDir.resolve("log.txt"));
         assertFalse(indexOf(lines, ".*Failed to build parent project.*") >= 0, "Unexpected error message found.");
     }
 
     @Test
     public void testInvalidParentVersionRangeWithoutUpperBound() throws Exception {
         Verifier verifier = null;
-        File testDir = extractResources("/mng-2199-parent-version-range/invalid");
+        Path testDir = extractResources("mng-2199-parent-version-range/invalid");
 
         try {
-            verifier = newVerifier(testDir.getAbsolutePath());
+            verifier = newVerifier(testDir);
             verifier.setAutoclean(false);
             verifier.addCliArgument("-U");
             verifier.addCliArgument("verify");
@@ -84,7 +84,7 @@ public void testInvalidParentVersionRangeWithoutUpperBound() throws Exception {
             fail("Expected 'VerificationException' not thrown.");
         } catch (final VerificationException e) {
             assertNotNull(verifier);
-            final List<String> lines = verifier.loadFile(new File(testDir, "log.txt"), false);
+            final List<String> lines = verifier.loadFile(testDir.resolve("log.txt"));
             assertTrue(
                     indexOf(lines, ".*(parent)? version range.*does not specify an upper bound.*") >= 0,
                     "Expected error message not found.");
@@ -94,10 +94,10 @@ public void testInvalidParentVersionRangeWithoutUpperBound() throws Exception {
     @Test
     public void testValidParentVersionRangeInvalidVersionExpression() throws Exception {
         Verifier verifier = null;
-        File testDir = extractResources("/mng-2199-parent-version-range/expression");
+        Path testDir = extractResources("mng-2199-parent-version-range/expression");
 
         try {
-            verifier = newVerifier(testDir.getAbsolutePath());
+            verifier = newVerifier(testDir);
             verifier.setAutoclean(false);
             verifier.addCliArgument("-U");
             verifier.addCliArgument("verify");
@@ -105,7 +105,7 @@ public void testValidParentVersionRangeInvalidVersionExpression() throws Excepti
             fail("Expected 'VerificationException' not thrown.");
         } catch (final VerificationException e) {
             assertNotNull(verifier);
-            final List<String> lines = verifier.loadFile(new File(testDir, "log.txt"), false);
+            final List<String> lines = verifier.loadFile(testDir.resolve("log.txt"));
             int msg = indexOf(lines, ".*Version must be a constant.*org.apache.maven.its.mng2199:expression.*");
             assertTrue(msg >= 0, "Expected error message not found.");
         }
@@ -114,10 +114,10 @@ public void testValidParentVersionRangeInvalidVersionExpression() throws Excepti
     @Test
     public void testValidParentVersionRangeInvalidVersionInheritance() throws Exception {
         Verifier verifier = null;
-        File testDir = extractResources("/mng-2199-parent-version-range/inherited");
+        Path testDir = extractResources("mng-2199-parent-version-range/inherited");
 
         try {
-            verifier = newVerifier(testDir.getAbsolutePath());
+            verifier = newVerifier(testDir);
             verifier.setAutoclean(false);
             verifier.addCliArgument("-U");
             verifier.addCliArgument("verify");
@@ -125,7 +125,7 @@ public void testValidParentVersionRangeInvalidVersionInheritance() throws Except
             fail("Expected 'VerificationException' not thrown.");
         } catch (final VerificationException e) {
             assertNotNull(verifier);
-            final List<String> lines = verifier.loadFile(new File(testDir, "log.txt"), false);
+            final List<String> lines = verifier.loadFile(testDir.resolve("log.txt"));
             int msg = indexOf(lines, ".*Version must be a constant.*org.apache.maven.its.mng2199:inherited.*");
             assertTrue(msg >= 0, "Expected error message not found.");
         }
@@ -135,9 +135,9 @@ public void testValidParentVersionRangeInvalidVersionInheritance() throws Except
     public void testValidLocalParentVersionRange() throws Exception {
         // failingMavenVersions("(,3.3.0),(3.3.9,3.5.0-alpha-0)");
         Verifier verifier = null;
-        File testDir = extractResources("/mng-2199-parent-version-range/valid-local/child");
+        Path testDir = extractResources("mng-2199-parent-version-range/valid-local/child");
 
-        verifier = newVerifier(testDir.getAbsolutePath());
+        verifier = newVerifier(testDir);
         verifier.addCliArgument("verify");
         verifier.execute();
         verifier.verifyErrorFreeLog();
@@ -147,7 +147,7 @@ public void testValidLocalParentVersionRange() throws Exception {
         // log, parent resolution failed. For this test, this really just tests the project on disk getting tested
         // is not corrupt. It's expected to find the local parent and not fall back to remote resolution. If it
         // falls back to remote resolution, this just catches the test project to be broken.
-        final List<String> lines = verifier.loadFile(new File(testDir, "log.txt"), false);
+        final List<String> lines = verifier.loadFile(testDir.resolve("log.txt"));
         assertFalse(indexOf(lines, ".*Failed to build parent project.*") >= 0, "Unexpected error message found.");
     }
 
@@ -156,16 +156,16 @@ public void testInvalidLocalParentVersionRange() throws Exception {
         // failingMavenVersions("[3.3.0,3.3.9)");
         // Fallback to remote resolution not tested here. Remote parent expected to not be available anywhere.
         Verifier verifier = null;
-        File testDir = extractResources("/mng-2199-parent-version-range/invalid-local/child");
+        Path testDir = extractResources("mng-2199-parent-version-range/invalid-local/child");
 
         try {
-            verifier = newVerifier(testDir.getAbsolutePath());
+            verifier = newVerifier(testDir);
             verifier.addCliArgument("verify");
             verifier.execute();
             fail("Expected 'VerificationException' not thrown.");
         } catch (final VerificationException e) {
             assertNotNull(verifier);
-            final List<String> lines = verifier.loadFile(new File(testDir, "log.txt"), false);
+            final List<String> lines = verifier.loadFile(testDir.resolve("log.txt"));
             int msg =
                     indexOf(lines, ".*Non-resolvable parent POM org.apache.maven.its.mng2199:local-parent:\\[2,3\\].*");
             assertTrue(msg >= 0, "Expected error message not found.");
@@ -176,9 +176,9 @@ public void testInvalidLocalParentVersionRange() throws Exception {
     public void testInvalidLocalParentVersionRangeFallingBackToRemote() throws Exception {
         // failingMavenVersions("[3.3.9]");
         Verifier verifier = null;
-        File testDir = extractResources("/mng-2199-parent-version-range/local-fallback-to-remote/child");
+        Path testDir = extractResources("mng-2199-parent-version-range/local-fallback-to-remote/child");
 
-        verifier = newVerifier(testDir.getAbsolutePath());
+        verifier = newVerifier(testDir);
         verifier.addCliArgument("verify");
         verifier.execute();
         verifier.verifyErrorFreeLog();
@@ -188,7 +188,7 @@ public void testInvalidLocalParentVersionRangeFallingBackToRemote() throws Excep
         // log, parent resolution failed. For this test, local parent resolution falls back to remote parent
         // resolution with a version range in use. If the warning message is in the logs, that remote parent
         // resolution failed unexpectedly.
-        final List<String> lines = verifier.loadFile(new File(testDir, "log.txt"), false);
+        final List<String> lines = verifier.loadFile(testDir.resolve("log.txt"));
         assertFalse(indexOf(lines, ".*Failed to build parent project.*") >= 0, "Unexpected error message found.");
     }
 
@@ -196,16 +196,16 @@ public void testInvalidLocalParentVersionRangeFallingBackToRemote() throws Excep
     public void testValidLocalParentVersionRangeInvalidVersionExpression() throws Exception {
         // failingMavenVersions("(,3.5.0-alpha-0)");
         Verifier verifier = null;
-        File testDir = extractResources("/mng-2199-parent-version-range/expression-local/child");
+        Path testDir = extractResources("mng-2199-parent-version-range/expression-local/child");
 
         try {
-            verifier = newVerifier(testDir.getAbsolutePath());
+            verifier = newVerifier(testDir);
             verifier.addCliArgument("verify");
             verifier.execute();
             fail("Expected 'VerificationException' not thrown.");
         } catch (final VerificationException e) {
             assertNotNull(verifier);
-            final List<String> lines = verifier.loadFile(new File(testDir, "log.txt"), false);
+            final List<String> lines = verifier.loadFile(testDir.resolve("log.txt"));
             int msg = indexOf(lines, ".*Version must be a constant.*org.apache.maven.its.mng2199:expression.*");
             assertTrue(msg >= 0, "Expected error message not found.");
         }
@@ -215,16 +215,16 @@ public void testValidLocalParentVersionRangeInvalidVersionExpression() throws Ex
     public void testValidLocalParentVersionRangeInvalidVersionInheritance() throws Exception {
         // failingMavenVersions("(,3.5.0-alpha-0)");
         Verifier verifier = null;
-        File testDir = extractResources("/mng-2199-parent-version-range/inherited-local/child");
+        Path testDir = extractResources("mng-2199-parent-version-range/inherited-local/child");
 
         try {
-            verifier = newVerifier(testDir.getAbsolutePath());
+            verifier = newVerifier(testDir);
             verifier.addCliArgument("verify");
             verifier.execute();
             fail("Expected 'VerificationException' not thrown.");
         } catch (final VerificationException e) {
             assertNotNull(verifier);
-            final List<String> lines = verifier.loadFile(new File(testDir, "log.txt"), false);
+            final List<String> lines = verifier.loadFile(testDir.resolve("log.txt"));
             int msg = indexOf(lines, ".*Version must be a constant.*org.apache.maven.its.mng2199:inherited.*");
             assertTrue(msg >= 0, "Expected error message not found.");
         }
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2201PluginConfigInterpolationTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2201PluginConfigInterpolationTest.java
index 78cadbca6c..139e02817d 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2201PluginConfigInterpolationTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2201PluginConfigInterpolationTest.java
@@ -18,9 +18,8 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 import java.util.Properties;
-
 import org.junit.jupiter.api.Test;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
@@ -39,8 +38,8 @@ public class MavenITmng2201PluginConfigInterpolationTest extends AbstractMavenIn
      */
     @Test
     public void testitMNG2201() throws Exception {
-        File testDir = extractResources("/mng-2201");
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Path testDir = extractResources("mng-2201");
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         verifier.addCliArgument("validate");
@@ -48,11 +47,11 @@ public void testitMNG2201() throws Exception {
         verifier.verifyErrorFreeLog();
 
         Properties props = verifier.loadProperties("target/config.properties");
-        ItUtils.assertCanonicalFileEquals(new File(testDir, "target"), new File(props.getProperty("stringParam")));
+        ItUtils.assertCanonicalFileEquals(testDir.resolve("target"), Path.of(props.getProperty("stringParam")));
         ItUtils.assertCanonicalFileEquals(
-                new File(testDir, "target"), new File(props.getProperty("propertiesParam.buildDir")));
+                testDir.resolve("target"), Path.of(props.getProperty("propertiesParam.buildDir")));
         ItUtils.assertCanonicalFileEquals(
-                new File(testDir, "target"), new File(props.getProperty("mapParam.buildDir")));
+                testDir.resolve("target"), Path.of(props.getProperty("mapParam.buildDir")));
         assertEquals("4.0.0", props.getProperty("domParam.children.modelVersion.0.value"));
         assertEquals("org.apache.maven.its.it0104", props.getProperty("domParam.children.groupId.0.value"));
         assertEquals("1.0-SNAPSHOT", props.getProperty("domParam.children.version.0.value"));
@@ -60,10 +59,10 @@ public void testitMNG2201() throws Exception {
         assertEquals("http://maven.apache.org", props.getProperty("domParam.children.url.0.value"));
         assertEquals("Apache", props.getProperty("domParam.children.organization.0.children.name.0.value"));
         ItUtils.assertCanonicalFileEquals(
-                new File(testDir, "target"),
-                new File(props.getProperty("domParam.children.build.0.children.directory.0.value")));
+                testDir.resolve("target"),
+                Path.of(props.getProperty("domParam.children.build.0.children.directory.0.value")));
         ItUtils.assertCanonicalFileEquals(
-                new File(testDir, "target/classes"),
-                new File(props.getProperty("domParam.children.build.0.children.outputDirectory.0.value")));
+                testDir.resolve("target/classes"),
+                Path.of(props.getProperty("domParam.children.build.0.children.outputDirectory.0.value")));
     }
 }
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2222OutputDirectoryReactorResolutionTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2222OutputDirectoryReactorResolutionTest.java
index 66836c68c2..9adf0a742e 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2222OutputDirectoryReactorResolutionTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2222OutputDirectoryReactorResolutionTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 import java.util.List;
 
 import org.junit.jupiter.api.Test;
@@ -41,9 +41,9 @@ public class MavenITmng2222OutputDirectoryReactorResolutionTest extends Abstract
      */
     @Test
     public void testit() throws Exception {
-        File testDir = extractResources("/mng-2222");
+        Path testDir = extractResources("mng-2222");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("mod-a/target");
         verifier.deleteDirectory("mod-b/target");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2228ComponentInjectionTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2228ComponentInjectionTest.java
index 3e24cc9745..47c7558ac0 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2228ComponentInjectionTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2228ComponentInjectionTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 import java.util.Properties;
 
 import org.junit.jupiter.api.Test;
@@ -41,8 +41,8 @@ public class MavenITmng2228ComponentInjectionTest extends AbstractMavenIntegrati
      */
     @Test
     public void testitMNG2228() throws Exception {
-        File testDir = extractResources("/mng-2228");
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Path testDir = extractResources("mng-2228");
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         verifier.deleteArtifacts("org.apache.maven.its.mng2228");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2234ActiveProfilesFromSettingsTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2234ActiveProfilesFromSettingsTest.java
index 18944f1e7b..bc99f27c00 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2234ActiveProfilesFromSettingsTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2234ActiveProfilesFromSettingsTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 
 import org.junit.jupiter.api.Test;
 
@@ -35,9 +35,9 @@ public class MavenITmng2234ActiveProfilesFromSettingsTest extends AbstractMavenI
      */
     @Test
     public void testitMNG2234() throws Exception {
-        File testDir = extractResources("/mng-2234");
+        Path testDir = extractResources("mng-2234");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
 
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2254PomEncodingTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2254PomEncodingTest.java
index c74184524d..af0b0d3d91 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2254PomEncodingTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2254PomEncodingTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 import java.util.Properties;
 
 import org.junit.jupiter.api.Test;
@@ -43,9 +43,9 @@ public class MavenITmng2254PomEncodingTest extends AbstractMavenIntegrationTestC
      */
     @Test
     public void testitMNG2254() throws Exception {
-        File testDir = extractResources("/mng-2254");
+        Path testDir = extractResources("mng-2254");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("utf-8/target");
         verifier.deleteDirectory("latin-1/target");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2276ProfileActivationBySettingsPropertyTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2276ProfileActivationBySettingsPropertyTest.java
index 4975c9527c..6b8ac984c4 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2276ProfileActivationBySettingsPropertyTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2276ProfileActivationBySettingsPropertyTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 import java.util.Properties;
 
 import org.junit.jupiter.api.Test;
@@ -39,9 +39,9 @@ public class MavenITmng2276ProfileActivationBySettingsPropertyTest extends Abstr
      */
     @Test
     public void testitActivation() throws Exception {
-        File testDir = extractResources("/mng-2276");
+        Path testDir = extractResources("mng-2276");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         verifier.addCliArgument("--settings");
@@ -63,9 +63,9 @@ public void testitActivation() throws Exception {
      */
     @Test
     public void testitCliWins() throws Exception {
-        File testDir = extractResources("/mng-2276");
+        Path testDir = extractResources("mng-2276");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         verifier.addCliArgument("--settings");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2277AggregatorAndResolutionPluginsTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2277AggregatorAndResolutionPluginsTest.java
index 88f29f58dd..aa74f2d007 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2277AggregatorAndResolutionPluginsTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2277AggregatorAndResolutionPluginsTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 
 import org.junit.jupiter.api.Test;
 
@@ -34,9 +34,9 @@ public class MavenITmng2277AggregatorAndResolutionPluginsTest extends AbstractMa
 
     @Test
     public void testitMNG2277() throws Exception {
-        File testDir = extractResources("/mng-2277");
+        Path testDir = extractResources("mng-2277");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteArtifacts("org.apache.maven.its.mng2277");
         verifier.addCliArgument("org.apache.maven.its.plugins:maven-it-plugin-all:aggregator-dependencies");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2305MultipleProxiesTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2305MultipleProxiesTest.java
index 05c488e1e7..51be7edd56 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2305MultipleProxiesTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2305MultipleProxiesTest.java
@@ -18,15 +18,13 @@
  */
 package org.apache.maven.it;
 
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-import java.io.File;
 import java.io.IOException;
 import java.io.PrintWriter;
+import java.nio.file.Path;
 import java.util.List;
 import java.util.Map;
-
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
 import org.eclipse.jetty.server.HttpConfiguration;
 import org.eclipse.jetty.server.HttpConnectionFactory;
 import org.eclipse.jetty.server.NetworkConnector;
@@ -57,16 +55,16 @@ public class MavenITmng2305MultipleProxiesTest extends AbstractMavenIntegrationT
      */
     @Test
     public void testit() throws Exception {
-        File testDir = extractResources("/mng-2305");
+        Path testDir = extractResources("mng-2305");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
 
         // NOTE: trust store cannot be reliably configured for the current JVM
         verifier.setForkJvm(true);
 
         // keytool -genkey -alias https.mngit -keypass key-passwd -keystore keystore -storepass store-passwd \
         //   -validity 4096 -dname "cn=https.mngit, ou=None, L=Seattle, ST=Washington, o=ExampleOrg, c=US" -keyalg RSA
-        String storePath = new File(testDir, "keystore").getAbsolutePath();
+        Path storePath = testDir.resolve("keystore");
         String storePwd = "store-passwd";
         String keyPwd = "key-passwd";
 
@@ -117,8 +115,8 @@ public void testit() throws Exception {
         assertTrue(cp.contains("https-0.1.jar"), cp.toString());
     }
 
-    private void addHttpsConnector(Server server, String keyStorePath, String keyStorePassword, String keyPassword) {
-        SslContextFactory sslContextFactory = new SslContextFactory(keyStorePath);
+    private void addHttpsConnector(Server server, Path keyStorePath, String keyStorePassword, String keyPassword) {
+        SslContextFactory sslContextFactory = new SslContextFactory(keyStorePath.toString());
         sslContextFactory.setKeyStorePassword(keyStorePassword);
         sslContextFactory.setKeyManagerPassword(keyPassword);
         HttpConfiguration httpConfiguration = new HttpConfiguration();
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2309ProfileInjectionOrderTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2309ProfileInjectionOrderTest.java
index dc20f40505..4e54ea8dee 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2309ProfileInjectionOrderTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2309ProfileInjectionOrderTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 import java.util.Properties;
 
 import org.junit.jupiter.api.Test;
@@ -40,9 +40,9 @@ public class MavenITmng2309ProfileInjectionOrderTest extends AbstractMavenIntegr
      */
     @Test
     public void testitMNG2309() throws Exception {
-        File testDir = extractResources("/mng-2309");
+        Path testDir = extractResources("mng-2309");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.addCliArgument("--settings");
         verifier.addCliArgument("settings.xml");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2318LocalParentResolutionTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2318LocalParentResolutionTest.java
index fee0b15ed6..7731ffae2f 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2318LocalParentResolutionTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2318LocalParentResolutionTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 
 import org.junit.jupiter.api.Test;
 
@@ -36,9 +36,9 @@ public class MavenITmng2318LocalParentResolutionTest extends AbstractMavenIntegr
      */
     @Test
     public void testitMNG2318() throws Exception {
-        File testDir = extractResources("/mng-2318");
+        Path testDir = extractResources("mng-2318");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.addCliArgument("validate");
         verifier.execute();
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2339BadProjectInterpolationTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2339BadProjectInterpolationTest.java
index c969599a32..659d0da82e 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2339BadProjectInterpolationTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2339BadProjectInterpolationTest.java
@@ -18,8 +18,8 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
-
+import java.nio.file.Files;
+import java.nio.file.Path;
 import org.junit.jupiter.api.Disabled;
 import org.junit.jupiter.api.Test;
 
@@ -34,11 +34,11 @@ public class MavenITmng2339BadProjectInterpolationTest extends AbstractMavenInte
 
     @Test
     public void testitMNG2339a() throws Exception {
-        File testDir = extractResources("/mng-2339/a");
+        Path testDir = extractResources("mng-2339/a");
 
         Verifier verifier;
 
-        verifier = newVerifier(testDir.getAbsolutePath());
+        verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
 
         verifier.addCliArgument("-Dversion=foo");
@@ -53,11 +53,11 @@ public void testitMNG2339a() throws Exception {
     @Disabled("Requires Maven version: (2.0.8,4.0.0-alpha-1)")
     public void testitMNG2339b() throws Exception {
         // requiresMavenVersion("(2.0.8,4.0.0-alpha-1)");
-        File testDir = extractResources("/mng-2339/b");
+        Path testDir = extractResources("mng-2339/b");
 
         Verifier verifier;
 
-        verifier = newVerifier(testDir.getAbsolutePath());
+        verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
 
@@ -66,12 +66,12 @@ public void testitMNG2339b() throws Exception {
         verifier.execute();
 
         assertTrue(
-                new File(testDir, "target/touch-1.txt").exists(),
+                Files.exists(testDir.resolve("target/touch-1.txt")),
                 "Touchfile using ${project.version} for ${version} does not exist.");
 
         verifier.verifyErrorFreeLog();
 
-        verifier = newVerifier(testDir.getAbsolutePath());
+        verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
 
@@ -83,7 +83,7 @@ public void testitMNG2339b() throws Exception {
         verifier.verifyErrorFreeLog();
 
         assertTrue(
-                new File(testDir, "target/touch-2.txt").exists(),
+                Files.exists(testDir.resolve("target/touch-2.txt")),
                 "Touchfile using CLI-specified ${version} does not exist.");
     }
 }
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2362DeployedPomEncodingTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2362DeployedPomEncodingTest.java
index 90dcf12f59..0a1414be09 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2362DeployedPomEncodingTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2362DeployedPomEncodingTest.java
@@ -18,10 +18,9 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
 import java.nio.charset.StandardCharsets;
 import java.nio.file.Files;
-
+import java.nio.file.Path;
 import org.junit.jupiter.api.Test;
 
 import static org.junit.jupiter.api.Assertions.assertTrue;
@@ -41,9 +40,9 @@ public class MavenITmng2362DeployedPomEncodingTest extends AbstractMavenIntegrat
      */
     @Test
     public void testit() throws Exception {
-        File testDir = extractResources("/mng-2362");
+        Path testDir = extractResources("mng-2362");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("utf-8/target");
         verifier.deleteDirectory("latin-1/target");
@@ -52,34 +51,34 @@ public void testit() throws Exception {
         verifier.execute();
         verifier.verifyErrorFreeLog();
 
-        File pomFile;
+        Path pomFile;
 
-        pomFile = new File(verifier.getArtifactPath("org.apache.maven.its.mng2362", "utf-8", "0.1", "pom"));
+        pomFile = verifier.getArtifactPath("org.apache.maven.its.mng2362", "utf-8", "0.1", "pom");
         assertPomUtf8(pomFile);
 
-        pomFile = new File(testDir, "utf-8/target/repo/org/apache/maven/its/mng2362/utf-8/0.1/utf-8-0.1.pom");
+        pomFile = testDir.resolve("utf-8/target/repo/org/apache/maven/its/mng2362/utf-8/0.1/utf-8-0.1.pom");
         assertPomUtf8(pomFile);
 
-        pomFile = new File(verifier.getArtifactPath("org.apache.maven.its.mng2362", "latin-1", "0.1", "pom"));
+        pomFile = verifier.getArtifactPath("org.apache.maven.its.mng2362", "latin-1", "0.1", "pom");
         assertPomLatin1(pomFile);
 
-        pomFile = new File(testDir, "latin-1/target/repo/org/apache/maven/its/mng2362/latin-1/0.1/latin-1-0.1.pom");
+        pomFile = testDir.resolve("latin-1/target/repo/org/apache/maven/its/mng2362/latin-1/0.1/latin-1-0.1.pom");
         assertPomLatin1(pomFile);
     }
 
-    private void assertPomUtf8(File pomFile) throws Exception {
-        String pom = Files.readString(pomFile.toPath());
+    private void assertPomUtf8(Path pomFile) throws Exception {
+        String pom = Files.readString(pomFile);
         String chars = "\u00DF\u0131\u03A3\u042F\u05D0\u20AC";
         assertPom(pomFile, pom, chars);
     }
 
-    private void assertPomLatin1(File pomFile) throws Exception {
-        String pom = Files.readString(pomFile.toPath(), StandardCharsets.ISO_8859_1);
+    private void assertPomLatin1(Path pomFile) throws Exception {
+        String pom = Files.readString(pomFile, StandardCharsets.ISO_8859_1);
         String chars = "\u00C4\u00D6\u00DC\u00E4\u00F6\u00FC\u00DF";
         assertPom(pomFile, pom, chars);
     }
 
-    private void assertPom(File pomFile, String pom, String chars) throws Exception {
+    private void assertPom(Path pomFile, String pom, String chars) throws Exception {
         String prefix = "TEST-CHARS: ";
         int pos = pom.indexOf(prefix);
         assertTrue(
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2363BasedirAwareFileActivatorTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2363BasedirAwareFileActivatorTest.java
index 8d75da7b83..e831eb250a 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2363BasedirAwareFileActivatorTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2363BasedirAwareFileActivatorTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 
 import org.junit.jupiter.api.Test;
 
@@ -37,9 +37,9 @@ public class MavenITmng2363BasedirAwareFileActivatorTest extends AbstractMavenIn
      */
     @Test
     public void testit() throws Exception {
-        File testDir = extractResources("/mng-2363");
+        Path testDir = extractResources("mng-2363");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         verifier.deleteDirectory("sub-a/target");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2387InactiveProxyTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2387InactiveProxyTest.java
index 2039efd8d0..315d3424db 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2387InactiveProxyTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2387InactiveProxyTest.java
@@ -18,10 +18,9 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
 import java.net.InetAddress;
+import java.nio.file.Path;
 import java.util.Map;
-
 import org.eclipse.jetty.server.Handler;
 import org.eclipse.jetty.server.NetworkConnector;
 import org.eclipse.jetty.server.Server;
@@ -47,14 +46,14 @@ public class MavenITmng2387InactiveProxyTest extends AbstractMavenIntegrationTes
 
     private int proxyPort;
 
-    private File testDir;
+    private Path testDir;
 
     @BeforeEach
     protected void setUp() throws Exception {
-        testDir = extractResources("/mng-2387");
+        testDir = extractResources("mng-2387");
 
         ResourceHandler resourceHandler = new ResourceHandler();
-        resourceHandler.setResourceBase(new File(testDir, "repo").getAbsolutePath());
+        resourceHandler.setResourceBase(testDir.resolve("repo").toAbsolutePath().toString());
 
         HandlerList handlers = new HandlerList();
         handlers.setHandlers(new Handler[] {resourceHandler, new DefaultHandler()});
@@ -69,7 +68,7 @@ protected void setUp() throws Exception {
         System.out.println("Bound server socket to the HTTP port " + port);
 
         resourceHandler = new ResourceHandler();
-        resourceHandler.setResourceBase(new File(testDir, "proxy").getAbsolutePath());
+        resourceHandler.setResourceBase(testDir.resolve("proxy").toAbsolutePath().toString());
 
         handlers = new HandlerList();
         handlers.setHandlers(new Handler[] {resourceHandler, new DefaultHandler()});
@@ -103,7 +102,7 @@ protected void tearDown() throws Exception {
      */
     @Test
     public void testit() throws Exception {
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
 
         Map<String, String> properties = verifier.newDefaultFilterMap();
         properties.put("@host@", InetAddress.getLoopbackAddress().getCanonicalHostName());
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2432PluginPrefixOrderTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2432PluginPrefixOrderTest.java
index bd9c9ac72f..9424ef602c 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2432PluginPrefixOrderTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2432PluginPrefixOrderTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 
 import org.junit.jupiter.api.Test;
 
@@ -38,9 +38,9 @@ public class MavenITmng2432PluginPrefixOrderTest extends AbstractMavenIntegratio
      */
     @Test
     public void testitMNG2432() throws Exception {
-        File testDir = extractResources("/mng-2432");
+        Path testDir = extractResources("mng-2432");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         verifier.deleteArtifacts("org.apache.maven.its.mng2432.pom");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2486TimestampedDependencyVersionInterpolationTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2486TimestampedDependencyVersionInterpolationTest.java
index 007d3ed4b0..546a6b93e9 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2486TimestampedDependencyVersionInterpolationTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2486TimestampedDependencyVersionInterpolationTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 import java.util.List;
 
 import org.junit.jupiter.api.Test;
@@ -41,11 +41,11 @@ public class MavenITmng2486TimestampedDependencyVersionInterpolationTest extends
      */
     @Test
     public void testit() throws Exception {
-        File testDir = extractResources("/mng-2486");
+        Path testDir = extractResources("mng-2486");
 
         Verifier verifier;
 
-        verifier = newVerifier(new File(testDir, "dep-a").getAbsolutePath());
+        verifier = newVerifier(testDir.resolve("dep-a"));
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         verifier.deleteArtifacts("org.apache.maven.its.mng2486");
@@ -53,21 +53,21 @@ public void testit() throws Exception {
         verifier.execute();
         verifier.verifyErrorFreeLog();
 
-        verifier = newVerifier(new File(testDir, "parent").getAbsolutePath());
+        verifier = newVerifier(testDir.resolve("parent"));
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         verifier.addCliArgument("validate");
         verifier.execute();
         verifier.verifyErrorFreeLog();
 
-        verifier = newVerifier(new File(testDir, "dep-b").getAbsolutePath());
+        verifier = newVerifier(testDir.resolve("dep-b"));
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         verifier.addCliArgument("validate");
         verifier.execute();
         verifier.verifyErrorFreeLog();
 
-        verifier = newVerifier(new File(testDir, "test").getAbsolutePath());
+        verifier = newVerifier(testDir.resolve("test"));
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         // enforce remote resolution
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2562Timestamp322Test.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2562Timestamp322Test.java
index e9702a4dfb..85110a75cb 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2562Timestamp322Test.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2562Timestamp322Test.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 import java.text.SimpleDateFormat;
 import java.util.Date;
 import java.util.Properties;
@@ -37,9 +37,9 @@ public class MavenITmng2562Timestamp322Test extends AbstractMavenIntegrationTest
 
     @Test
     public void testitDefaultFormat() throws Exception {
-        File testDir = extractResources("/mng-2562/default");
+        Path testDir = extractResources("mng-2562/default");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         verifier.addCliArgument("validate");
@@ -61,9 +61,9 @@ public void testitDefaultFormat() throws Exception {
 
     @Test
     public void testitCustomFormat() throws Exception {
-        File testDir = extractResources("/mng-2562/custom");
+        Path testDir = extractResources("mng-2562/custom");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         verifier.addCliArgument("validate");
@@ -81,9 +81,9 @@ public void testitCustomFormat() throws Exception {
 
     @Test
     public void testitSameValueAcrossModules() throws Exception {
-        File testDir = extractResources("/mng-2562/reactor");
+        Path testDir = extractResources("mng-2562/reactor");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         verifier.deleteDirectory("child-1/target");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2576MakeLikeReactorTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2576MakeLikeReactorTest.java
index f7ac12d3fe..606c941a36 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2576MakeLikeReactorTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2576MakeLikeReactorTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 
 import org.junit.jupiter.api.Test;
 
@@ -44,9 +44,9 @@ private void clean(Verifier verifier) throws Exception {
      */
     @Test
     public void testitMakeOnlyList() throws Exception {
-        File testDir = extractResources("/mng-2576");
+        Path testDir = extractResources("mng-2576");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         clean(verifier);
         verifier.addCliArgument("-pl");
@@ -70,9 +70,9 @@ public void testitMakeOnlyList() throws Exception {
      */
     @Test
     public void testitMakeUpstream() throws Exception {
-        File testDir = extractResources("/mng-2576");
+        Path testDir = extractResources("mng-2576");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         clean(verifier);
         verifier.addCliArgument("-pl");
@@ -97,9 +97,9 @@ public void testitMakeUpstream() throws Exception {
      */
     @Test
     public void testitMakeDownstream() throws Exception {
-        File testDir = extractResources("/mng-2576");
+        Path testDir = extractResources("mng-2576");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         clean(verifier);
         verifier.addCliArgument("-pl");
@@ -124,9 +124,9 @@ public void testitMakeDownstream() throws Exception {
      */
     @Test
     public void testitMakeBoth() throws Exception {
-        File testDir = extractResources("/mng-2576");
+        Path testDir = extractResources("mng-2576");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         clean(verifier);
         verifier.addCliArgument("-pl");
@@ -152,9 +152,9 @@ public void testitMakeBoth() throws Exception {
      */
     @Test
     public void testitMatchesByBasedir() throws Exception {
-        File testDir = extractResources("/mng-2576");
+        Path testDir = extractResources("mng-2576");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         clean(verifier);
         verifier.verifyFileNotPresent("sub-d/pom.xml");
@@ -182,9 +182,9 @@ public void testitMatchesByBasedirPlus() throws Exception {
         // as per MNG-5230
         // requiresMavenVersion("[3.2,)");
 
-        File testDir = extractResources("/mng-2576");
+        Path testDir = extractResources("mng-2576");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         clean(verifier);
         verifier.verifyFileNotPresent("sub-d/pom.xml");
@@ -208,9 +208,9 @@ public void testitMatchesByBasedirPlus() throws Exception {
      */
     @Test
     public void testitMatchesById() throws Exception {
-        File testDir = extractResources("/mng-2576");
+        Path testDir = extractResources("mng-2576");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         clean(verifier);
         verifier.addCliArgument("-pl");
@@ -237,9 +237,9 @@ public void testitMatchesByArtifactId() throws Exception {
         // as per MNG-4244
         // requiresMavenVersion("[3.0-alpha-3,)");
 
-        File testDir = extractResources("/mng-2576");
+        Path testDir = extractResources("mng-2576");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         clean(verifier);
         verifier.addCliArgument("-pl");
@@ -263,9 +263,9 @@ public void testitMatchesByArtifactId() throws Exception {
      */
     @Test
     public void testitResumeFrom() throws Exception {
-        File testDir = extractResources("/mng-2576");
+        Path testDir = extractResources("mng-2576");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         clean(verifier);
         verifier.addCliArgument("-rf");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2577SettingsXmlInterpolationTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2577SettingsXmlInterpolationTest.java
index cfd1b4260a..f6df341f1d 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2577SettingsXmlInterpolationTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2577SettingsXmlInterpolationTest.java
@@ -18,9 +18,8 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 import java.util.Properties;
-
 import org.junit.jupiter.api.Test;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
@@ -39,9 +38,9 @@ public class MavenITmng2577SettingsXmlInterpolationTest extends AbstractMavenInt
      */
     @Test
     public void testitEnvVars() throws Exception {
-        File testDir = extractResources("/mng-2577");
+        Path testDir = extractResources("mng-2577");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         verifier.addCliArgument("--settings");
@@ -65,9 +64,9 @@ public void testitEnvVars() throws Exception {
     public void testitSystemProps() throws Exception {
         // requiresMavenVersion("[3.0-alpha-1,)");
 
-        File testDir = extractResources("/mng-2577");
+        Path testDir = extractResources("mng-2577");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         verifier.addCliArgument("--settings");
@@ -80,6 +79,6 @@ public void testitSystemProps() throws Exception {
 
         Properties props = verifier.loadProperties("target/settings.properties");
         assertEquals("usr-prop-test", props.getProperty("settings.servers.0.username"));
-        assertEquals(File.separator, props.getProperty("settings.servers.0.password"));
+        assertEquals(java.io.File.separator, props.getProperty("settings.servers.0.password"));
     }
 }
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2591MergeInheritedPluginConfigTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2591MergeInheritedPluginConfigTest.java
index 040d53a55a..2401667e09 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2591MergeInheritedPluginConfigTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2591MergeInheritedPluginConfigTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 import java.util.Properties;
 
 import org.junit.jupiter.api.Test;
@@ -56,8 +56,8 @@ public void testitWithProfile() throws Exception {
     }
 
     private void testit(String project) throws Exception {
-        File testDir = extractResources("/mng-2591/" + project);
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Path testDir = extractResources("mng-2591/" + project);
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("subproject/target");
         verifier.addCliArgument("validate");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2605BogusProfileActivationTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2605BogusProfileActivationTest.java
index bcf8d6d130..e9355faf88 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2605BogusProfileActivationTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2605BogusProfileActivationTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 import java.util.Properties;
 
 import org.junit.jupiter.api.Test;
@@ -41,9 +41,9 @@ public class MavenITmng2605BogusProfileActivationTest extends AbstractMavenInteg
      */
     @Test
     public void testitMNG2605() throws Exception {
-        File testDir = extractResources("/mng-2605");
+        Path testDir = extractResources("mng-2605");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         verifier.addCliArgument("--settings");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2668UsePluginDependenciesForSortingTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2668UsePluginDependenciesForSortingTest.java
index b34c9c81d9..6b00fcf89e 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2668UsePluginDependenciesForSortingTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2668UsePluginDependenciesForSortingTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 
 import org.junit.jupiter.api.Test;
 
@@ -31,9 +31,9 @@ public class MavenITmng2668UsePluginDependenciesForSortingTest extends AbstractM
 
     @Test
     public void testitMNG2668() throws Exception {
-        File testDir = extractResources("/mng-2668");
+        Path testDir = extractResources("mng-2668");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteArtifacts("org.apache.maven.its.mng2668");
         verifier.addCliArgument("validate");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2690MojoLoadingErrorsTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2690MojoLoadingErrorsTest.java
index 4e9877a1e3..7058602e2f 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2690MojoLoadingErrorsTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2690MojoLoadingErrorsTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 import java.io.IOException;
 import java.util.List;
 import java.util.regex.Pattern;
@@ -44,16 +44,16 @@ class MavenITmng2690MojoLoadingErrorsTest extends AbstractMavenIntegrationTestCa
 
     @Test
     public void testNoClassDefFromMojoLoad() throws IOException, VerificationException {
-        File testDir = extractResources("/mng-2690/noclassdef-mojo");
+        Path testDir = extractResources("mng-2690/noclassdef-mojo");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
 
         verifier.addCliArgument("validate");
         VerificationException exception =
                 assertThrows(VerificationException.class, verifier::execute, "should throw an error during execution.");
 
-        List<String> lines = verifier.loadFile(new File(testDir, "log.txt"), false);
+        List<String> lines = verifier.loadFile(testDir.resolve("log.txt"));
 
         int msg = indexOf(lines, "(?i).*required class is missing.*");
         assertTrue(msg >= 0, "User-friendly message was not found in output.");
@@ -64,36 +64,36 @@ public void testNoClassDefFromMojoLoad() throws IOException, VerificationExcepti
 
     @Test
     public void testNoClassDefFromMojoConfiguration() throws IOException, VerificationException {
-        File testDir = extractResources("/mng-2690/noclassdef-param");
+        Path testDir = extractResources("mng-2690/noclassdef-param");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
 
         verifier.addCliArgument("validate");
         VerificationException exception =
                 assertThrows(VerificationException.class, verifier::execute, "should throw an error during execution.");
 
-        List<String> lines = verifier.loadFile(new File(testDir, "log.txt"), false);
+        List<String> lines = verifier.loadFile(testDir.resolve("log.txt"));
 
         int msg = indexOf(lines, "(?i).*required class (i|wa)s missing( during (mojo )?configuration)?.*");
         assertTrue(msg >= 0, "User-friendly message was not found in output.");
 
-        int cls = lines.get(msg).toString().replace('/', '.').indexOf("org.apache.commons.lang3.StringUtils");
+        int cls = lines.get(msg).replace('/', '.').indexOf("org.apache.commons.lang3.StringUtils");
         assertTrue(cls >= 0, "Missing class name was not found in output.");
     }
 
     @Test
     public void testMojoComponentLookupException() throws IOException, VerificationException {
-        File testDir = extractResources("/mng-2690/mojo-complookup");
+        Path testDir = extractResources("mng-2690/mojo-complookup");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
 
         verifier.addCliArgument("validate");
         VerificationException exception =
                 assertThrows(VerificationException.class, verifier::execute, "should throw an error during execution.");
 
-        List<String> lines = verifier.loadFile(new File(testDir, "log.txt"), false);
+        List<String> lines = verifier.loadFile(testDir.resolve("log.txt"));
 
         String compLookupMsg = "(?i).*unable to .* mojo 'mojo-component-lookup-exception' .* plugin "
                 + "'org\\.apache\\.maven\\.its\\.plugins:maven-it-plugin-error.*";
@@ -103,16 +103,16 @@ public void testMojoComponentLookupException() throws IOException, VerificationE
 
     @Test
     public void testMojoRequirementComponentLookupException() throws IOException, VerificationException {
-        File testDir = extractResources("/mng-2690/requirement-complookup");
+        Path testDir = extractResources("mng-2690/requirement-complookup");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
 
         verifier.addCliArgument("validate");
         VerificationException exception =
                 assertThrows(VerificationException.class, verifier::execute, "should throw an error during execution.");
 
-        List<String> lines = verifier.loadFile(new File(testDir, "log.txt"), false);
+        List<String> lines = verifier.loadFile(testDir.resolve("log.txt"));
 
         String compLookupMsg = "(?i).*unable to .* mojo 'requirement-component-lookup-exception' .* plugin "
                 + "'org\\.apache\\.maven\\.its\\.plugins:maven-it-plugin-error.*";
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2693SitePluginRealmTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2693SitePluginRealmTest.java
index a51335ec8f..78dc5ee71e 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2693SitePluginRealmTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2693SitePluginRealmTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 import java.util.Properties;
 
 import org.junit.jupiter.api.Test;
@@ -40,8 +40,8 @@ public class MavenITmng2693SitePluginRealmTest extends AbstractMavenIntegrationT
      */
     @Test
     public void testit() throws Exception {
-        File testDir = extractResources("/mng-2693");
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Path testDir = extractResources("mng-2693");
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         verifier.addCliArgument("pre-site");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2695OfflinePluginSnapshotsTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2695OfflinePluginSnapshotsTest.java
index 8b78fbaeb2..585dc6afdf 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2695OfflinePluginSnapshotsTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2695OfflinePluginSnapshotsTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 
 import org.junit.jupiter.api.Test;
 
@@ -39,11 +39,11 @@ public class MavenITmng2695OfflinePluginSnapshotsTest extends AbstractMavenInteg
      */
     @Test
     public void testitMNG2695() throws Exception {
-        File testDir = extractResources("/mng-2695");
+        Path testDir = extractResources("mng-2695");
         Verifier verifier;
 
         // phase 1: run build in online mode to fill local repo
-        verifier = newVerifier(testDir.getAbsolutePath());
+        verifier = newVerifier(testDir);
         verifier.deleteDirectory("target");
         verifier.deleteArtifacts("org.apache.maven.its.mng2695");
         verifier.setAutoclean(false);
@@ -58,7 +58,7 @@ public void testitMNG2695() throws Exception {
         verifier.verifyErrorFreeLog();
 
         // phase 2: run build in offline mode to check it still passes
-        verifier = newVerifier(testDir.getAbsolutePath());
+        verifier = newVerifier(testDir);
         verifier.deleteDirectory("target");
         verifier.setAutoclean(false);
         verifier.setLogFileName("log2.txt");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2720SiblingClasspathArtifactsTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2720SiblingClasspathArtifactsTest.java
index 7b91ee322f..c49772d982 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2720SiblingClasspathArtifactsTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2720SiblingClasspathArtifactsTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 import java.util.List;
 
 import org.junit.jupiter.api.Test;
@@ -43,9 +43,9 @@ public class MavenITmng2720SiblingClasspathArtifactsTest extends AbstractMavenIn
 
     @Test
     public void testIT() throws Exception {
-        File testDir = extractResources("/mng-2720");
+        Path testDir = extractResources("mng-2720");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         verifier.deleteDirectory("child2/target");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2738ProfileIdCollidesWithCliOptionTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2738ProfileIdCollidesWithCliOptionTest.java
index 9d54e61631..42541d1154 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2738ProfileIdCollidesWithCliOptionTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2738ProfileIdCollidesWithCliOptionTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 
 import org.junit.jupiter.api.Test;
 
@@ -37,9 +37,9 @@ public class MavenITmng2738ProfileIdCollidesWithCliOptionTest extends AbstractMa
      */
     @Test
     public void testit() throws Exception {
-        File testDir = extractResources("/mng-2738");
+        Path testDir = extractResources("mng-2738");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         verifier.addCliArgument("-Pe");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2739RequiredRepositoryElementsTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2739RequiredRepositoryElementsTest.java
index c5fa5804b0..fdf6f5995d 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2739RequiredRepositoryElementsTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2739RequiredRepositoryElementsTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 import java.util.List;
 
 import org.junit.jupiter.api.Test;
@@ -38,23 +38,23 @@ public class MavenITmng2739RequiredRepositoryElementsTest extends AbstractMavenI
 
     @Test
     public void testitMNG2739RepositoryId() throws Exception {
-        File testDir = extractResources("/mng-2739/repo-id");
+        Path testDir = extractResources("mng-2739/repo-id");
 
         Verifier verifier;
 
-        verifier = newVerifier(testDir.getAbsolutePath());
+        verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
 
         try {
             verifier.addCliArgument("validate");
             verifier.execute();
 
-            fail("POM should NOT validate: repository <id/> element is missing in: " + new File(testDir, "pom.xml"));
+            fail("POM should NOT validate: repository <id/> element is missing in: " + testDir.resolve("pom.xml"));
         } catch (VerificationException e) {
             // expected
         }
 
-        List<String> listing = verifier.loadFile(new File(testDir, "log.txt"), false);
+        List<String> listing = verifier.loadFile(testDir.resolve("log.txt"));
         boolean foundNpe = false;
         for (String line : listing) {
             if (line.contains("NullPointerException")) {
@@ -70,23 +70,23 @@ public void testitMNG2739RepositoryId() throws Exception {
     public void testitMNG2739RepositoryUrl() throws Exception {
         // The testdir is computed from the location of this
         // file.
-        File testDir = extractResources("/mng-2739/repo-url");
+        Path testDir = extractResources("mng-2739/repo-url");
 
         Verifier verifier;
 
-        verifier = newVerifier(testDir.getAbsolutePath());
+        verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
 
         try {
             verifier.addCliArgument("validate");
             verifier.execute();
 
-            fail("POM should NOT validate: repository <url/> element is missing in: " + new File(testDir, "pom.xml"));
+            fail("POM should NOT validate: repository <url/> element is missing in: " + testDir.resolve("pom.xml"));
         } catch (VerificationException e) {
             // expected
         }
 
-        List<String> listing = verifier.loadFile(new File(testDir, "log.txt"), false);
+        List<String> listing = verifier.loadFile(testDir.resolve("log.txt"));
         boolean foundNpe = false;
         for (String line : listing) {
             if (line.contains("NullPointerException")) {
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2741PluginMetadataResolutionErrorMessageTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2741PluginMetadataResolutionErrorMessageTest.java
index 9269ed0548..4bb0aa9560 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2741PluginMetadataResolutionErrorMessageTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2741PluginMetadataResolutionErrorMessageTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 import java.util.List;
 
 import org.junit.jupiter.api.Test;
@@ -53,9 +53,9 @@ public void testitVersion() throws Exception {
     }
 
     private void testit(String test, String goal) throws Exception {
-        File testDir = extractResources("/mng-2741");
+        Path testDir = extractResources("mng-2741");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.setLogFileName("log-" + test + ".txt");
         verifier.addCliArgument("--settings");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2744checksumVerificationTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2744checksumVerificationTest.java
index 5b49a87396..a1620ded67 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2744checksumVerificationTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2744checksumVerificationTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 
 import org.junit.jupiter.api.Test;
 
@@ -39,9 +39,9 @@ public class MavenITmng2744checksumVerificationTest extends AbstractMavenIntegra
      */
     @Test
     public void testitMNG2744() throws Exception {
-        File testDir = extractResources("/mng-2744");
+        Path testDir = extractResources("mng-2744");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteArtifacts("org.apache.maven.its.mng2744");
         verifier.filterFile("settings-template.xml", "settings.xml");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2749ExtensionAvailableToPluginTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2749ExtensionAvailableToPluginTest.java
index 08ffac899d..064c1edf45 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2749ExtensionAvailableToPluginTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2749ExtensionAvailableToPluginTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 import java.util.Properties;
 
 import org.junit.jupiter.api.Test;
@@ -41,8 +41,8 @@ public class MavenITmng2749ExtensionAvailableToPluginTest extends AbstractMavenI
      */
     @Test
     public void testitMNG2749() throws Exception {
-        File testDir = extractResources("/mng-2749");
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Path testDir = extractResources("mng-2749");
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         verifier.deleteArtifacts("org.apache.maven.its.mng2749");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2771PomExtensionComponentOverrideTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2771PomExtensionComponentOverrideTest.java
index 52e0215eff..179166481f 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2771PomExtensionComponentOverrideTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2771PomExtensionComponentOverrideTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 
 import org.junit.jupiter.api.Disabled;
 import org.junit.jupiter.api.Test;
@@ -39,20 +39,20 @@ public class MavenITmng2771PomExtensionComponentOverrideTest extends AbstractMav
      */
     @Test
     public void testitMNG2771() throws Exception {
-        File testDir = extractResources("/mng-2771/extension");
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Path testDir = extractResources("mng-2771/extension");
+        Verifier verifier = newVerifier(testDir);
         verifier.addCliArgument("install");
         verifier.execute();
         verifier.verifyErrorFreeLog();
 
-        testDir = extractResources("/mng-2771/plugin");
-        verifier = newVerifier(testDir.getAbsolutePath());
+        testDir = extractResources("mng-2771/plugin");
+        verifier = newVerifier(testDir);
         verifier.addCliArgument("install");
         verifier.execute();
         verifier.verifyErrorFreeLog();
 
-        testDir = extractResources("/mng-2771/project");
-        verifier = newVerifier(testDir.getAbsolutePath());
+        testDir = extractResources("mng-2771/project");
+        verifier = newVerifier(testDir);
         verifier.addCliArgument("verify");
         verifier.execute();
         verifier.verifyErrorFreeLog();
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2790LastUpdatedMetadataTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2790LastUpdatedMetadataTest.java
index 750d7014c0..380bf3bde0 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2790LastUpdatedMetadataTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2790LastUpdatedMetadataTest.java
@@ -18,12 +18,11 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
 import java.nio.file.Files;
+import java.nio.file.Path;
 import java.text.SimpleDateFormat;
 import java.util.Date;
 import java.util.TimeZone;
-
 import org.junit.jupiter.api.Test;
 
 import static org.junit.jupiter.api.Assertions.assertTrue;
@@ -43,24 +42,24 @@ public class MavenITmng2790LastUpdatedMetadataTest extends AbstractMavenIntegrat
      */
     @Test
     public void testitMNG2790() throws Exception {
-        File testDir = extractResources("/mng-2790");
+        Path testDir = extractResources("mng-2790");
 
         Date now = new Date();
 
         /*
          * Phase 1: Install initial snapshot into local repo.
          */
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.deleteArtifacts("org.apache.maven.its.mng2790");
         verifier.setAutoclean(false);
         verifier.addCliArgument("validate");
         verifier.execute();
         verifier.verifyErrorFreeLog();
 
-        File metadataArtifactVersionFile =
-                new File(verifier.getArtifactMetadataPath("org.apache.maven.its.mng2790", "project", "1.0-SNAPSHOT"));
-        File metadataArtifactFile =
-                new File(verifier.getArtifactMetadataPath("org.apache.maven.its.mng2790", "project"));
+        Path metadataArtifactVersionFile =
+                verifier.getArtifactMetadataPath("org.apache.maven.its.mng2790", "project", "1.0-SNAPSHOT");
+        Path metadataArtifactFile =
+                verifier.getArtifactMetadataPath("org.apache.maven.its.mng2790", "project");
 
         Date artifactVersionLastUpdated1 = getLastUpdated(metadataArtifactVersionFile);
         Date artifactLastUpdated1 = getLastUpdated(metadataArtifactFile);
@@ -79,7 +78,7 @@ public void testitMNG2790() throws Exception {
         /*
          * Phase 2: Re-install snapshot and check for proper timestamp update in local metadata.
          */
-        verifier = newVerifier(testDir.getAbsolutePath());
+        verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.addCliArgument("validate");
         verifier.execute();
@@ -96,8 +95,8 @@ public void testitMNG2790() throws Exception {
                 artifactLastUpdated2.after(artifactLastUpdated1), artifactLastUpdated1 + " < " + artifactLastUpdated2);
     }
 
-    private Date getLastUpdated(File metadataFile) throws Exception {
-        String xml = Files.readString(metadataFile.toPath());
+    private Date getLastUpdated(Path metadataFile) throws Exception {
+        String xml = Files.readString(metadataFile);
         String timestamp = xml.replaceAll("(?s)\\A.*<lastUpdated>\\s*([0-9]++)\\s*</lastUpdated>.*\\z", "$1");
         SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmss");
         format.setTimeZone(TimeZone.getTimeZone("UTC"));
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2820PomCommentsTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2820PomCommentsTest.java
index 3a106ea865..748051d731 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2820PomCommentsTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2820PomCommentsTest.java
@@ -18,9 +18,8 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
 import java.nio.file.Files;
-
+import java.nio.file.Path;
 import org.junit.jupiter.api.Test;
 
 import static org.junit.jupiter.api.Assertions.assertTrue;
@@ -39,9 +38,9 @@ public class MavenITmng2820PomCommentsTest extends AbstractMavenIntegrationTestC
      */
     @Test
     public void testit() throws Exception {
-        File testDir = extractResources("/mng-2820");
+        Path testDir = extractResources("mng-2820");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         verifier.deleteArtifacts("org.apache.maven.its.mng2820");
@@ -49,15 +48,15 @@ public void testit() throws Exception {
         verifier.execute();
         verifier.verifyErrorFreeLog();
 
-        File installed = new File(verifier.getArtifactPath("org.apache.maven.its.mng2820", "test", "0.1", "pom"));
+        Path installed = verifier.getArtifactPath("org.apache.maven.its.mng2820", "test", "0.1", "pom");
         assertPomComments(installed);
 
-        File deployed = new File(testDir, "target/repo/org/apache/maven/its/mng2820/test/0.1/test-0.1.pom");
+        Path deployed = testDir.resolve("target/repo/org/apache/maven/its/mng2820/test/0.1/test-0.1.pom");
         assertPomComments(deployed);
     }
 
-    private void assertPomComments(File pomFile) throws Exception {
-        String pom = Files.readString(pomFile.toPath());
+    private void assertPomComments(Path pomFile) throws Exception {
+        String pom = Files.readString(pomFile);
         assertPomComment(pom, "DOCUMENT-COMMENT-PRE-1");
         assertPomComment(pom, "DOCUMENT-COMMENT-PRE-2");
         assertPomComment(pom, "DOCUMENT-COMMENT-POST-1");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2831CustomArtifactHandlerAndCustomLifecycleTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2831CustomArtifactHandlerAndCustomLifecycleTest.java
index 08465c9898..a166640669 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2831CustomArtifactHandlerAndCustomLifecycleTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2831CustomArtifactHandlerAndCustomLifecycleTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 
 import org.junit.jupiter.api.Test;
 
@@ -36,9 +36,9 @@ public class MavenITmng2831CustomArtifactHandlerAndCustomLifecycleTest extends A
      */
     @Test
     public void testitMNG2831() throws Exception {
-        File testDir = extractResources("/mng-2831");
+        Path testDir = extractResources("mng-2831");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         verifier.addCliArgument("package");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2843PluginConfigPropertiesInjectionTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2843PluginConfigPropertiesInjectionTest.java
index 85e3d513eb..2590a2fc83 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2843PluginConfigPropertiesInjectionTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2843PluginConfigPropertiesInjectionTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 import java.util.Properties;
 
 import org.junit.jupiter.api.Test;
@@ -40,10 +40,10 @@ public class MavenITmng2843PluginConfigPropertiesInjectionTest extends AbstractM
      */
     @Test
     public void testitMNG2843() throws Exception {
-        File testDir = extractResources("/mng-2843");
+        Path testDir = extractResources("mng-2843");
 
         // First, build the test plugin
-        Verifier verifier = newVerifier(new File(testDir, "maven-it-plugin-uses-properties").getAbsolutePath());
+        Verifier verifier = newVerifier(testDir.resolve("maven-it-plugin-uses-properties"));
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         verifier.addCliArgument("install");
@@ -51,7 +51,7 @@ public void testitMNG2843() throws Exception {
         verifier.verifyErrorFreeLog();
 
         // Then, run the test project that uses the plugin
-        verifier = newVerifier(testDir.getAbsolutePath());
+        verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         verifier.addCliArgument("validate");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2848ProfileActivationByEnvironmentVariableTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2848ProfileActivationByEnvironmentVariableTest.java
index 92eaa9cbf4..df7e39b898 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2848ProfileActivationByEnvironmentVariableTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2848ProfileActivationByEnvironmentVariableTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 import java.util.Properties;
 
 import org.junit.jupiter.api.Test;
@@ -39,9 +39,9 @@ public class MavenITmng2848ProfileActivationByEnvironmentVariableTest extends Ab
      */
     @Test
     public void testit() throws Exception {
-        File testDir = extractResources("/mng-2848");
+        Path testDir = extractResources("mng-2848");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         verifier.setEnvironmentVariable("MNG2848", "GO");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2861RelocationsAndRangesTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2861RelocationsAndRangesTest.java
index 9f29b82f65..6322416ab6 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2861RelocationsAndRangesTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2861RelocationsAndRangesTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 import java.util.List;
 
 import org.junit.jupiter.api.Test;
@@ -34,9 +34,9 @@ public class MavenITmng2861RelocationsAndRangesTest extends AbstractMavenIntegra
 
     @Test
     public void testitMNG2861() throws Exception {
-        File testDir = extractResources("/mng-2861");
+        Path testDir = extractResources("mng-2861");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("A/target");
         verifier.deleteArtifacts("org.apache.maven.its.mng2861");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2865MirrorWildcardTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2865MirrorWildcardTest.java
index 4ba91391db..5851db3f54 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2865MirrorWildcardTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2865MirrorWildcardTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 
 import org.junit.jupiter.api.Test;
 
@@ -71,9 +71,9 @@ public void testitCentralRepo() throws Exception {
     }
 
     private void testit(String project) throws Exception {
-        File testDir = extractResources("/mng-2865");
+        Path testDir = extractResources("mng-2865");
 
-        Verifier verifier = newVerifier(new File(testDir, project).getAbsolutePath());
+        Verifier verifier = newVerifier(testDir.resolve(project));
         verifier.setAutoclean(false);
         verifier.deleteArtifacts("org.apache.maven.its.mng2865");
         verifier.filterFile("settings-template.xml", "settings.xml");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2871PrePackageSubartifactResolutionTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2871PrePackageSubartifactResolutionTest.java
index 8acb3710e3..16c59534d0 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2871PrePackageSubartifactResolutionTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2871PrePackageSubartifactResolutionTest.java
@@ -18,9 +18,8 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 import java.util.List;
-
 import org.junit.jupiter.api.Test;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
@@ -41,8 +40,8 @@ public class MavenITmng2871PrePackageSubartifactResolutionTest extends AbstractM
      */
     @Test
     public void testitMNG2871() throws Exception {
-        File testDir = extractResources("/mng-2871");
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Path testDir = extractResources("mng-2871");
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("consumer/target");
         verifier.addCliArgument("compile");
@@ -51,8 +50,8 @@ public void testitMNG2871() throws Exception {
 
         List<String> compileClassPath = verifier.loadLines("consumer/target/compile.txt");
         assertEquals(2, compileClassPath.size());
-        assertEquals(
-                new File(testDir, "ejbs/target/classes").getCanonicalFile(),
-                new File(compileClassPath.get(1).toString()).getCanonicalFile());
+        ItUtils.assertCanonicalFileEquals(
+                testDir.resolve("ejbs/target/classes"),
+                Path.of(compileClassPath.get(1)));
     }
 }
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2892HideCorePlexusUtilsTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2892HideCorePlexusUtilsTest.java
index 2edaca1c37..438ba31a17 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2892HideCorePlexusUtilsTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2892HideCorePlexusUtilsTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 import java.util.Properties;
 
 import org.junit.jupiter.api.Test;
@@ -41,8 +41,8 @@ public class MavenITmng2892HideCorePlexusUtilsTest extends AbstractMavenIntegrat
      */
     @Test
     public void testitMNG2892() throws Exception {
-        File testDir = extractResources("/mng-2892");
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Path testDir = extractResources("mng-2892");
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         verifier.deleteArtifact("org.codehaus.plexus", "plexus-utils", "0.1-mng2892", "jar");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2921ActiveAttachedArtifactsTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2921ActiveAttachedArtifactsTest.java
index d102b3ba41..862978fb48 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2921ActiveAttachedArtifactsTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2921ActiveAttachedArtifactsTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 import java.util.Collection;
 
 import org.junit.jupiter.api.Test;
@@ -48,8 +48,8 @@ public class MavenITmng2921ActiveAttachedArtifactsTest extends AbstractMavenInte
      */
     @Test
     public void testitMNG2921() throws Exception {
-        File testDir = extractResources("/mng-2921");
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Path testDir = extractResources("mng-2921");
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("consumer/target");
         verifier.addCliArgument("validate");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2926PluginPrefixOrderTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2926PluginPrefixOrderTest.java
index 0ad36d9f51..d79efccef4 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2926PluginPrefixOrderTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2926PluginPrefixOrderTest.java
@@ -18,8 +18,8 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
-
+import java.nio.file.Files;
+import java.nio.file.Path;
 import org.junit.jupiter.api.Test;
 
 /**
@@ -38,27 +38,23 @@ public class MavenITmng2926PluginPrefixOrderTest extends AbstractMavenIntegratio
      */
     @Test
     public void testitMNG2926() throws Exception {
-        File testDir = extractResources("/mng-2926");
+        Path testDir = extractResources("mng-2926");
 
         Verifier verifier;
 
-        verifier = newVerifier(testDir.getAbsolutePath());
+        verifier = newVerifier(testDir);
         verifier.deleteArtifacts("org.apache.maven.its.mng2926");
         verifier.deleteArtifacts("org.apache.maven.plugins", "mng-2926", "0.1");
         verifier.deleteArtifacts("org.apache.maven.plugins", "mng-2926", "0.1");
-        new File(verifier.getArtifactMetadataPath(
-                        "org.apache.maven.plugins", null, null, "maven-metadata-maven-core-it.xml"))
-                .delete();
-        new File(verifier.getArtifactMetadataPath("org.apache.maven.plugins", null, null, "resolver-status.properties"))
-                .delete();
+        Files.deleteIfExists(verifier.getArtifactMetadataPath(
+                        "org.apache.maven.plugins", null, null, "maven-metadata-maven-core-it.xml"));
+        Files.deleteIfExists(verifier.getArtifactMetadataPath("org.apache.maven.plugins", null, null, "resolver-status.properties"));
         verifier.deleteArtifacts("org.codehaus.mojo", "mng-2926", "0.1");
         verifier.deleteArtifacts("org.codehaus.mojo", "mng-2926", "0.1");
-        new File(verifier.getArtifactMetadataPath("org.codehaus.mojo", null, null, "maven-metadata-maven-core-it.xml"))
-                .delete();
-        new File(verifier.getArtifactMetadataPath("org.codehaus.mojo", null, null, "resolver-status.properties"))
-                .delete();
+        Files.deleteIfExists(verifier.getArtifactMetadataPath("org.codehaus.mojo", null, null, "maven-metadata-maven-core-it.xml"));
+        Files.deleteIfExists(verifier.getArtifactMetadataPath("org.codehaus.mojo", null, null, "resolver-status.properties"));
 
-        verifier = newVerifier(testDir.getAbsolutePath());
+        verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.setLogFileName("log-default.txt");
         verifier.filterFile("settings-default-template.xml", "settings-default.xml");
@@ -68,7 +64,7 @@ public void testitMNG2926() throws Exception {
         verifier.execute();
         verifier.verifyErrorFreeLog();
 
-        verifier = newVerifier(testDir.getAbsolutePath());
+        verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.setLogFileName("log-custom.txt");
         verifier.filterFile("settings-custom-template.xml", "settings-custom.xml");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2972OverridePluginDependencyTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2972OverridePluginDependencyTest.java
index 22cf74ef91..f20fe2dd1b 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2972OverridePluginDependencyTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2972OverridePluginDependencyTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 import java.util.Properties;
 
 import org.junit.jupiter.api.Test;
@@ -42,8 +42,8 @@ public class MavenITmng2972OverridePluginDependencyTest extends AbstractMavenInt
      */
     @Test
     public void testitLifecycleInvocation() throws Exception {
-        File testDir = extractResources("/mng-2972/test1");
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Path testDir = extractResources("mng-2972/test1");
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         verifier.deleteArtifact("org.apache.maven.its.plugins.class-loader", "dep-b", "0.2-mng-2972", "jar");
@@ -72,8 +72,8 @@ public void testitLifecycleInvocation() throws Exception {
      */
     @Test
     public void testitCommandLineInvocation() throws Exception {
-        File testDir = extractResources("/mng-2972/test2");
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Path testDir = extractResources("mng-2972/test2");
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         verifier.deleteArtifact("org.apache.maven.its.plugins.class-loader", "dep-b", "9.9-MNG-2972", "jar");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2994SnapshotRangeRepositoryTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2994SnapshotRangeRepositoryTest.java
index 0a9f1c5ff4..200e6c821f 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2994SnapshotRangeRepositoryTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng2994SnapshotRangeRepositoryTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 
 import org.junit.jupiter.api.Test;
 
@@ -37,8 +37,8 @@ public class MavenITmng2994SnapshotRangeRepositoryTest extends AbstractMavenInte
      */
     @Test
     public void testit() throws Exception {
-        File testDir = extractResources("/mng-2994");
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Path testDir = extractResources("mng-2994");
+        Verifier verifier = newVerifier(testDir);
         verifier.deleteArtifacts("org.apache.maven.its.mng2994");
         verifier.filterFile("settings-template.xml", "settings.xml");
         verifier.addCliArgument("--settings");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3004ReactorFailureBehaviorMultithreadedTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3004ReactorFailureBehaviorMultithreadedTest.java
index ae7e2cfb5d..ee7f63d91b 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3004ReactorFailureBehaviorMultithreadedTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3004ReactorFailureBehaviorMultithreadedTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 
 import org.junit.jupiter.api.Test;
 
@@ -38,9 +38,9 @@ public class MavenITmng3004ReactorFailureBehaviorMultithreadedTest extends Abstr
      */
     @Test
     public void testitFailFastSingleThread() throws Exception {
-        File testDir = extractResources("/mng-0095");
+        Path testDir = extractResources("mng-0095");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         verifier.deleteDirectory("subproject1/target");
@@ -72,9 +72,9 @@ public void testitFailFastSingleThread() throws Exception {
      */
     @Test
     public void testitFailNeverSingleThread() throws Exception {
-        File testDir = extractResources("/mng-0095");
+        Path testDir = extractResources("mng-0095");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         verifier.deleteDirectory("subproject1/target");
@@ -101,9 +101,9 @@ public void testitFailNeverSingleThread() throws Exception {
      */
     @Test
     public void testitFailAtEndSingleThread() throws Exception {
-        File testDir = extractResources("/mng-0095");
+        Path testDir = extractResources("mng-0095");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         verifier.deleteDirectory("subproject1/target");
@@ -134,9 +134,9 @@ public void testitFailAtEndSingleThread() throws Exception {
      */
     @Test
     public void testitFailNeverTwoThreads() throws Exception {
-        File testDir = extractResources("/mng-0095");
+        Path testDir = extractResources("mng-0095");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         verifier.deleteDirectory("subproject1/target");
@@ -163,9 +163,9 @@ public void testitFailNeverTwoThreads() throws Exception {
      */
     @Test
     public void testitFailAtEndTwoThreads() throws Exception {
-        File testDir = extractResources("/mng-0095");
+        Path testDir = extractResources("mng-0095");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         verifier.deleteDirectory("subproject1/target");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3012CoreClassImportTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3012CoreClassImportTest.java
index ec6c227e21..baade5d833 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3012CoreClassImportTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3012CoreClassImportTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 import java.util.Properties;
 
 import org.junit.jupiter.api.Test;
@@ -41,8 +41,8 @@ public class MavenITmng3012CoreClassImportTest extends AbstractMavenIntegrationT
      */
     @Test
     public void testitMNG3012() throws Exception {
-        File testDir = extractResources("/mng-3012");
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Path testDir = extractResources("mng-3012");
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         verifier.deleteArtifact("org.codehaus.plexus", "plexus-utils", "0.1-mng3012", "jar");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3023ReactorDependencyResolutionTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3023ReactorDependencyResolutionTest.java
index 059ea8a604..65803b0cf7 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3023ReactorDependencyResolutionTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3023ReactorDependencyResolutionTest.java
@@ -18,9 +18,9 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Files;
+import java.nio.file.Path;
 import java.util.List;
-
 import org.junit.jupiter.api.Test;
 
 import static org.junit.jupiter.api.Assertions.assertFalse;
@@ -49,10 +49,10 @@ public class MavenITmng3023ReactorDependencyResolutionTest extends AbstractMaven
      */
     @Test
     public void testitMNG3023A() throws Exception {
-        File testDir = extractResources("/mng-3023");
+        Path testDir = extractResources("mng-3023");
 
         // First pass. Make sure the dependency cannot be resolved.
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.setLogFileName("log-a.txt");
 
@@ -78,13 +78,13 @@ public void testitMNG3023A() throws Exception {
      */
     @Test
     public void testitMNG3023B() throws Exception {
-        File testDir = extractResources("/mng-3023");
+        Path testDir = extractResources("mng-3023");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.setLogFileName("log-b.txt");
         // The IT doesn't actually run the compiler but merely mimics its effect, i.e. the creation of the output dir
-        new File(testDir, "dependency/dependency-classes").mkdirs();
+        Files.createDirectories(testDir.resolve("dependency/dependency-classes"));
         verifier.deleteDirectory("consumer/target");
         verifier.deleteArtifacts("org.apache.maven.its.mng3023");
 
@@ -113,9 +113,9 @@ public void testitMNG3023B() throws Exception {
      */
     @Test
     public void testitMNG3023C() throws Exception {
-        File testDir = extractResources("/mng-3023");
+        Path testDir = extractResources("mng-3023");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
 
         verifier.deleteArtifacts("org.apache.maven.its.mng3023");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3038TransitiveDepManVersionTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3038TransitiveDepManVersionTest.java
index f3461fab5f..03c4b4263c 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3038TransitiveDepManVersionTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3038TransitiveDepManVersionTest.java
@@ -18,9 +18,8 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
 import java.io.IOException;
-
+import java.nio.file.Path;
 import org.junit.jupiter.api.Disabled;
 import org.junit.jupiter.api.Test;
 
@@ -35,14 +34,14 @@ public class MavenITmng3038TransitiveDepManVersionTest extends AbstractMavenInte
 
     @Test
     public void testitMNG3038() throws Exception {
-        File testDirBase = extractResources("/mng-3038");
+        Path testDirBase = extractResources("mng-3038");
 
         compileDDep(testDirBase, "D1", "1.0");
         compileDDep(testDirBase, "D2", "2.0");
 
-        File testProjectDir = new File(testDirBase, "test-project");
+        Path testProjectDir = testDirBase.resolve("test-project");
 
-        Verifier verifier = newVerifier(testProjectDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testProjectDir);
         verifier.deleteArtifact("org.apache.maven.its.it0121", "A", "1.0", "pom");
         verifier.deleteArtifact("org.apache.maven.its.it0121", "A", "1.0", "jar");
         verifier.deleteArtifact("org.apache.maven.its.it0121", "B", "1.0", "pom");
@@ -54,10 +53,10 @@ public void testitMNG3038() throws Exception {
         verifier.verifyErrorFreeLog();
     }
 
-    private void compileDDep(File testDirBase, String projectDDepDir, String version)
+    private void compileDDep(Path testDirBase, String projectDDepDir, String version)
             throws VerificationException, IOException {
-        File testOtherDepDir = new File(testDirBase, "test-other-deps/" + projectDDepDir);
-        Verifier verifierOtherDep = newVerifier(testOtherDepDir.getAbsolutePath());
+        Path testOtherDepDir = testDirBase.resolve("test-other-deps/" + projectDDepDir);
+        Verifier verifierOtherDep = newVerifier(testOtherDepDir);
         verifierOtherDep.deleteArtifact("org.apache.maven.its.it0121", "D", version, "jar");
         verifierOtherDep.deleteArtifact("org.apache.maven.its.it0121", "D", version, "pom");
         verifierOtherDep.addCliArgument("install");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3043BestEffortReactorResolutionTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3043BestEffortReactorResolutionTest.java
index 89fafabcc9..90d5202b8c 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3043BestEffortReactorResolutionTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3043BestEffortReactorResolutionTest.java
@@ -18,10 +18,9 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
 import java.nio.file.Files;
+import java.nio.file.Path;
 import java.util.List;
-
 import org.junit.jupiter.api.Test;
 
 import static org.junit.jupiter.api.Assertions.assertFalse;
@@ -43,10 +42,10 @@ public class MavenITmng3043BestEffortReactorResolutionTest extends AbstractMaven
      */
     @Test
     public void testitTestPhase() throws Exception {
-        File testDir = extractResources("/mng-3043");
-        Files.createDirectories(testDir.toPath().resolve(".mvn"));
+        Path testDir = extractResources("mng-3043");
+        Files.createDirectories(testDir.resolve(".mvn"));
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         verifier.deleteDirectory("consumer-a/target");
@@ -100,9 +99,9 @@ public void testitTestPhase() throws Exception {
      */
     @Test
     public void testitPackagePhase() throws Exception {
-        File testDir = extractResources("/mng-3043");
+        Path testDir = extractResources("mng-3043");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         verifier.deleteDirectory("consumer-a/target");
@@ -160,9 +159,9 @@ public void testitPackagePhase() throws Exception {
     public void testitPackagePhasesSlitted() throws Exception {
         // requiresMavenVersion("[4.0.0-beta-4,)");
 
-        File testDir = extractResources("/mng-3043");
+        Path testDir = extractResources("mng-3043");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         verifier.deleteDirectory("consumer-a/target");
@@ -174,7 +173,7 @@ public void testitPackagePhasesSlitted() throws Exception {
         verifier.execute();
         verifier.verifyErrorFreeLog();
 
-        verifier = newVerifier(testDir.getAbsolutePath());
+        verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.setLogFileName("log-package-pre.txt");
         verifier.addCliArguments("--projects", ":consumer-a,:consumer-b,:consumer-c", "package");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3052DepRepoAggregationTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3052DepRepoAggregationTest.java
index 46a6da3e34..d2f87c6a3c 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3052DepRepoAggregationTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3052DepRepoAggregationTest.java
@@ -18,8 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
-
+import java.nio.file.Path;
 import org.junit.jupiter.api.Test;
 
 /**
@@ -42,9 +41,9 @@ public class MavenITmng3052DepRepoAggregationTest extends AbstractMavenIntegrati
 
     @Test
     public void testitMNG3052() throws Exception {
-        File testDir = extractResources("/mng-3052").getCanonicalFile();
+        Path testDir = extractResources("mng-3052");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         verifier.deleteArtifacts("org.apache.maven.its.mng3052");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3092SnapshotsExcludedFromVersionRangeTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3092SnapshotsExcludedFromVersionRangeTest.java
index 22c1ec0a4d..f9a56c5ec2 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3092SnapshotsExcludedFromVersionRangeTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3092SnapshotsExcludedFromVersionRangeTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 import java.util.List;
 
 import org.junit.jupiter.api.Disabled;
@@ -43,9 +43,9 @@ public class MavenITmng3092SnapshotsExcludedFromVersionRangeTest extends Abstrac
      */
     @Test
     public void testit() throws Exception {
-        File testDir = extractResources("/mng-3092");
+        Path testDir = extractResources("mng-3092");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         verifier.deleteArtifacts("org.apache.maven.its.mng3092");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3099SettingsProfilesWithNoPomTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3099SettingsProfilesWithNoPomTest.java
index dc92fd0bf9..49281cf87b 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3099SettingsProfilesWithNoPomTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3099SettingsProfilesWithNoPomTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 
 import org.junit.jupiter.api.Test;
 
@@ -40,9 +40,9 @@ public class MavenITmng3099SettingsProfilesWithNoPomTest extends AbstractMavenIn
      */
     @Test
     public void testit() throws Exception {
-        File testDir = extractResources("/mng-3099");
+        Path testDir = extractResources("mng-3099");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         verifier.deleteArtifacts("org.apache.maven.its.mng3099");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3118TestClassPathOrderTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3118TestClassPathOrderTest.java
index 0422985e7e..243de59501 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3118TestClassPathOrderTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3118TestClassPathOrderTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 import java.util.Arrays;
 import java.util.List;
 
@@ -40,9 +40,9 @@ public class MavenITmng3118TestClassPathOrderTest extends AbstractMavenIntegrati
      */
     @Test
     public void testit() throws Exception {
-        File testDir = extractResources("/mng-3118");
+        Path testDir = extractResources("mng-3118");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         verifier.addCliArgument("validate");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3122ActiveProfilesNoDuplicatesTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3122ActiveProfilesNoDuplicatesTest.java
index fc1355388f..098dd7a378 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3122ActiveProfilesNoDuplicatesTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3122ActiveProfilesNoDuplicatesTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 import java.util.Properties;
 
 import org.junit.jupiter.api.Test;
@@ -41,9 +41,9 @@ public class MavenITmng3122ActiveProfilesNoDuplicatesTest extends AbstractMavenI
      */
     @Test
     public void testitMNG3122() throws Exception {
-        File testDir = extractResources("/mng-3122");
+        Path testDir = extractResources("mng-3122");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         verifier.addCliArgument("--settings");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3133UrlNormalizationNotBeforeInterpolationTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3133UrlNormalizationNotBeforeInterpolationTest.java
index 3866555677..ac4a8f1b56 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3133UrlNormalizationNotBeforeInterpolationTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3133UrlNormalizationNotBeforeInterpolationTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 import java.util.Properties;
 
 import org.junit.jupiter.api.Test;
@@ -41,9 +41,9 @@ public class MavenITmng3133UrlNormalizationNotBeforeInterpolationTest extends Ab
      */
     @Test
     public void testit() throws Exception {
-        File testDir = extractResources("/mng-3133");
+        Path testDir = extractResources("mng-3133");
 
-        Verifier verifier = newVerifier(new File(testDir, "child").getAbsolutePath());
+        Verifier verifier = newVerifier(testDir.resolve("child"));
         verifier.setAutoclean(false);
         verifier.addCliArgument("validate");
         verifier.execute();
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3139UseCachedMetadataOfBlacklistedRepoTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3139UseCachedMetadataOfBlacklistedRepoTest.java
index eef02a5a04..2947e723e8 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3139UseCachedMetadataOfBlacklistedRepoTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3139UseCachedMetadataOfBlacklistedRepoTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 import java.util.Collections;
 
 import org.junit.jupiter.api.Test;
@@ -38,11 +38,11 @@ public class MavenITmng3139UseCachedMetadataOfBlacklistedRepoTest extends Abstra
      */
     @Test
     public void testitMNG3139() throws Exception {
-        File testDir = extractResources("/mng-3139");
+        Path testDir = extractResources("mng-3139");
 
         // phase 1: get the metadata into the local repo
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteArtifacts("org.apache.maven.its.mng3139");
 
@@ -56,7 +56,7 @@ public void testitMNG3139() throws Exception {
 
         // phase 2: trigger blacklisting of repo (by invalid URL) and check previously downloaded metadata is still used
 
-        verifier = newVerifier(testDir.getAbsolutePath());
+        verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
 
         verifier.filterFile(
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3183LoggingToFileTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3183LoggingToFileTest.java
index 342d6e6734..d80e127af8 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3183LoggingToFileTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3183LoggingToFileTest.java
@@ -18,11 +18,11 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Files;
+import java.nio.file.Path;
 import java.util.Collections;
 import java.util.Iterator;
 import java.util.List;
-
 import org.junit.jupiter.api.Disabled;
 import org.junit.jupiter.api.Test;
 
@@ -35,7 +35,7 @@
  * @author Benjamin Bentmann
  */
 @Disabled(
-        "This IT is testing -l, while new Verifier uses same switch to make Maven4 log to file; in short, if that is broken, all ITs would be broken as well")
+        "This IT is testing -l, while newVerifier uses same switch to make Maven4 log to file; in short, if that is broken, all ITs would be broken as well")
 public class MavenITmng3183LoggingToFileTest extends AbstractMavenIntegrationTestCase {
 
     /**
@@ -45,15 +45,15 @@ public class MavenITmng3183LoggingToFileTest extends AbstractMavenIntegrationTes
      */
     @Test
     public void testit() throws Exception {
-        File testDir = extractResources("/mng-3183");
+        Path testDir = extractResources("mng-3183");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.addCliArgument("-l");
         verifier.addCliArgument("maven.log");
         verifier.setLogFileName("stdout.txt");
-        new File(testDir, "stdout.txt").delete();
-        new File(testDir, "maven.log").delete();
+        Files.deleteIfExists(testDir.resolve("stdout.txt"));
+        Files.deleteIfExists(testDir.resolve("maven.log"));
         verifier.addCliArgument("validate");
         verifier.execute();
         verifier.verifyErrorFreeLog();
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3203DefaultLifecycleExecIdTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3203DefaultLifecycleExecIdTest.java
index 7ed4cae945..f00c34549e 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3203DefaultLifecycleExecIdTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3203DefaultLifecycleExecIdTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 
 import org.junit.jupiter.api.Test;
 
@@ -37,9 +37,9 @@ public class MavenITmng3203DefaultLifecycleExecIdTest extends AbstractMavenInteg
     public void testitMNG3203() throws Exception {
         // The testdir is computed from the location of this
         // file.
-        File testDir = extractResources("/mng-3203");
+        Path testDir = extractResources("mng-3203");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
 
         verifier.addCliArgument("compile");
         verifier.execute();
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3208ProfileAwareReactorSortingTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3208ProfileAwareReactorSortingTest.java
index 59749230a5..b42bcbc432 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3208ProfileAwareReactorSortingTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3208ProfileAwareReactorSortingTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 import java.util.Arrays;
 import java.util.List;
 
@@ -40,9 +40,9 @@ public class MavenITmng3208ProfileAwareReactorSortingTest extends AbstractMavenI
      */
     @Test
     public void testit() throws Exception {
-        File testDir = extractResources("/mng-3208");
+        Path testDir = extractResources("mng-3208");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         verifier.addCliArgument("-Pmng3208");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3217InterPluginDependencyTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3217InterPluginDependencyTest.java
index f01f6ab75e..a521abc01a 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3217InterPluginDependencyTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3217InterPluginDependencyTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 
 import org.junit.jupiter.api.Test;
 
@@ -38,9 +38,9 @@ public class MavenITmng3217InterPluginDependencyTest extends AbstractMavenIntegr
      */
     @Test
     public void testitMNG3217() throws Exception {
-        File testDir = extractResources("/mng-3217");
+        Path testDir = extractResources("mng-3217");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("sub-1/target");
         verifier.deleteDirectory("sub-2/target");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3220ImportScopeTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3220ImportScopeTest.java
index 5ff459f9bb..266f9ebc82 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3220ImportScopeTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3220ImportScopeTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 import java.util.List;
 
 import org.junit.jupiter.api.Test;
@@ -34,11 +34,11 @@ public class MavenITmng3220ImportScopeTest extends AbstractMavenIntegrationTestC
 
     @Test
     public void testitMNG3220a() throws Exception {
-        File testDir = extractResources("/mng-3220");
+        Path testDir = extractResources("mng-3220");
 
-        testDir = new File(testDir, "imported-pom-depMgmt");
+        testDir = testDir.resolve("imported-pom-depMgmt");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         verifier.deleteArtifacts("org.apache.maven.its.mng3220");
@@ -52,11 +52,11 @@ public void testitMNG3220a() throws Exception {
 
     @Test
     public void testitMNG3220b() throws Exception {
-        File testDir = extractResources("/mng-3220");
+        Path testDir = extractResources("mng-3220");
 
-        testDir = new File(testDir, "depMgmt-pom-module-notImported");
+        testDir = testDir.resolve("depMgmt-pom-module-notImported");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         verifier.deleteArtifacts("org.apache.maven.its.mng3220");
@@ -73,7 +73,7 @@ public void testitMNG3220b() throws Exception {
             // expected
         }
 
-        List<String> lines = verifier.loadFile(new File(testDir, "log.txt"), false);
+        List<String> lines = verifier.loadFile(testDir.resolve("log.txt"));
 
         boolean found = false;
         for (String line : lines) {
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3259DepsDroppedInMultiModuleBuildTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3259DepsDroppedInMultiModuleBuildTest.java
index 75422bc424..72bfef4762 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3259DepsDroppedInMultiModuleBuildTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3259DepsDroppedInMultiModuleBuildTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 
 import org.junit.jupiter.api.Test;
 
@@ -36,18 +36,18 @@ public class MavenITmng3259DepsDroppedInMultiModuleBuildTest extends AbstractMav
 
     @Test
     public void testitMNG3259() throws Exception {
-        File testDir = extractResources("/mng-3259");
+        Path testDir = extractResources("mng-3259");
 
         Verifier verifier;
 
-        verifier = newVerifier(new File(testDir, "parent").getAbsolutePath());
+        verifier = newVerifier(testDir.resolve("parent"));
 
         verifier.addCliArgument("install");
         verifier.execute();
 
         verifier.verifyErrorFreeLog();
 
-        verifier = newVerifier(testDir.getAbsolutePath());
+        verifier = newVerifier(testDir);
 
         verifier.addCliArgument("install");
         verifier.execute();
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3268MultipleHyphenPCommandLineTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3268MultipleHyphenPCommandLineTest.java
index 6bab98fae0..847cd5ed72 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3268MultipleHyphenPCommandLineTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3268MultipleHyphenPCommandLineTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 
 import org.junit.jupiter.api.Test;
 
@@ -31,11 +31,11 @@ public class MavenITmng3268MultipleHyphenPCommandLineTest extends AbstractMavenI
 
     @Test
     public void testMultipleProfileParams() throws Exception {
-        File testDir = extractResources("/mng-3268");
+        Path testDir = extractResources("mng-3268");
 
         Verifier verifier;
 
-        verifier = newVerifier(testDir.getAbsolutePath());
+        verifier = newVerifier(testDir);
 
         verifier.addCliArgument("-Pprofile1,profile2");
         verifier.addCliArgument("-Pprofile3");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3284UsingCachedPluginsTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3284UsingCachedPluginsTest.java
index 97e72dd4b3..de12724df0 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3284UsingCachedPluginsTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3284UsingCachedPluginsTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 
 import org.junit.jupiter.api.Test;
 
@@ -36,7 +36,7 @@ public class MavenITmng3284UsingCachedPluginsTest extends AbstractMavenIntegrati
      */
     @Test
     public void testitMNG3284() throws Exception {
-        File testDir = extractResources("/mng-3284");
+        Path testDir = extractResources("mng-3284");
 
         /*
          * Phase 1: Ensure both plugin versions are already in the local repo. This is a crucial prerequisite for the
@@ -44,7 +44,7 @@ public void testitMNG3284() throws Exception {
          * reloading of the plugin container by the DefaultPluginManager in Maven 2.x, thereby hiding the bug we want
          * to expose here.
          */
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteArtifacts("org.apache.maven.its.mng3284");
         verifier.filterFile("settings-template.xml", "settings.xml");
@@ -57,7 +57,7 @@ public void testitMNG3284() throws Exception {
         /*
          * Phase 2: Now that the plugin versions have been downloaded to the local repo, run the actual test.
          */
-        verifier = newVerifier(testDir.getAbsolutePath());
+        verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("mod-a/target");
         verifier.deleteDirectory("mod-b/target");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3288SystemScopeDirTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3288SystemScopeDirTest.java
index 5f35b62a34..4e1f93492d 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3288SystemScopeDirTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3288SystemScopeDirTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 
 import org.junit.jupiter.api.Test;
 
@@ -38,9 +38,9 @@ public class MavenITmng3288SystemScopeDirTest extends AbstractMavenIntegrationTe
      */
     @Test
     public void testitMNG3288() throws Exception {
-        File testDir = extractResources("/mng-3288");
+        Path testDir = extractResources("mng-3288");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.addCliArgument("validate");
         assertThrows(
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3297DependenciesNotLeakedToMojoTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3297DependenciesNotLeakedToMojoTest.java
index dc318d94af..670b449e1f 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3297DependenciesNotLeakedToMojoTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3297DependenciesNotLeakedToMojoTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 import java.util.List;
 import java.util.Properties;
 
@@ -41,9 +41,9 @@ public class MavenITmng3297DependenciesNotLeakedToMojoTest extends AbstractMaven
      */
     @Test
     public void testit() throws Exception {
-        File testDir = extractResources("/mng-3297");
+        Path testDir = extractResources("mng-3297");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         verifier.addCliArgument("initialize");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3314OfflineSnapshotsTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3314OfflineSnapshotsTest.java
index e361757f3c..e8c87b5681 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3314OfflineSnapshotsTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3314OfflineSnapshotsTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 
 import org.junit.jupiter.api.Test;
 
@@ -39,10 +39,10 @@ public class MavenITmng3314OfflineSnapshotsTest extends AbstractMavenIntegration
      */
     @Test
     public void testitMNG3314() throws Exception {
-        File testDir = extractResources("/mng-3314");
+        Path testDir = extractResources("mng-3314");
 
         // phase 1: run build in online mode to fill local repo
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.deleteArtifacts("org.apache.maven.its.mng3314");
         verifier.setLogFileName("log1.txt");
         verifier.filterFile("settings-template.xml", "settings.xml");
@@ -54,7 +54,7 @@ public void testitMNG3314() throws Exception {
         verifier.verifyErrorFreeLog();
 
         // phase 2: run build in offline mode to check it still passes
-        verifier = newVerifier(testDir.getAbsolutePath());
+        verifier = newVerifier(testDir);
         verifier.setLogFileName("log2.txt");
         verifier.addCliArgument("-o");
         verifier.addCliArgument("--settings");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3331ModulePathNormalizationTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3331ModulePathNormalizationTest.java
index 5ca73b9e79..eec1986c39 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3331ModulePathNormalizationTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3331ModulePathNormalizationTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 
 import org.junit.jupiter.api.Test;
 
@@ -33,11 +33,11 @@ public class MavenITmng3331ModulePathNormalizationTest extends AbstractMavenInte
     @Test
     public void testitMNG3331a() throws Exception {
         // testMNG3331ModuleWithSpaces
-        File testDir = extractResources("/mng-3331/with-spaces");
+        Path testDir = extractResources("mng-3331/with-spaces");
 
         Verifier verifier;
 
-        verifier = newVerifier(testDir.getAbsolutePath());
+        verifier = newVerifier(testDir);
 
         verifier.addCliArgument("initialize");
         verifier.execute();
@@ -57,11 +57,11 @@ public void testitMNG3331a() throws Exception {
     @Test
     public void testitMNG3331b() throws Exception {
         // testMNG3331ModuleWithRelativeParentDirRef
-        File testDir = extractResources("/mng-3331/with-relative-parentDir-ref");
+        Path testDir = extractResources("mng-3331/with-relative-parentDir-ref");
 
         Verifier verifier;
 
-        verifier = newVerifier(new File(testDir, "parent").getAbsolutePath());
+        verifier = newVerifier(testDir.resolve("parent"));
 
         verifier.addCliArgument("initialize");
         verifier.execute();
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3355TranslatedPathInterpolationTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3355TranslatedPathInterpolationTest.java
index cdab4746cf..0d78276bd7 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3355TranslatedPathInterpolationTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3355TranslatedPathInterpolationTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 
 import org.junit.jupiter.api.Test;
 
@@ -33,11 +33,11 @@ public class MavenITmng3355TranslatedPathInterpolationTest extends AbstractMaven
 
     @Test
     public void testitMNG3355() throws Exception {
-        File testDir = extractResources("/mng-3355");
+        Path testDir = extractResources("mng-3355");
 
         Verifier verifier;
 
-        verifier = newVerifier(testDir.getAbsolutePath());
+        verifier = newVerifier(testDir);
 
         verifier.addCliArgument("-Dversion=foo");
         verifier.addCliArgument("validate");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3372DirectInvocationOfPluginsTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3372DirectInvocationOfPluginsTest.java
index 456370e344..686e257d47 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3372DirectInvocationOfPluginsTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3372DirectInvocationOfPluginsTest.java
@@ -18,8 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
-
+import java.nio.file.Path;
 import org.junit.jupiter.api.Test;
 
 /**
@@ -33,12 +32,12 @@ public class MavenITmng3372DirectInvocationOfPluginsTest extends AbstractMavenIn
     public void testitMNG3372() throws Exception {
         // The testdir is computed from the location of this
         // file.
-        File testBaseDir = extractResources("/mng-3372/direct-using-prefix");
-        File plugin = new File(testBaseDir, "plugin");
-        File project = new File(testBaseDir, "project");
-        File settingsFile = new File(testBaseDir, "settings.xml");
+        Path testBaseDir = extractResources("mng-3372/direct-using-prefix");
+        Path plugin = testBaseDir.resolve("plugin");
+        Path project = testBaseDir.resolve("project");
+        Path settingsFile = testBaseDir.resolve("settings.xml");
 
-        Verifier verifier = newVerifier(plugin.getAbsolutePath());
+        Verifier verifier = newVerifier(plugin);
 
         verifier.deleteArtifacts("org.apache.maven.its.mng3372");
 
@@ -47,10 +46,10 @@ public void testitMNG3372() throws Exception {
         verifier.addCliArguments("clean", "install");
         verifier.execute();
 
-        verifier = newVerifier(project.getAbsolutePath());
+        verifier = newVerifier(project);
 
         verifier.addCliArgument("-s");
-        verifier.addCliArgument("\"" + settingsFile.getAbsolutePath() + "\"");
+        verifier.addCliArgument("\"" + settingsFile + "\"");
 
         verifier.addCliArgument("mng3372:test");
         verifier.execute();
@@ -62,9 +61,9 @@ public void testitMNG3372() throws Exception {
     public void testDependencyTreeInvocation() throws Exception {
         // The testdir is computed from the location of this
         // file.
-        File testBaseDir = extractResources("/mng-3372/dependency-tree");
+        Path testBaseDir = extractResources("mng-3372/dependency-tree");
 
-        Verifier verifier = newVerifier(testBaseDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testBaseDir);
 
         verifier.addCliArgument("-U");
 
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3379ParallelArtifactDownloadsTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3379ParallelArtifactDownloadsTest.java
index 0e497900a5..354b5482f3 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3379ParallelArtifactDownloadsTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3379ParallelArtifactDownloadsTest.java
@@ -18,8 +18,8 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
-
+import java.nio.file.Files;
+import java.nio.file.Path;
 import org.junit.jupiter.api.Test;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
@@ -41,9 +41,9 @@ public class MavenITmng3379ParallelArtifactDownloadsTest extends AbstractMavenIn
      */
     @Test
     public void testitMNG3379() throws Exception {
-        File testDir = extractResources("/mng-3379");
+        Path testDir = extractResources("mng-3379");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteArtifacts("org.apache.maven.its.mng3379.a");
         verifier.deleteArtifacts("org.apache.maven.its.mng3379.b");
@@ -105,20 +105,20 @@ public void testitMNG3379() throws Exception {
     private void assertArtifact(
             Verifier verifier, String gid, String aid, String ver, String cls, String ext, String sha1)
             throws Exception {
-        File file = new File(verifier.getArtifactPath(gid, aid, ver, ext, cls));
-        assertTrue(file.isFile(), file.getAbsolutePath());
+        Path file = verifier.getArtifactPath(gid, aid, ver, ext, cls);
+        assertTrue(Files.isRegularFile(file), file.toString());
         assertEquals(sha1, ItUtils.calcHash(file, "SHA-1"));
     }
 
     private void assertMetadata(Verifier verifier, String gid, String aid, String ver, String sha1) throws Exception {
-        File file = new File(verifier.getArtifactMetadataPath(gid, aid, ver, "maven-metadata.xml", "maven-core-it"));
-        assertTrue(file.isFile(), file.getAbsolutePath());
+        Path file = verifier.getArtifactMetadataPath(gid, aid, ver, "maven-metadata.xml", "maven-core-it");
+        assertTrue(Files.isRegularFile(file), file.toString());
         assertEquals(sha1, ItUtils.calcHash(file, "SHA-1"));
     }
 
     private void assertMetadata(Verifier verifier, String gid, String aid, String sha1) throws Exception {
-        File file = new File(verifier.getArtifactMetadataPath(gid, aid, null, "maven-metadata.xml", "maven-core-it"));
-        assertTrue(file.isFile(), file.getAbsolutePath());
+        Path file = verifier.getArtifactMetadataPath(gid, aid, null, "maven-metadata.xml", "maven-core-it");
+        assertTrue(Files.isRegularFile(file), file.toString());
         assertEquals(sha1, ItUtils.calcHash(file, "SHA-1"));
     }
 }
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3380ManagedRelocatedTransdepsTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3380ManagedRelocatedTransdepsTest.java
index 67b1214533..15d51b96d2 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3380ManagedRelocatedTransdepsTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3380ManagedRelocatedTransdepsTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 import java.util.List;
 
 import org.junit.jupiter.api.Test;
@@ -46,9 +46,9 @@ public class MavenITmng3380ManagedRelocatedTransdepsTest extends AbstractMavenIn
      */
     @Test
     public void testitMNG3380() throws Exception {
-        File testDir = extractResources("/mng-3380");
+        Path testDir = extractResources("mng-3380");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         verifier.deleteArtifacts("org.apache.maven.its.mng3380");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3394POMPluginVersionDominanceTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3394POMPluginVersionDominanceTest.java
index 5f3c5e8cfd..ed25c71843 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3394POMPluginVersionDominanceTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3394POMPluginVersionDominanceTest.java
@@ -18,8 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
-
+import java.nio.file.Path;
 import org.junit.jupiter.api.Test;
 
 /**
@@ -34,14 +33,14 @@
  */
 public class MavenITmng3394POMPluginVersionDominanceTest extends AbstractMavenIntegrationTestCase {
 
-    private static final String BASEDIR_PREFIX = "/mng-3394/";
+    private static final String PROJECT_PATH = "mng-3394/";
 
     @Test
     public void testitMNG3394a() throws Exception {
         // testShouldUsePluginVersionFromPluginMgmtForLifecycleMojoWhenNotInBuildPlugins
-        File testDir = extractResources(BASEDIR_PREFIX + "lifecycleMojoVersionInPluginMgmt");
+        Path testDir = extractResources(PROJECT_PATH + "lifecycleMojoVersionInPluginMgmt");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         verifier.addCliArgument("process-resources");
@@ -54,9 +53,9 @@ public void testitMNG3394a() throws Exception {
     @Test
     public void testitMNG3394b() throws Exception {
         // testShouldPreferPluginVersionFromBuildPluginsOverThatInPluginMgmt
-        File testDir = extractResources(BASEDIR_PREFIX + "preferBuildPluginOverPluginMgmt");
+        Path testDir = extractResources(PROJECT_PATH + "preferBuildPluginOverPluginMgmt");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
 
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3396DependencyManagementForOverConstrainedRangesTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3396DependencyManagementForOverConstrainedRangesTest.java
index 6f617c5630..3d62be758c 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3396DependencyManagementForOverConstrainedRangesTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3396DependencyManagementForOverConstrainedRangesTest.java
@@ -18,8 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
-
+import java.nio.file.Path;
 import org.junit.jupiter.api.Test;
 
 /**
@@ -34,10 +33,10 @@ public class MavenITmng3396DependencyManagementForOverConstrainedRangesTest exte
 
     @Test
     public void testitMNG3396() throws Exception {
-        String baseDir = "/mng-3396";
-        File testDir = extractResources(baseDir + "/dependencies");
+        String baseDir = "mng-3396";
+        Path testDir = extractResources(baseDir + "/dependencies");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.deleteArtifact(GROUP_ID, "A", "1.0", "pom");
         verifier.deleteArtifact(GROUP_ID, "A", "1.0", "jar");
         verifier.deleteArtifact(GROUP_ID, "B", "1.0", "pom");
@@ -48,7 +47,7 @@ public void testitMNG3396() throws Exception {
 
         testDir = extractResources(baseDir + "/plugin");
 
-        verifier = newVerifier(testDir.getAbsolutePath());
+        verifier = newVerifier(testDir);
         verifier.deleteArtifact(GROUP_ID, "A", "1.0", "pom");
         verifier.deleteArtifact(GROUP_ID, "A", "1.0", "jar");
         verifier.deleteArtifact(GROUP_ID, "A", "3.0", "pom");
@@ -61,7 +60,7 @@ public void testitMNG3396() throws Exception {
 
         testDir = extractResources(baseDir + "/pluginuser");
 
-        verifier = newVerifier(testDir.getAbsolutePath());
+        verifier = newVerifier(testDir);
         verifier.deleteArtifact(GROUP_ID, "pluginuser", "1.0", "pom");
         verifier.deleteArtifact(GROUP_ID, "pluginuser", "1.0", "jar");
         verifier.addCliArgument("install");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3401CLIDefaultExecIdTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3401CLIDefaultExecIdTest.java
index 378b72b57d..3604f4c59d 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3401CLIDefaultExecIdTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3401CLIDefaultExecIdTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 import java.util.Properties;
 
 import org.junit.jupiter.api.Test;
@@ -56,9 +56,9 @@ public void testitWithPluginManagement() throws Exception {
     }
 
     private void testit(String project) throws Exception {
-        File testDir = extractResources("/mng-3401/" + project);
+        Path testDir = extractResources("mng-3401/" + project);
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         verifier.addCliArgument("org.apache.maven.its.plugins:maven-it-plugin-configuration:2.1-SNAPSHOT:config");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3415JunkRepositoryMetadataTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3415JunkRepositoryMetadataTest.java
index df9fb321bf..ba869846a6 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3415JunkRepositoryMetadataTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3415JunkRepositoryMetadataTest.java
@@ -18,17 +18,15 @@
  */
 package org.apache.maven.it;
 
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-import java.io.File;
 import java.io.IOException;
 import java.nio.file.Files;
+import java.nio.file.Path;
 import java.nio.file.StandardCopyOption;
 import java.util.Deque;
 import java.util.Map;
 import java.util.concurrent.ConcurrentLinkedDeque;
-
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
 import org.eclipse.jetty.server.Handler;
 import org.eclipse.jetty.server.NetworkConnector;
 import org.eclipse.jetty.server.Request;
@@ -45,7 +43,7 @@
  * @since 2.0.8
  */
 public class MavenITmng3415JunkRepositoryMetadataTest extends AbstractMavenIntegrationTestCase {
-    private static final String RESOURCE_BASE = "/mng-3415";
+    private static final String RESOURCE_BASE = "mng-3415";
 
     public MavenITmng3415JunkRepositoryMetadataTest() {
         // we're going to control the test execution according to the maven version present within each test method.
@@ -83,11 +81,11 @@ public MavenITmng3415JunkRepositoryMetadataTest() {
     public void testitTransferFailed() throws Exception {
         String methodName = getMethodName();
 
-        File testDir = extractResources(RESOURCE_BASE);
+        Path testDir = extractResources(RESOURCE_BASE);
 
         Verifier verifier;
 
-        verifier = newVerifier(testDir.getAbsolutePath());
+        verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteArtifacts("org.apache.maven.its.mng3415");
 
@@ -96,11 +94,11 @@ public void testitTransferFailed() throws Exception {
         Map<String, String> filterProps = verifier.newDefaultFilterMap();
         filterProps.put("@protocol@", "invalid");
         filterProps.put("@port@", "0");
-        File settings = verifier.filterFile("settings-template.xml", "settings-a.xml", filterProps);
+        Path settings = verifier.filterFile("settings-template.xml", "settings-a.xml", filterProps);
 
         verifier.addCliArgument("-X");
         verifier.addCliArgument("-s");
-        verifier.addCliArgument(settings.getName());
+        verifier.addCliArgument(settings.toString());
 
         verifier.setLogFileName("log-" + methodName + "-firstBuild.txt");
         verifier.addCliArgument("validate");
@@ -154,11 +152,11 @@ private String getMethodName() {
     public void testShouldNotRepeatedlyUpdateOnResourceNotFoundException() throws Exception {
         String methodName = getMethodName();
 
-        File testDir = extractResources(RESOURCE_BASE);
+        Path testDir = extractResources(RESOURCE_BASE);
 
         Verifier verifier;
 
-        verifier = newVerifier(testDir.getAbsolutePath());
+        verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteArtifacts("org.apache.maven.its.mng3415");
 
@@ -193,11 +191,11 @@ public void handle(
             Map<String, String> filterProps = verifier.newDefaultFilterMap();
             filterProps.put("@protocol@", "http");
             filterProps.put("@port@", Integer.toString(port));
-            File settings = verifier.filterFile("settings-template.xml", "settings-b.xml", filterProps);
+            Path settings = verifier.filterFile("settings-template.xml", "settings-b.xml", filterProps);
 
             verifier.addCliArgument("-X");
             verifier.addCliArgument("-s");
-            verifier.addCliArgument(settings.getName());
+            verifier.addCliArgument(settings.toString());
 
             setupDummyDependency(verifier, testDir, true);
 
@@ -213,8 +211,8 @@ public void handle(
 
             requestUris.clear();
 
-            File updateCheckFile = getUpdateCheckFile(verifier);
-            long firstLastMod = updateCheckFile.lastModified();
+            Path updateCheckFile = getUpdateCheckFile(verifier);
+            long firstLastMod = ItUtils.lastModified(updateCheckFile);
 
             setupDummyDependency(verifier, testDir, false);
 
@@ -230,7 +228,7 @@ public void handle(
 
             assertEquals(
                     firstLastMod,
-                    updateCheckFile.lastModified(),
+                    ItUtils.lastModified(updateCheckFile),
                     "Last-modified time should be unchanged from first build through second build for the file we use for"
                             + " updateInterval checks.");
         } finally {
@@ -240,14 +238,14 @@ public void handle(
     }
 
     private void assertMetadataMissing(Verifier verifier) {
-        File metadata = getMetadataFile(verifier);
+        Path metadata = getMetadataFile(verifier);
 
         assertFalse(
-                metadata.exists(),
-                "Metadata file should NOT be present in local repository: " + metadata.getAbsolutePath());
+                Files.exists(metadata),
+                "Metadata file should NOT be present in local repository: " + metadata);
     }
 
-    private void setupDummyDependency(Verifier verifier, File testDir, boolean resetUpdateInterval) throws IOException {
+    private void setupDummyDependency(Verifier verifier, Path testDir, boolean resetUpdateInterval) throws IOException {
         String gid = "org.apache.maven.its.mng3415";
         String aid = "missing";
         String version = "1.0-SNAPSHOT";
@@ -256,35 +254,35 @@ private void setupDummyDependency(Verifier verifier, File testDir, boolean reset
             verifier.deleteArtifacts(gid);
         }
 
-        File pom = new File(verifier.getArtifactPath(gid, aid, version, "pom"));
+        Path pom = verifier.getArtifactPath(gid, aid, version, "pom");
 
-        File pomSrc = new File(testDir, "dependency-pom.xml");
+        Path pomSrc = testDir.resolve("dependency-pom.xml");
 
         System.out.println("Copying dependency POM\nfrom: " + pomSrc + "\nto: " + pom);
-        Files.createDirectories(pom.toPath().getParent());
-        Files.copy(pomSrc.toPath(), pom.toPath(), StandardCopyOption.REPLACE_EXISTING);
+        Files.createDirectories(pom.getParent());
+        Files.copy(pomSrc, pom, StandardCopyOption.REPLACE_EXISTING);
     }
 
-    private File getMetadataFile(Verifier verifier) {
+    private Path getMetadataFile(Verifier verifier) {
         String gid = "org.apache.maven.its.mng3415";
         String aid = "missing";
         String version = "1.0-SNAPSHOT";
         String name = "maven-metadata-testing-repo.xml";
 
-        return new File(verifier.getArtifactMetadataPath(gid, aid, version, name));
+        return verifier.getArtifactMetadataPath(gid, aid, version, name);
     }
 
     /**
      * If the current maven version is < 3.0, we'll use the metadata file itself (old maven-artifact code)...
      * otherwise, use the new resolver-status.properties file (new artifact code).
      */
-    private File getUpdateCheckFile(Verifier verifier) {
+    private Path getUpdateCheckFile(Verifier verifier) {
         String gid = "org.apache.maven.its.mng3415";
         String aid = "missing";
         String version = "1.0-SNAPSHOT";
         // < 3.0 (including snapshots)
         String name = "resolver-status.properties";
 
-        return new File(verifier.getArtifactMetadataPath(gid, aid, version, name));
+        return verifier.getArtifactMetadataPath(gid, aid, version, name);
     }
 }
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3422ActiveComponentCollectionTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3422ActiveComponentCollectionTest.java
index d4c976c3da..d1ddb01a3a 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3422ActiveComponentCollectionTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3422ActiveComponentCollectionTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 import java.util.Properties;
 
 import org.junit.jupiter.api.Test;
@@ -40,9 +40,9 @@ public class MavenITmng3422ActiveComponentCollectionTest extends AbstractMavenIn
      */
     @Test
     public void testitMNG3422() throws Exception {
-        File testDir = extractResources("/mng-3422");
+        Path testDir = extractResources("mng-3422");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         verifier.addCliArgument("validate");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3441MetadataUpdatedFromDeploymentRepositoryTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3441MetadataUpdatedFromDeploymentRepositoryTest.java
index e135d445c3..bb06c16bd9 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3441MetadataUpdatedFromDeploymentRepositoryTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3441MetadataUpdatedFromDeploymentRepositoryTest.java
@@ -18,11 +18,10 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
-import java.io.FileReader;
 import java.io.IOException;
-
-import org.codehaus.plexus.util.FileUtils;
+import java.io.Reader;
+import java.nio.file.Files;
+import java.nio.file.Path;
 import org.codehaus.plexus.util.xml.Xpp3Dom;
 import org.codehaus.plexus.util.xml.Xpp3DomBuilder;
 import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
@@ -39,15 +38,15 @@ public class MavenITmng3441MetadataUpdatedFromDeploymentRepositoryTest extends A
 
     @Test
     public void testitMNG3441() throws Exception {
-        File testDir = extractResources("/mng-3441");
+        Path testDir = extractResources("mng-3441");
 
-        File targetRepository = new File(testDir, "target-repo");
-        FileUtils.deleteDirectory(targetRepository);
-        FileUtils.copyDirectoryStructure(new File(testDir, "deploy-repo"), targetRepository);
+        Path targetRepository = testDir.resolve("target-repo");
+        ItUtils.deleteDirectory(targetRepository);
+        ItUtils.copyDirectoryStructure(testDir.resolve("deploy-repo"), targetRepository);
 
         Verifier verifier;
 
-        verifier = newVerifier(testDir.getAbsolutePath());
+        verifier = newVerifier(testDir);
 
         verifier.addCliArgument("-s");
         verifier.addCliArgument("settings.xml");
@@ -56,8 +55,8 @@ public void testitMNG3441() throws Exception {
 
         verifier.verifyErrorFreeLog();
 
-        Xpp3Dom dom = readDom(new File(
-                targetRepository, "org/apache/maven/its/mng3441/test-artifact/1.0-SNAPSHOT/maven-metadata.xml"));
+        Xpp3Dom dom = readDom(
+                targetRepository.resolve("org/apache/maven/its/mng3441/test-artifact/1.0-SNAPSHOT/maven-metadata.xml"));
         assertEquals(
                 "2",
                 dom.getChild("versioning")
@@ -65,14 +64,14 @@ public void testitMNG3441() throws Exception {
                         .getChild("buildNumber")
                         .getValue());
 
-        dom = readDom(new File(targetRepository, "org/apache/maven/its/mng3441/maven-metadata.xml"));
+        dom = readDom(targetRepository.resolve("org/apache/maven/its/mng3441/maven-metadata.xml"));
         Xpp3Dom[] plugins = dom.getChild("plugins").getChildren();
         assertEquals("other-plugin", plugins[0].getChild("prefix").getValue());
         assertEquals("test-artifact", plugins[1].getChild("prefix").getValue());
     }
 
-    private Xpp3Dom readDom(File file) throws XmlPullParserException, IOException {
-        try (FileReader reader = new FileReader(file)) {
+    private Xpp3Dom readDom(Path file) throws XmlPullParserException, IOException {
+        try (Reader reader = Files.newBufferedReader(file)) {
             return Xpp3DomBuilder.build(reader);
         }
     }
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3461MirrorMatchingTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3461MirrorMatchingTest.java
index 82a1e6bd5e..bca0022bb2 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3461MirrorMatchingTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3461MirrorMatchingTest.java
@@ -21,7 +21,7 @@
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
-import java.io.File;
+import java.nio.file.Path;
 import java.io.IOException;
 import java.util.Map;
 
@@ -48,9 +48,9 @@ public class MavenITmng3461MirrorMatchingTest extends AbstractMavenIntegrationTe
      */
     @Test
     public void testitExactMatchDominatesWildcard() throws Exception {
-        File testDir = extractResources("/mng-3461/test-1");
+        Path testDir = extractResources("mng-3461/test-1");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteArtifacts("org.apache.maven.its.mng3461");
         verifier.filterFile("settings-template.xml", "settings.xml");
@@ -71,9 +71,9 @@ public void testitExactMatchDominatesWildcard() throws Exception {
      */
     @Test
     public void testitExternalWildcard() throws Exception {
-        File testDir = extractResources("/mng-3461/test-2");
+        Path testDir = extractResources("mng-3461/test-2");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
 
         Handler repoHandler = new AbstractHandler() {
             @Override
@@ -141,9 +141,9 @@ public void handle(
      */
     @Test
     public void testitNonGreedyWildcard() throws Exception {
-        File testDir = extractResources("/mng-3461/test-3");
+        Path testDir = extractResources("mng-3461/test-3");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteArtifacts("org.apache.maven.its.mng3461");
         verifier.filterFile("settings-template.xml", "settings.xml");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3470StrictChecksumVerificationOfDependencyPomTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3470StrictChecksumVerificationOfDependencyPomTest.java
index e3f18c86e9..feb8288c46 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3470StrictChecksumVerificationOfDependencyPomTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3470StrictChecksumVerificationOfDependencyPomTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 
 import org.junit.jupiter.api.Test;
 
@@ -36,9 +36,9 @@ public class MavenITmng3470StrictChecksumVerificationOfDependencyPomTest extends
      */
     @Test
     public void testit() throws Exception {
-        File testDir = extractResources("/mng-3470");
+        Path testDir = extractResources("mng-3470");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         verifier.deleteArtifacts("org.apache.maven.its.mng3470");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3475BaseAlignedDirTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3475BaseAlignedDirTest.java
index adbac5c621..c234e1c9cd 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3475BaseAlignedDirTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3475BaseAlignedDirTest.java
@@ -18,10 +18,9 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
 import java.io.IOException;
+import java.nio.file.Path;
 import java.util.Properties;
-
 import org.junit.jupiter.api.Test;
 
 import static org.junit.jupiter.api.Assertions.assertTrue;
@@ -42,9 +41,9 @@ public class MavenITmng3475BaseAlignedDirTest extends AbstractMavenIntegrationTe
      */
     @Test
     public void testitMNG3475() throws Exception {
-        File testDir = extractResources("/mng-3475");
+        Path testDir = extractResources("mng-3475");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         verifier.addCliArgument("validate");
@@ -71,9 +70,9 @@ public void testitMNG3475() throws Exception {
          */
     }
 
-    private void assertPathEquals(File basedir, String expected, String actual) throws IOException {
-        File actualFile = new File(actual);
+    private void assertPathEquals(Path basedir, String expected, String actual) throws IOException {
+        Path actualFile = Path.of(actual);
         assertTrue(actualFile.isAbsolute(), "path not absolute: " + actualFile);
-        ItUtils.assertCanonicalFileEquals(new File(basedir, expected), actualFile);
+        ItUtils.assertCanonicalFileEquals(basedir.resolve(expected), actualFile);
     }
 }
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3477DependencyResolutionErrorMessageTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3477DependencyResolutionErrorMessageTest.java
index b30f6d2d8a..48014bde41 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3477DependencyResolutionErrorMessageTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3477DependencyResolutionErrorMessageTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -44,9 +44,9 @@ class MavenITmng3477DependencyResolutionErrorMessageTest extends AbstractMavenIn
      * @throws Exception in case of failure
      */
     void testit(int port, String[] logExpectPatterns, String projectFile) throws Exception {
-        File testDir = extractResources("/mng-3477");
+        Path testDir = extractResources("mng-3477");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath(), "");
+        Verifier verifier = newVerifier(testDir.toString(), "");
 
         Map<String, String> filterProps = new HashMap<>();
         filterProps.put("@port@", Integer.toString(port));
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3482DependencyPomInterpolationTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3482DependencyPomInterpolationTest.java
index d82367238a..437770345a 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3482DependencyPomInterpolationTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3482DependencyPomInterpolationTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 import java.util.List;
 
 import org.junit.jupiter.api.Test;
@@ -35,9 +35,9 @@ public class MavenITmng3482DependencyPomInterpolationTest extends AbstractMavenI
 
     @Test
     public void testitMNG3482() throws Exception {
-        File testDir = extractResources("/mng-3482");
+        Path testDir = extractResources("mng-3482");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.filterFile("settings-template.xml", "settings.xml");
         verifier.deleteDirectory("target");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3485OverrideWagonExtensionTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3485OverrideWagonExtensionTest.java
index 9e42be9b04..e26af5dadc 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3485OverrideWagonExtensionTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3485OverrideWagonExtensionTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 
 import org.junit.jupiter.api.Test;
 
@@ -31,11 +31,11 @@ public class MavenITmng3485OverrideWagonExtensionTest extends AbstractMavenInteg
 
     @Test
     public void testitMNG3485() throws Exception {
-        File testDir = extractResources("/mng-3485");
+        Path testDir = extractResources("mng-3485");
 
         Verifier verifier;
 
-        verifier = newVerifier(testDir.getAbsolutePath());
+        verifier = newVerifier(testDir);
 
         verifier.addCliArgument("deploy");
         verifier.execute();
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3498ForkToOtherMojoTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3498ForkToOtherMojoTest.java
index 09c8b926eb..cc465c9cb1 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3498ForkToOtherMojoTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3498ForkToOtherMojoTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 
 import org.junit.jupiter.api.Test;
 
@@ -37,12 +37,12 @@ public class MavenITmng3498ForkToOtherMojoTest extends AbstractMavenIntegrationT
     public void testitMNG3498() throws Exception {
         // The testdir is computed from the location of this
         // file.
-        File testDir = extractResources("/mng-3498");
+        Path testDir = extractResources("mng-3498");
 
-        File pluginDir = new File(testDir, "maven-mng3498-plugin");
-        File projectDir = new File(testDir, "mng-3498-project");
+        Path pluginDir = testDir.resolve("maven-mng3498-plugin");
+        Path projectDir = testDir.resolve("mng-3498-project");
 
-        Verifier verifier = newVerifier(pluginDir.getAbsolutePath());
+        Verifier verifier = newVerifier(pluginDir);
         verifier.deleteArtifact("org.apache.maven.its.mng3498", "mavenit-mng3498-plugin", "1", "pom");
 
         verifier.addCliArgument("install");
@@ -50,7 +50,7 @@ public void testitMNG3498() throws Exception {
 
         verifier.verifyErrorFreeLog();
 
-        verifier = newVerifier(projectDir.getAbsolutePath());
+        verifier = newVerifier(projectDir);
 
         verifier.addCliArgument("validate");
         verifier.execute();
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3503Xpp3ShadingTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3503Xpp3ShadingTest.java
index a0d720c7af..d7c15b88d0 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3503Xpp3ShadingTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3503Xpp3ShadingTest.java
@@ -18,9 +18,8 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
 import java.nio.file.Files;
-
+import java.nio.file.Path;
 import org.junit.jupiter.api.Test;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
@@ -34,10 +33,10 @@ public class MavenITmng3503Xpp3ShadingTest extends AbstractMavenIntegrationTestC
 
     @Test
     public void testitMNG3503NoLinkageErrors() throws Exception {
-        File dir = extractResources("/mng-3503/mng-3503-xpp3Shading-pu11");
+        Path dir = extractResources("mng-3503/mng-3503-xpp3Shading-pu11");
 
         // First, build the test plugin
-        Verifier verifier = newVerifier(new File(dir, "maven-it-plugin-plexus-utils-11").getAbsolutePath());
+        Verifier verifier = newVerifier(dir.resolve("maven-it-plugin-plexus-utils-11"));
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         verifier.addCliArgument("install");
@@ -45,22 +44,22 @@ public void testitMNG3503NoLinkageErrors() throws Exception {
         verifier.verifyErrorFreeLog();
 
         // Then, run the test project that uses the plugin
-        verifier = newVerifier(dir.getAbsolutePath());
+        verifier = newVerifier(dir);
 
         verifier.addCliArgument("validate");
         verifier.execute();
 
         verifier.verifyErrorFreeLog();
 
-        assertEquals("<root />", Files.readString(new File(dir, "target/serialized.xml").toPath()));
+        assertEquals("<root />", Files.readString(dir.resolve("target/serialized.xml")));
     }
 
     @Test
     public void testitMNG3503Xpp3Shading() throws Exception {
-        File dir = extractResources("/mng-3503/mng-3503-xpp3Shading-pu-new");
+        Path dir = extractResources("mng-3503/mng-3503-xpp3Shading-pu-new");
 
         // First, build the test plugin
-        Verifier verifier = newVerifier(new File(dir, "maven-it-plugin-plexus-utils-new").getAbsolutePath());
+        Verifier verifier = newVerifier(dir.resolve("maven-it-plugin-plexus-utils-new"));
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         verifier.addCliArgument("install");
@@ -68,13 +67,13 @@ public void testitMNG3503Xpp3Shading() throws Exception {
         verifier.verifyErrorFreeLog();
 
         // Then, run the test project that uses the plugin
-        verifier = newVerifier(dir.getAbsolutePath());
+        verifier = newVerifier(dir);
 
         verifier.addCliArgument("validate");
         verifier.execute();
 
         verifier.verifyErrorFreeLog();
 
-        assertEquals("root", Files.readString(new File(dir, "target/serialized.xml").toPath()));
+        assertEquals("root", Files.readString(dir.resolve("target/serialized.xml")));
     }
 }
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3506ArtifactHandlersFromPluginsTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3506ArtifactHandlersFromPluginsTest.java
index 444b351411..9476d56756 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3506ArtifactHandlersFromPluginsTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3506ArtifactHandlersFromPluginsTest.java
@@ -18,9 +18,9 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
 import java.io.IOException;
-
+import java.nio.file.Files;
+import java.nio.file.Path;
 import org.junit.jupiter.api.Test;
 
 import static org.junit.jupiter.api.Assertions.assertFalse;
@@ -43,10 +43,10 @@ public class MavenITmng3506ArtifactHandlersFromPluginsTest extends AbstractMaven
 
     @Test
     public void testProjectPackagingUsage() throws IOException, VerificationException {
-        File testDir = extractResources("/" + AID);
+        Path testDir = extractResources("" + AID);
 
         // First, build the test plugin
-        Verifier verifier = newVerifier(new File(testDir, "mng-3506.2/maven-it-plugin-extension2").getAbsolutePath());
+        Verifier verifier = newVerifier(testDir.resolve("mng-3506.2/maven-it-plugin-extension2"));
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         verifier.addCliArgument("install");
@@ -54,7 +54,7 @@ public void testProjectPackagingUsage() throws IOException, VerificationExceptio
         verifier.verifyErrorFreeLog();
 
         // Then, run the test project that uses the plugin
-        verifier = newVerifier(testDir.getAbsolutePath());
+        verifier = newVerifier(testDir);
 
         verifier.deleteArtifacts(GID);
 
@@ -69,33 +69,33 @@ public void testProjectPackagingUsage() throws IOException, VerificationExceptio
         // repo...
 
         // Parent POM
-        String path = verifier.getArtifactPath(GID, AID, VERSION, "pom");
-        assertTrue(new File(path).exists(), path + " should have been installed.");
+        Path path = verifier.getArtifactPath(GID, AID, VERSION, "pom");
+        assertTrue(Files.exists(path), path + " should have been installed.");
 
         // Child 1
         path = verifier.getArtifactPath(GID, AID + ".1", VERSION, TYPE);
-        assertTrue(new File(path).exists(), path + " should have been installed.");
+        assertTrue(Files.exists(path), path + " should have been installed.");
 
         path = verifier.getArtifactPath(GID, AID + ".1", VERSION, "pom");
-        assertTrue(new File(path).exists(), path + " should have been installed.");
+        assertTrue(Files.exists(path), path + " should have been installed.");
 
         path = verifier.getArtifactPath(GID, AID + ".1", VERSION, BAD_TYPE1);
-        assertFalse(new File(path).exists(), path + " should NOT have been installed.");
+        assertFalse(Files.exists(path), path + " should NOT have been installed.");
 
         path = verifier.getArtifactPath(GID, AID + ".1", VERSION, BAD_TYPE2);
-        assertFalse(new File(path).exists(), path + " should _NEVER_ be installed!!!");
+        assertFalse(Files.exists(path), path + " should _NEVER_ be installed!!!");
 
         // Child 2
         path = verifier.getArtifactPath(GID, AID + ".2", VERSION, TYPE);
-        assertTrue(new File(path).exists(), path + " should have been installed.");
+        assertTrue(Files.exists(path), path + " should have been installed.");
 
         path = verifier.getArtifactPath(GID, AID + ".2", VERSION, "pom");
-        assertTrue(new File(path).exists(), path + " should have been installed.");
+        assertTrue(Files.exists(path), path + " should have been installed.");
 
         path = verifier.getArtifactPath(GID, AID + ".2", VERSION, BAD_TYPE1);
-        assertFalse(new File(path).exists(), path + " should _NEVER_ be installed!!!");
+        assertFalse(Files.exists(path), path + " should _NEVER_ be installed!!!");
 
         path = verifier.getArtifactPath(GID, AID + ".2", VERSION, BAD_TYPE2);
-        assertFalse(new File(path).exists(), path + " should NOT have been installed.");
+        assertFalse(Files.exists(path), path + " should NOT have been installed.");
     }
 }
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3529QuotedCliArgTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3529QuotedCliArgTest.java
index e9346fb60c..f1261fe1bf 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3529QuotedCliArgTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3529QuotedCliArgTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 import java.util.Properties;
 
 import org.junit.jupiter.api.Test;
@@ -39,9 +39,9 @@ public class MavenITmng3529QuotedCliArgTest extends AbstractMavenIntegrationTest
      */
     @Test
     public void testit() throws Exception {
-        File testDir = extractResources("/mng-3529");
+        Path testDir = extractResources("mng-3529");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setForkJvm(true); // NOTE: We want to go through the launcher script
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3535SelfReferentialPropertiesTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3535SelfReferentialPropertiesTest.java
index 6011f29a95..28f5640406 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3535SelfReferentialPropertiesTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3535SelfReferentialPropertiesTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 
 import org.junit.jupiter.api.Test;
 
@@ -31,9 +31,9 @@ public class MavenITmng3535SelfReferentialPropertiesTest extends AbstractMavenIn
 
     @Test
     public void testitMNG3535ShouldSucceed() throws Exception {
-        File testDir = extractResources("/mng-3535/success");
+        Path testDir = extractResources("mng-3535/success");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
 
         verifier.addCliArgument("-X");
 
@@ -51,9 +51,9 @@ public void testitMNG3535ShouldSucceed() throws Exception {
 
     @Test
     public void testitMNG3535ShouldFail() throws Exception {
-        File testDir = extractResources("/mng-3535/failure");
+        Path testDir = extractResources("mng-3535/failure");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.addCliArgument("-X");
         verifier.addCliArgument("verify");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3536AppendedAbsolutePathsTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3536AppendedAbsolutePathsTest.java
index 3a78305ad8..631bc49228 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3536AppendedAbsolutePathsTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3536AppendedAbsolutePathsTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 
 import org.junit.jupiter.api.Test;
 
@@ -33,17 +33,17 @@ public class MavenITmng3536AppendedAbsolutePathsTest extends AbstractMavenIntegr
 
     @Test
     public void testitMNG3536() throws Exception {
-        File testDir = extractResources("/mng-3536");
-        File pluginDir = new File(testDir, "plugin");
-        Verifier verifier = newVerifier(pluginDir.getAbsolutePath());
+        Path testDir = extractResources("mng-3536");
+        Path pluginDir = testDir.resolve("plugin");
+        Verifier verifier = newVerifier(pluginDir);
 
         verifier.addCliArgument("install");
         verifier.execute();
 
         verifier.verifyErrorFreeLog();
 
-        File projectDir = new File(testDir, "project");
-        verifier = newVerifier(projectDir.getAbsolutePath());
+        Path projectDir = testDir.resolve("project");
+        verifier = newVerifier(projectDir);
 
         verifier.addCliArgument("verify");
         verifier.execute();
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3545ProfileDeactivationTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3545ProfileDeactivationTest.java
index 44b181942f..910f514376 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3545ProfileDeactivationTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3545ProfileDeactivationTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
 
 import org.junit.jupiter.api.Test;
 
@@ -36,9 +36,9 @@ public class MavenITmng3545ProfileDeactivationTest extends AbstractMavenIntegrat
      */
     @Test
     public void testBasicBuildWithDefaultProfiles() throws Exception {
-        File testDir = extractResources("/mng-3545");
+        Path testDir = extractResources("mng-3545");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         verifier.setLogFileName("log1.txt");
@@ -62,9 +62,9 @@ public void testBasicBuildWithDefaultProfiles() throws Exception {
      */
     @Test
     public void testDeactivateDefaultProfilesHyphen() throws Exception {
-        File testDir = extractResources("/mng-3545");
+        Path testDir = extractResources("mng-3545");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         verifier.setLogFileName("log2.txt");
@@ -84,9 +84,9 @@ public void testDeactivateDefaultProfilesHyphen() throws Exception {
 
     @Test
     public void testDeactivateDefaultProfilesExclamation() throws Exception {
-        File testDir = extractResources("/mng-3545");
+        Path testDir = extractResources("mng-3545");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         verifier.setLogFileName("log3.txt");
@@ -112,9 +112,9 @@ public void testDeactivateDefaultProfilesExclamation() throws Exception {
      */
     @Test
     public void testDeactivateActivatedByProp() throws Exception {
-        File testDir = extractResources("/mng-3545");
+        Path testDir = extractResources("mng-3545");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         verifier.setLogFileName("log4.txt");
@@ -142,9 +142,9 @@ public void testDeactivateActivatedByProp() throws Exception {
      */
     @Test
     public void testActivateThenDeactivate() throws Exception {
-        File testDir = extractResources("/mng-3545");
+        Path testDir = extractResources("mng-3545");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         verifier.setLogFileName("log5.txt");
@@ -172,9 +172,9 @@ public void testActivateThenDeactivate() throws Exception {
      */
     @Test
     public void testDefaultProfileAutoDeactivation() throws Exception {
-        File testDir = extractResources("/mng-3545");
+        Path testDir = extractResources("mng-3545");
 
-        Verifier verifier = newVerifier(testDir.getAbsolutePath());
+        Verifier verifier = newVerifier(testDir);
         verifier.setAutoclean(false);
         verifier.deleteDirectory("target");
         verifier.setLogFileName("log6.txt");
diff --git a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3558PropertyEscapingTest.java b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3558PropertyEscapingTest.java
index cb1489470e..699b4c070f 100644
--- a/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3558PropertyEscapingTest.java
+++ b/its/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng3558PropertyEscapingTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.maven.it;
 
-import java.io.File;
+import java.nio.file.Path;
... 19125 lines suppressed ...