1. Products
  2.   Project Management
  3.   Java
  4.   ganttproject

ganttproject

 
 

Open Source Java Project Management Tool

Plan, Track & Manage Projects with Gantt Charts, Task Dependencies, Resources & Export Options.

What is GanttProject?

GanttProject is a powerful, free, and open-source desktop project management application designed for individuals and teams seeking an alternative to expensive enterprise tools. It provides intuitive visualizations like Gantt charts and resource load charts to help users plan tasks, define dependencies, assign resources, and track progress. The application supports complex project structures including task hierarchies, milestones, and baselines, making it suitable for both simple and large-scale projects. With its clean interface and robust feature set, GanttProject enables users to manage timelines effectively without requiring cloud connectivity.

Designed with flexibility in mind, GanttProject offers interoperability with Microsoft Project and Excel, allowing seamless import and export of project data. It also supports exporting project plans to PDF, HTML, and PNG formats for sharing and reporting purposes. For collaborative work, the application integrates with WebDAV servers and offers optional commercial cloud services via GanttProject Cloud. Built using Java and distributed under the GNU GPL v3 license, GanttProject remains fully community-driven and transparent, ensuring users retain full control over their project data while benefiting from continuous community contributions and updates.

Previous Next

Getting Started with GanttProject

To begin using GanttProject, clone the official repository from [ganttproject GitHub](https://github.com/bardsoftware/ganttproject) and initialize submodules using `git submodule update`. For a quick start, run `gradle run` to launch the core application without export/import features. To build the full-featured desktop app, use `gradle runapp` or build a distributable binary with `gradle distbin` and execute the launcher script. GanttProject is built with Java and supports Windows, macOS, and Linux. Users can also download pre-built binaries directly from the official website at [ganttproject.biz](http://ganttproject.biz) for immediate installation and use.

Install & Run GanttProject via Gradle

# Clone repository and submodules
git clone https://github.com/bardsoftware/ganttproject.git
cd ganttproject
git submodule update

# Run core version
gradle run

# Run full desktop app
gradle runapp

Task Dependencies & Hierarchy Management

GanttProject provides robust support for defining complex task relationships, including parent-child hierarchies, task dependencies (finish-to-start, start-to-start, etc.), and milestones. Users can easily create, reorder, and link tasks visually within the Gantt chart view, while also managing task durations, start/end dates, and progress percentages. The application automatically recalculates project timelines when changes are made, ensuring realistic scheduling based on defined constraints. Dependencies are clearly visualized with arrows connecting tasks, and users can adjust lag or lead times as needed. This makes it ideal for managing large projects with interdependent activities, enabling teams to identify critical paths and avoid scheduling conflicts efficiently.

How to Define Task Dependencies in GanttProject?

// Example: Programmatically create a task dependency using GanttProject API (simplified)
Task task1 = project.addTask("Task A");
Task task2 = project.addTask("Task B");
task2.addPredecessor(task1, Dependency.Type.FINISH_START, 0);

Resource Management & Load Chart

GanttProject includes comprehensive resource management capabilities, allowing users to assign people, equipment, and materials to tasks, track availability, and monitor workload distribution. The resource load chart provides a visual representation of how resources are allocated across the project timeline, highlighting over-allocations and idle periods. Users can define resource costs, working calendars, and availability constraints to ensure realistic planning. This feature helps project managers balance workloads, prevent burnout, and optimize team utilization. By integrating resource assignments with task scheduling, GanttProject ensures that project timelines reflect actual capacity, supporting more accurate forecasting and decision-making.

How to Assign Resources to Tasks in GanttProject?

// Example: Assign a resource to a task (conceptual API usage)
Resource engineer = project.addResource("John Doe");
Task development = project.getTask("Develop Module");
development.assignResource(engineer, 100); // 100% allocation

Export & Interoperability Options

GanttProject supports exporting project data to multiple formats including PDF, HTML, and PNG for sharing with stakeholders who may not have the application installed. It also offers strong interoperability with Microsoft Project and Excel, enabling import of existing project plans and export for further analysis or reporting. The WebDAV integration allows teams to store and synchronize project files on remote servers, facilitating basic collaboration without requiring a dedicated cloud service. For enhanced collaboration, users can opt for GanttProject Cloud, a commercial service that provides real-time synchronization and team sharing. These features ensure seamless integration into existing workflows and support diverse reporting and collaboration needs across organizations.

How to Export Project to PDF via GanttProject CLI?

# Export current project to PDF (using built-in export functionality)
./ganttproject --export-pdf "Project_Plan.pdf"

# Export to HTML for web sharing
./ganttproject --export-html "Project_Plan.html"

Project Baselines & Cost Tracking

GanttProject enables users to save project baselines, which capture the current schedule and budget for later comparison against actual progress. This feature is essential for monitoring deviations and measuring performance over time. Users can define multiple baselines to track different planning phases or revisions. Additionally, the application supports detailed cost calculation by linking task durations, resource assignments, and hourly rates to compute total project expenses. Cost data is displayed alongside schedule information, helping project managers stay within budget while adjusting timelines. These capabilities make GanttProject suitable not only for scheduling but also for financial oversight and stakeholder reporting.

How to Save and Compare Project Baselines?

// Example: Save baseline and compare with current state (API concept)
project.saveBaseline("Baseline v1");
// ... after work progresses ...
Baseline baseline = project.getBaseline("Baseline v1");
double variance = project.calculateScheduleVariance(baseline);
System.out.println("Schedule variance: " + variance + " days");