diff --git a/frontend-plugin-core/src/main/java/com/github/eirslett/maven/plugins/frontend/lib/Platform.java b/frontend-plugin-core/src/main/java/com/github/eirslett/maven/plugins/frontend/lib/Platform.java index da669fd8d..3bdb0296e 100644 --- a/frontend-plugin-core/src/main/java/com/github/eirslett/maven/plugins/frontend/lib/Platform.java +++ b/frontend-plugin-core/src/main/java/com/github/eirslett/maven/plugins/frontend/lib/Platform.java @@ -135,7 +135,12 @@ public String getNodeDownloadFilename(String nodeVersion, boolean archiveOnWindo } public String getNodeClassifier() { - String result = getCodename() + "-" + architecture.name(); + final String result; + if(isMac() && architecture == Architecture.arm64) { // this check is required to download the x64 binary until there is an arm64 version available for macOS (darwin). + result = getCodename() + "-" + Architecture.x64.name(); + } else { + result = getCodename() + "-" + architecture.name(); + } return classifier != null ? result + "-" + classifier : result; } } diff --git a/frontend-plugin-core/src/test/java/com/github/eirslett/maven/plugins/frontend/lib/PlatformTest.java b/frontend-plugin-core/src/test/java/com/github/eirslett/maven/plugins/frontend/lib/PlatformTest.java index ca8eefa5f..81b8cb01d 100644 --- a/frontend-plugin-core/src/test/java/com/github/eirslett/maven/plugins/frontend/lib/PlatformTest.java +++ b/frontend-plugin-core/src/test/java/com/github/eirslett/maven/plugins/frontend/lib/PlatformTest.java @@ -31,6 +31,18 @@ public void detect_win_doesntLookForAlpine() { verifyNoMoreInteractions(File.class); // doesn't look for a file path } + @Test + public void detect_arm_mac_download_x64_binary() { + mockStatic(OS.class); + mockStatic(Architecture.class); + + when(OS.guess()).thenReturn(OS.Mac); + when(Architecture.guess()).thenReturn(Architecture.arm64); + + Platform platform = Platform.guess(); + assertEquals("darwin-x64", platform.getNodeClassifier()); + } + @Test public void detect_linux_notAlpine() throws Exception { mockStatic(OS.class);