{"id":21154942,"url":"https://github.com/forge/furnace","last_synced_at":"2025-07-11T20:01:40.967Z","repository":{"id":8481927,"uuid":"10085184","full_name":"forge/furnace","owner":"forge","description":"Lightweight Modular Service Container - Based on existing JBoss Modules, Maven, and CDI Standard Technologies. ","archived":false,"fork":false,"pushed_at":"2023-03-20T10:59:22.000Z","size":3075,"stargazers_count":33,"open_issues_count":11,"forks_count":27,"subscribers_count":7,"default_branch":"master","last_synced_at":"2025-04-13T10:59:20.951Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://forge.jboss.org","language":"Java","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"epl-1.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/forge.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2013-05-15T18:26:15.000Z","updated_at":"2023-08-29T10:44:45.000Z","dependencies_parsed_at":"2024-11-20T11:29:05.672Z","dependency_job_id":"b8dcbe98-99c3-46e4-a9e0-87123ff92446","html_url":"https://github.com/forge/furnace","commit_stats":{"total_commits":821,"total_committers":19,"mean_commits":43.21052631578947,"dds":0.3958587088915956,"last_synced_commit":"6b305e4fd3a14e12be2551d07275c19e8ef2f8b7"},"previous_names":[],"tags_count":101,"template":false,"template_full_name":null,"purl":"pkg:github/forge/furnace","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/forge%2Ffurnace","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/forge%2Ffurnace/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/forge%2Ffurnace/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/forge%2Ffurnace/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/forge","download_url":"https://codeload.github.com/forge/furnace/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/forge%2Ffurnace/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":264890029,"owners_count":23678825,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-20T11:08:23.630Z","updated_at":"2025-07-11T20:01:40.859Z","avatar_url":"https://github.com/forge.png","language":"Java","readme":"Furnace\n=======\n\nLightweight Modular Service Container - Based on JBoss Modules and Maven. It's easier than OSGi :)\n\n[![Build Status](https://travis-ci.org/forge/furnace.svg?branch=master)](https://travis-ci.org/forge/furnace)\n[![License](http://img.shields.io/:license-EPL-blue.svg)](https://www.eclipse.org/legal/epl-v10.html)\n[![Maven central](https://maven-badges.herokuapp.com/maven-central/org.jboss.forge.furnace/furnace-se/badge.svg)](https://maven-badges.herokuapp.com/maven-central/org.jboss.forge.furnace/furnace-se)\n\nUsage\n=====\n\nFirst, include the Furnace dependency in your project:\n\n    \u003cdependency\u003e\n       \u003cgroupId\u003eorg.jboss.forge.furnace\u003c/groupId\u003e\n       \u003cartifactId\u003efurnace-se\u003c/artifactId\u003e\n       \u003cversion\u003e${version.furnace}\u003c/version\u003e\n    \u003c/dependency\u003e\n\nThen configure the container and start it:\n\n    Furnace furnace = FurnaceFactory.getFurnace()\n    furnace.addRepository(AddonRepositoryMode.MUTABLE, new File(OperatingSystemUtils.getUserForgeDir(), \"addons\"));\n    \nTo install addons, you will need to add the following dependencies to your project:\n\n \n    \u003cdependency\u003e\n       \u003cgroupId\u003eorg.jboss.forge.furnace\u003c/groupId\u003e\n       \u003cartifactId\u003efurnace-manager\u003c/artifactId\u003e\n       \u003cversion\u003e${version.furnace}\u003c/version\u003e\n    \u003c/dependency\u003e\n\n    \u003cdependency\u003e\n       \u003cgroupId\u003eorg.jboss.forge.furnace\u003c/groupId\u003e\n       \u003cartifactId\u003efurnace-manager-resolver-maven\u003c/artifactId\u003e\n       \u003cversion\u003e${version.furnace}\u003c/version\u003e\n    \u003c/dependency\u003e\n    \nThen create a new AddonManager:\n\n    AddonManager manager = new AddonManagerImpl(furnace, new MavenAddonDependencyResolver())\n    \nOnce you have an `AddonManager` instance, you can begin to install addons (You can do this while Furnace is running):\n    \n    InstallRequest request = manager.install(AddonId.from(\"org.example:my-addon\", \"1.0.0.Final\"));\n    request.perform();\n    \nDon't forget to start Furnace:\n\n    Future\u003cFurnace\u003e future = furnace.startAsync();\n    future.get(); // wait for Furnace to start, before continuing.\n    \nOnce this is done, you'll now be able to request services from Furnace's `AddonRegistry`, and utilize the functionality of the addons you've installed:\n    \n    MyServiceType instance = furnace.getAddonRegistry().getServices(MyServiceType.class).get();\n\nOf course, addons can be pre-bundled into a project using the Furnace Maven Plugin, making it much simpler (and faster) to run your application:\n\n    \u003cplugin\u003e\n       \u003cgroupId\u003eorg.jboss.forge.furnace\u003c/groupId\u003e\n       \u003cartifactId\u003efurnace-maven-plugin\u003c/artifactId\u003e\n       \u003cversion\u003e${version.furnace}\u003c/version\u003e\n       \u003cexecutions\u003e\n          \u003cexecution\u003e\n             \u003cid\u003edeploy-addons\u003c/id\u003e\n             \u003cphase\u003eprepare-package\u003c/phase\u003e\n             \u003cgoals\u003e\n                \u003cgoal\u003eaddon-install\u003c/goal\u003e\n             \u003c/goals\u003e\n             \u003cinherited\u003efalse\u003c/inherited\u003e\n             \u003cconfiguration\u003e\n                \u003caddonRepository\u003e${basedir}/addon-repository\u003c/addonRepository\u003e\n                \u003caddonIds\u003e\n                   \u003caddonId\u003eorg.example:my-addon,1.0.0.Final\u003c/addonId\u003e\n                \u003c/addonIds\u003e\n             \u003c/configuration\u003e\n          \u003c/execution\u003e\n       \u003c/executions\u003e\n    \u003c/plugin\u003e\n    \nTo learn more about writing addons, see the full documentation here: https://github.com/forge/core#developing-an-addon\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fforge%2Ffurnace","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fforge%2Ffurnace","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fforge%2Ffurnace/lists"}