This is an automated email from the ASF dual-hosted git repository. hboutemy pushed a commit to branch toolchains in repository https://gitbox.apache.org/repos/asf/maven-archiver.git
commit 4e5bc2a3ddca1ecf118eac9cb45664b23a5b3567 Author: Hervé Boutemy <[email protected]> AuthorDate: Tue Jan 6 02:58:34 2026 +0100 add toolchain support fixes #327 --- pom.xml | 6 +++ .../org/apache/maven/archiver/MavenArchiver.java | 47 +++++++++++++++++++--- src/site/xdoc/index.xml.vm | 10 +++-- 3 files changed, 54 insertions(+), 9 deletions(-) diff --git a/pom.xml b/pom.xml index 352aa60..1fe75c3 100644 --- a/pom.xml +++ b/pom.xml @@ -84,6 +84,12 @@ <version>${mavenVersion}</version> <scope>provided</scope> </dependency> + <dependency> + <groupId>org.apache.maven</groupId> + <artifactId>maven-toolchain</artifactId> + <version>${mavenVersion}</version> + <scope>provided</scope> + </dependency> <!-- Plexus dependencies --> diff --git a/src/main/java/org/apache/maven/archiver/MavenArchiver.java b/src/main/java/org/apache/maven/archiver/MavenArchiver.java index d2f15fd..671f73f 100644 --- a/src/main/java/org/apache/maven/archiver/MavenArchiver.java +++ b/src/main/java/org/apache/maven/archiver/MavenArchiver.java @@ -45,6 +45,7 @@ import org.apache.maven.artifact.versioning.ArtifactVersion; import org.apache.maven.artifact.versioning.OverConstrainedVersionException; import org.apache.maven.execution.MavenSession; import org.apache.maven.project.MavenProject; +import org.apache.maven.toolchain.Toolchain; import org.codehaus.plexus.archiver.jar.JarArchiver; import org.codehaus.plexus.archiver.jar.Manifest; import org.codehaus.plexus.archiver.jar.ManifestException; @@ -118,6 +119,8 @@ public class MavenArchiver { private boolean buildJdkSpecDefaultEntry = true; + private Toolchain toolchain; + /** * <p>getManifest.</p> * @@ -615,7 +618,17 @@ public class MavenArchiver { addManifestAttribute(m, entries, "Java-Version", javaVersion); } if (buildJdkSpecDefaultEntry) { - addManifestAttribute(m, entries, "Build-Jdk-Spec", System.getProperty("java.specification.version")); + String runtimeSpec = System.getProperty("java.specification.version"); + String buildSpec; + if (toolchain == null) { + buildSpec = runtimeSpec; + } else { + // TODO extract JDK Spec from toolchain + buildSpec = "TODO"; + } + + addManifestAttribute(m, entries, "Build-Tool-Jre-Spec", runtimeSpec); + addManifestAttribute(m, entries, "Build-Jdk-Spec", buildSpec); } } @@ -626,11 +639,19 @@ public class MavenArchiver { entries, "Build-Tool", session != null ? session.getSystemProperties().getProperty("maven.build.version") : "Apache Maven"); - addManifestAttribute( - m, - entries, - "Build-Jdk", - String.format("%s (%s)", System.getProperty("java.version"), System.getProperty("java.vendor"))); + + String runtimeJvm = + String.format("%s (%s)", System.getProperty("java.version"), System.getProperty("java.vendor")); + String buildJvm; + if (toolchain == null) { + buildJvm = runtimeJvm; + } else { + // TODO extract JDK from toolchain + buildJvm = "TODO"; + } + addManifestAttribute(m, entries, "Build-Tool-Jre", runtimeJvm); + addManifestAttribute(m, entries, "Build-Jdk", buildJvm); + addManifestAttribute( m, entries, @@ -810,4 +831,18 @@ public class MavenArchiver { parseBuildOutputTimestamp(outputTimestamp).map(FileTime::from).ifPresent(modifiedTime -> getArchiver() .configureReproducibleBuild(modifiedTime)); } + + /** + * Configure Toolchain used for creating the archive. + * + * @param toolchain the toolchain (may be {@code null}) + * @since 3.6.7 + */ + public void setToolchain(Toolchain toolchain) { + this.toolchain = toolchain; + } + + public Toolchain getToolchain() { + return toolchain; + } } diff --git a/src/site/xdoc/index.xml.vm b/src/site/xdoc/index.xml.vm index 9aca084..7be099c 100644 --- a/src/site/xdoc/index.xml.vm +++ b/src/site/xdoc/index.xml.vm @@ -218,13 +218,16 @@ version=\${project.version}</source> <td> If the manifest will contain these entries: <source>Created-By: Maven Archiver ${project.version} -Build-Jdk-Spec: ${java.specification.version} +Build-Tool-Jre-Spec: ${java.specification.version} +Build-Jdk-Spec: ${java.specification.version} of compiler Java-Version: ${project maven.compiler.release/target}</source> Since 3.5.0, the default value of <code>Created-By</code> entry can be overridden (usually by plugin code) using <a href="./apidocs/org/apache/maven/archiver/MavenArchiver.html">MavenArchiver.setCreatedBy(...)</a> API.<br /> Since 3.6.5, <code>Java-Version</code> entry is discovered by <a href="./apidocs/org/apache/maven/archiver/BuildHelper.html">BuildHelper.discoverJavaRelease(...)</a> API.<br /> - The default value is <code>true</code>. + The default value is <code>true</code>.<br /> + Since 3.6.7, <code>Build-Tool-Jre-Spec</code> entry is added with Maven runtime info, while + <code>Build-Jdk-Spec</code> follows eventual toolchain. </td> </tr> <tr> @@ -258,7 +261,8 @@ Specification-Vendor: \${project.organization.name}</source> <td> If the manifest will contain these entries: <source>Build-Tool: ${maven.build.version} -Build-Jdk: ${java.version} (${java.vendor}) +Build-Tool-Jre: ${java.version} (${java.vendor}) +Build-Jdk: ${java.version} (${java.vendor}) of compiler Build-Os: ${os.name} (${os.version}; (${os.arch})</source> The default value is <code>false</code>. </td>
