Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
33 commits
Select commit Hold shift + click to select a range
551f6f1
#1724: initial Gui commandlet commit
laim2003 Mar 19, 2026
bbe114b
#1724: added Gui command and Tags/Hints
laim2003 Mar 20, 2026
a109b88
#1724: -implemented basic java -jar execution
laim2003 Mar 23, 2026
6d291af
#1724: disabled extraction of jar
laim2003 Mar 23, 2026
b6f79cf
- #1724: Switched Gui.java to use LocalToolCommandlet
laim2003 Mar 26, 2026
3d2fe9f
- #1724: Switched gui maven configuration from maven-shade (fat jar) …
laim2003 Mar 27, 2026
4af27c0
#1724: minor adjustments in CommandletManagerImpl.java to accomodate …
laim2003 Mar 27, 2026
87ebd01
#1724: fixed wrong mainClass definition
laim2003 Mar 27, 2026
8749556
#1724: changelog updated
laim2003 Mar 27, 2026
87a1c9d
#1724: fixed pom.xml jar configuration in gui module
laim2003 Mar 27, 2026
aa36f5b
Merge branch 'main' into #1724-create-gui-commandlet-cleanhistory
laim2003 Mar 27, 2026
81e6128
#1724: reverted accidental change
laim2003 Mar 27, 2026
8436d4c
#1724: updated gui-launcher/pom.xml
laim2003 Apr 2, 2026
9336bb4
#1724: updated CHANGELOG.adoc
laim2003 Apr 2, 2026
1252269
Merge branch 'main' into #1724-create-gui-commandlet-cleanhistory
laim2003 Apr 2, 2026
96d3fc8
Update cli/src/main/java/com/devonfw/tools/ide/tool/gui/Gui.java
laim2003 Apr 2, 2026
3ab8402
#1724: updated java version in pom.xml
laim2003 Apr 7, 2026
3ba298f
#1724: - updated java version to 25 in the GitHub action files
laim2003 Apr 7, 2026
a07f89c
Merge branch 'main' into #1724-create-gui-commandlet-cleanhistory
laim2003 Apr 7, 2026
2040cb5
#1724: Updated CHANGELOG.adoc
laim2003 Apr 7, 2026
00b5250
Merge branch 'main' into #1724-create-gui-commandlet-cleanhistory
hohwille Apr 9, 2026
59f5097
#1724: added java version dependency (for some reason, these changes …
laim2003 Apr 9, 2026
6c2a675
#1724: - fixed issue with broken classpath configuration.
laim2003 Apr 10, 2026
af122cf
Merge branch 'main' into #1724-create-gui-commandlet-cleanhistory
laim2003 Apr 10, 2026
55303b7
#1724: - Added error message/handling for cases in which the pom.xml …
laim2003 Apr 10, 2026
91b84e7
Merge remote-tracking branch 'origin/#1724-create-gui-commandlet-clea…
laim2003 Apr 10, 2026
4a67dee
Merge branch 'main' into #1724-create-gui-commandlet-cleanhistory
hohwille Apr 13, 2026
893d4a7
Update cli/src/main/java/com/devonfw/tools/ide/tool/gui/Gui.java
laim2003 Apr 13, 2026
7db63d8
Update cli/src/main/java/com/devonfw/tools/ide/tool/gui/Gui.java
laim2003 Apr 13, 2026
ce8fef1
Update cli/pom.xml
laim2003 Apr 13, 2026
a5a778a
#1802: - using getIdeInstallationPath instead of manual path
laim2003 Apr 13, 2026
a399503
Merge remote-tracking branch 'origin/#1724-create-gui-commandlet-clea…
laim2003 Apr 13, 2026
c209998
#1802: - moved the copying logic of the pom.xml from gui-launcher to …
laim2003 Apr 13, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/build-pr.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ jobs:
uses: actions/setup-java@v3
with:
distribution: 'temurin'
java-version: '21'
java-version: '25'
- name: Build project with Maven
run: mvn -B -ntp -Dstyle.color=always install
env:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ jobs:
uses: actions/setup-java@v3
with:
distribution: 'temurin'
java-version: '21'
java-version: '25'
- name: Build project with Maven
run: mvn -B -ntp -Dstyle.color=always install
- name: Coveralls GitHub Action
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/mutation-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ jobs:
uses: actions/setup-java@v3
with:
distribution: 'temurin'
java-version: '17'
java-version: '25'
- name: Run pitest coverage
run: |
cd cli
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/nightly-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ jobs:
uses: actions/setup-java@v3
with:
distribution: 'temurin'
java-version: '21'
java-version: '25'
- name: Download natives and build project
uses: actions/download-artifact@v4
with:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ jobs:
- name: Set up Apache Maven Central
uses: actions/setup-java@v3
with:
java-version: 21
java-version: 25
distribution: 'temurin'
cache: 'maven'
gpg-private-key: ${{ secrets.GPG_PRIVATE_KEY }} # Value of the GPG private key to import
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/update-cve.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ jobs:
- name: Set up Java
uses: actions/setup-java@v3
with:
java-version: '21'
java-version: '25'
distribution: 'temurin'
cache: 'maven'
- name: Cache CVE Database
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/update-urls.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ jobs:
- name: Set up Java
uses: actions/setup-java@v3
with:
java-version: 21
java-version: 25
distribution: 'temurin'
cache: 'maven'
- name: Build and run url updater
Expand Down
1 change: 1 addition & 0 deletions CHANGELOG.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ This file documents all notable changes to https://github.com/devonfw/IDEasy[IDE

Release with new features and bugfixes:

* https://github.com/devonfw/IDEasy/issues/1724[#1724]: Add gui commandlet
* https://github.com/devonfw/IDEasy/issues/1552[#1552]: Add Commandlet to fix TLS issue
* https://github.com/devonfw/IDEasy/issues/1799[#1799]: Add support for file URL in GitUrl validation for local development
* https://github.com/devonfw/IDEasy/issues/1760[#1760]: Accept empty input for single option
Expand Down
1 change: 0 additions & 1 deletion cli/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -303,5 +303,4 @@
</build>
</profile>
</profiles>

</project>
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@
import com.devonfw.tools.ide.tool.go.Go;
import com.devonfw.tools.ide.tool.graalvm.GraalVm;
import com.devonfw.tools.ide.tool.gradle.Gradle;
import com.devonfw.tools.ide.tool.gui.Gui;
import com.devonfw.tools.ide.tool.helm.Helm;
import com.devonfw.tools.ide.tool.intellij.Intellij;
import com.devonfw.tools.ide.tool.jasypt.Jasypt;
Expand Down Expand Up @@ -148,6 +149,7 @@ public CommandletManagerImpl(IdeContext context) {
add(new Corepack(context));
add(new Pip(context));
add(new Go(context));
add(new Gui(context));
}

/**
Expand Down
87 changes: 87 additions & 0 deletions cli/src/main/java/com/devonfw/tools/ide/tool/gui/Gui.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
package com.devonfw.tools.ide.tool.gui;

import java.nio.file.Files;
import java.nio.file.Path;
import java.util.List;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.devonfw.tools.ide.commandlet.Commandlet;
import com.devonfw.tools.ide.context.IdeContext;
import com.devonfw.tools.ide.process.ProcessContext;
import com.devonfw.tools.ide.process.ProcessContextImpl;
import com.devonfw.tools.ide.process.ProcessMode;
import com.devonfw.tools.ide.tool.ToolEdition;
import com.devonfw.tools.ide.tool.ToolEditionAndVersion;
import com.devonfw.tools.ide.tool.ToolInstallRequest;
import com.devonfw.tools.ide.tool.java.Java;
import com.devonfw.tools.ide.tool.mvn.Mvn;
import com.devonfw.tools.ide.version.BoundaryType;
import com.devonfw.tools.ide.version.VersionIdentifier;
import com.devonfw.tools.ide.version.VersionRange;

/**
* {@link Commandlet} to launch the IDEasy GUI.
*/
public class Gui extends Commandlet {

private static final Logger LOG = LoggerFactory.getLogger(Gui.class);

/**
* @param context the {@link IdeContext}.
*/
public Gui(IdeContext context) {

super(context);
addKeyword(getName());
}

@Override
public String getName() {

return "gui";
}

@Override
protected void doRun() {

ProcessContext processContext = new ProcessContextImpl(this.context);

ToolInstallRequest toolInstallRequest = new ToolInstallRequest(true);
toolInstallRequest.setProcessContext(processContext);
toolInstallRequest.setRequested(
new ToolEditionAndVersion(
new ToolEdition("java", "25"),
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

what's that?

public record ToolEdition(String tool, String edition) {

You are providing 25 as edition of Java - this can never work.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

How do I do this properly? Can I just put an empty string for the edition? Because if I want to use

java.installAsDependency(
        (VersionRange) toolInstallRequest.getRequested().getVersion(),
        toolInstallRequest
    );

i have to declare the Version and Edition via ToolEditionAndVersion.

VersionRange.of(VersionIdentifier.of("25"), VersionIdentifier.of(""), BoundaryType.RIGHT_OPEN)
)
);

Java java = this.context.getCommandletManager().getCommandlet(Java.class);
java.installAsDependency(
(VersionRange) toolInstallRequest.getRequested().getVersion(),
toolInstallRequest
);

LOG.debug("Starting GUI via commandlet");

Mvn mvn = context.getCommandletManager().getCommandlet(Mvn.class);

Path pomPath = context.getIdeInstallationPath().resolve("gui/pom.xml");
if (!Files.exists(pomPath)) {
LOG.error("Fatal error: The pom.xml file required for launching the IDEasy GUI could not be found in expected location: {}", pomPath);
return;
}

List<String> args = List.of(
"-f",
pomPath.toString(),
"exec:exec",
"-Dexec.executable=java",
"-Dexec.classpathScope=compile",
"-Dexec.args=-classpath %classpath com.devonfw.ide.gui.AppLauncher"
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

KISS

Suggested change
"-Dexec.args=-classpath %classpath com.devonfw.ide.gui.AppLauncher"
"-Dexec.mainClass=com.devonfw.ide.gui.AppLauncher"

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Using exec:java with exec.mainClass will lead to a problem:

Can't load log handler "com.devonfw.tools.ide.log.JulConsoleHandler"
java.lang.ClassNotFoundException: com.devonfw.tools.ide.log.JulConsoleHandler

When using exec:exec with -Dexec.executable=java and with defining the classpath manually, the class will be loaded correctly

);

mvn.runTool(processContext, ProcessMode.DEFAULT, args);
}
}
2 changes: 2 additions & 0 deletions cli/src/main/resources/nls/Help.properties
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,8 @@ cmd.graalvm=Tool commandlet for GraalVm (Java with native-image).
cmd.graalvm.detail=GraalVM is a high-performance runtime that supports multiple languages and execution modes. Detailed documentation can be found at https://www.graalvm.org/docs/
cmd.gradle=Tool commandlet for Gradle (Build-Tool).
cmd.gradle.detail=Gradle is a build automation tool for Java, Kotlin, and other JVM-based languages. Detailed documentation can be found at https://docs.gradle.org/
cmd.gui=Tool commandlet for running the IDEasy GUI
cmd.gui.detail=This command will run the GUI version of IDEasy, opening up a more comprehensible project dashboard and allowing for easier management of your local IDEasy instance.
cmd.helm=Tool commandlet for Helm (Kubernetes Package Manager).
cmd.helm.detail=Helm is a package manager for Kubernetes that simplifies deploying and managing applications. Detailed documentation can be found at https://helm.sh/docs/
cmd.help=Prints this help.
Expand Down
2 changes: 2 additions & 0 deletions cli/src/main/resources/nls/Help_de.properties
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,8 @@ cmd.graalvm=Werkzeug Kommando für GraalVm.
cmd.graalvm.detail=GraalVM ist eine leistungsstarke Laufzeitumgebung, die mehrere Sprachen und Ausführungsmodi unterstützt. Detaillierte Dokumentation ist zu finden unter https://www.graalvm.org/docs/
cmd.gradle=Werkzeug Kommando für Gradle (Build-Tool).
cmd.gradle.detail=Gradle ist ein Build-Automatisierungstool für Java, Kotlin und andere JVM-basierte Sprachen. Detaillierte Dokumentation ist zu finden unter https://docs.gradle.org/
cmd.gui=Werkzeug Kommando, um die GUI von IDEasy zu öffnen.
cmd.gui.detail=Dieser Befehl startet die GUI-Version von IDEasy, öffnet ein übersichtlicheres Projekt-Dashboard und erleichtert die Verwaltung Ihrer lokalen IDEasy-Instanz.
cmd.helm=Werkzeug Kommando für Helm (Kubernetes Package Manager).
cmd.helm.detail=Helm ist ein Paketmanager für Kubernetes, der das Bereitstellen und Verwalten von Anwendungen vereinfacht. Detaillierte Dokumentation ist zu finden unter https://helm.sh/docs/
cmd.help=Zeigt diese Hilfe an.
Expand Down
57 changes: 57 additions & 0 deletions gui-launcher/pom.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.devonfw.tools.IDEasy.dev</groupId>
<artifactId>ide</artifactId>
<version>dev-SNAPSHOT</version>
</parent>
<groupId>com.devonfw.tools.IDEasy</groupId>
<artifactId>ide-gui-launcher</artifactId>
<version>${revision}</version>
<packaging>pom</packaging>
<description>Launcher for IDEasy GUI</description>

<dependencies>
<dependency>
<groupId>com.devonfw.tools.IDEasy</groupId>
<artifactId>ide-gui</artifactId>
<version>${revision}</version>
</dependency>
</dependencies>

<profiles>
<profile>
<id>assembly</id>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<id>copy-gui-pom</id>
<phase>prepare-package</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<target>
<mkdir dir="${project.basedir}/../cli/target/package/${gui.relative_pom_path}"/>

<copy
file="${project.basedir}/.flattened-pom.xml"
tofile="${project.basedir}/../cli/target/package/${gui.relative_pom_path}/pom.xml"
failonerror="true"/>
</target>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
</profiles>
</project>
12 changes: 12 additions & 0 deletions gui/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,18 @@

<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifest>
<mainClass>com.devonfw.ide.gui.AppLauncher</mainClass>
<addClasspath>true</addClasspath>
</manifest>
</archive>
</configuration>
</plugin>
<plugin>
<groupId>org.openjfx</groupId>
<artifactId>javafx-maven-plugin</artifactId>
Expand Down
6 changes: 4 additions & 2 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -19,18 +19,19 @@
<properties>
<github.repository>IDEasy</github.repository>
<ide_version>${revision}</ide_version>
<java.version>21</java.version>
<java.version>25</java.version>
<jline.version>3.30.6</jline.version>
<jansi.version>2.4.1</jansi.version>
<jackson.version>2.18.3</jackson.version>
<xmlunit.version>2.11.0</xmlunit.version>
<wiremock.version>3.11.0</wiremock.version>
<javafx.version>21</javafx.version>
<javafx.version>25</javafx.version>
<testfx.version>4.0.18</testfx.version>
<native.maven.plugin.version>0.10.6</native.maven.plugin.version>
<assembly.maven.plugin.version>3.7.1</assembly.maven.plugin.version>
<build.helper.maven.plugin.version>3.6.1</build.helper.maven.plugin.version>
<graalvm.version>24.2.1</graalvm.version>
<gui.relative_pom_path>gui</gui.relative_pom_path>
</properties>

<dependencyManagement>
Expand Down Expand Up @@ -174,6 +175,7 @@
<module>documentation</module>
<module>cli</module>
<module>gui</module>
<module>gui-launcher</module>
<module>url-updater</module>
<module>security</module>
</modules>
Expand Down
Loading