@@ -21,6 +21,39 @@ public final class Toolchain {
2121 private Toolchain () {
2222 }
2323
24+ private static String getToolchainJavacPath (ToolchainManager toolchainManager ) {
25+ if (toolchainManager == null ) {
26+ return null ;
27+ }
28+ org .apache .maven .toolchain .Toolchain jdkToolchain = toolchainManager .getToolchainFromBuildContext ("jdk" , session );
29+ if (jdkToolchain == null ) {
30+ return null ;
31+ }
32+ return jdkToolchain .findTool ("javac" );
33+ }
34+
35+ private static String getJavacPath (ToolchainManager toolchainManager ) {
36+ String where = getToolchainJavacPath (toolchainManager );
37+ if (where != null ) {
38+ return where ;
39+ }
40+ String javaHome = System .getProperty ("java.home" );
41+ if (javaHome == null || javaHome .isEmpty ()) {
42+ log .warn ("java-rockcraft-plugin: please configure Maven toolchain or provide a valid Java Home." );
43+ return null ;
44+ }
45+ Path java9Path = Paths .get (javaHome , "bin" , "javac" );
46+ Path java8Path = Paths .get (Paths .get (javaHome ).getParent (), "bin" , "javac" );
47+
48+ if (Files .isExecutable (java9Path )) {
49+ return java9Path ;
50+ } else if (Files .isExecutable (java8Path )) {
51+ return java8Path ;
52+ }
53+ log .warn ("java-rockcraft-plugin: please configure Maven toolchain or provide a valid Java Home: " + javaHome );
54+ return null ;
55+ }
56+
2457 /**
2558 * Gets the toolchain settings for the project
2659 *
@@ -31,21 +64,11 @@ private Toolchain() {
3164 */
3265 public static String getToolchainPackage (MavenSession session , ToolchainManager toolchainManager , Log log ) {
3366 try {
34- if (toolchainManager == null ) {
35- log .warn ("java-rockcraft-plugin: Maven Toolchain manager is not present." );
36- return ToolchainHelper .DEFAULT_JDK ;
37- }
38- System .err .println ("---- has toolchain manager --- " );
39- org .apache .maven .toolchain .Toolchain jdkToolchain = toolchainManager .getToolchainFromBuildContext ("jdk" , session );
40- if (jdkToolchain == null ) {
41- log .warn ("java-rockcraft-plugin: Maven Toolchain is not configured. Please configure toolchain or use buildPackage configuration" );
42- return ToolchainHelper .DEFAULT_JDK ;
43- }
44- String tool = jdkToolchain .findTool ("javac" );
67+ String tool = getJavacPath (toolchainManager );
4568 if (tool == null ) {
46- log .warn ("java-rockcraft-plugin: Maven Toolchain - javac tool is not found." );
4769 return ToolchainHelper .DEFAULT_JDK ;
4870 }
71+
4972 ToolchainHelper .ToolchainPackage p = ToolchainHelper .getBuildPackage (tool );
5073 switch (p .getReason ()) {
5174 case JAVAC_ERROR :
0 commit comments