Skip to content

Conversation

@maybeec
Copy link
Member

@maybeec maybeec commented Nov 19, 2025

This PR fixes #1298

This PR implements support for installing multiple versions of the same tool in parallel, addressing the need for projects that require different versions of tools like Java for different components (e.g., frontend vs backend).

Key Features

Environment Variables

  • EXTRA_«TOOL»_VERSION: Configures the version of the extra tool to install
  • EXTRA_«TOOL»_EDITION: Configures the edition of the extra tool (falls back to regular edition if not set)
  • EXTRA_«TOOL»_HOME: Automatically set to point to the extra tool installation

Installation Behavior

  • Extra tools are installed in $IDE_HOME/software/extra/«tool»
  • Extra tools are NOT added to PATH to avoid conflicts
  • Installation is triggered automatically when running ide install «tool» if EXTRA_«TOOL»_VERSION is configured
  • Warning is logged if extra version/edition is identical to regular version/edition

Example Usage

# Configure regular Java for backend
JAVA_VERSION=21.0.0
JAVA_EDITION=temurin

# Configure extra Java for frontend  
EXTRA_JAVA_VERSION=11.0.21
EXTRA_JAVA_EDITION=oracle

After running ide install java, both versions will be available:

  • Regular Java 21 in $IDE_HOME/software/java (in PATH)
  • Extra Java 11 in $IDE_HOME/software/extra/java (accessible via $EXTRA_JAVA_HOME)

Tool Support

  • Supported for most SDK tools (Java, Maven, Node.js, etc.)
  • Disabled for GraalVM (already uses extra path) and IDE tools (no parallel installation use case)

Implementation Details

Core Changes

  • EnvironmentVariables.java: Added methods to handle extra tool variables
  • LocalToolCommandlet.java: Added extra tool installation logic integrated with existing installation flow
  • Documentation: Updated variables.adoc and usage.adoc with examples and explanations

Testing

  • Comprehensive unit tests for all new functionality
  • Integration tests for real-world installation scenarios
  • All existing tests continue to pass (no regression)

Backward Compatibility

  • Fully backward compatible - existing installations work unchanged
  • No changes to user workflow - extra tools are installed automatically when configured
  • No impact on tools that don't use extra tool configuration

Fixes #1298.


Checklist for this PR

  • When running mvn clean test locally all tests pass and build is successful
  • PR title is of the form #«issue-id»: «brief summary»
  • PR top-level comment summarizes what has been done and contains link to addressed issue(s)
  • PR and issue(s) have suitable labels
  • Issue is set to In Progress and assigned to you
  • You followed all coding conventions
  • You have added the issue implemented by your PR in CHANGELOG.adoc

@github-project-automation github-project-automation bot moved this to 🆕 New in IDEasy board Nov 19, 2025
@maybeec maybeec marked this pull request as draft November 19, 2025 08:50
@maybeec maybeec added enhancement New feature or request configuration should be configurable or configuration change labels Nov 19, 2025
@jan-vcapgemini jan-vcapgemini moved this from 🆕 New to Team Review in IDEasy board Nov 28, 2025
@hohwille
Copy link
Member

@maybeec I am slightly behind with the reviews but on my way to catch up.
Thanks for creating this PR. Did you notice that the story #1298 was still in refinement?
There are multiple options how the story could be designed and open questions were not finally decided.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

configuration should be configurable or configuration change enhancement New feature or request

Projects

Status: Team Review

Development

Successfully merging this pull request may close these issues.

Support for extra tool version

2 participants