[JBoss JIRA] Created: (SEAMFORGE-85) Forge should support dynamic loading of plugin library dependencies
by Lincoln Baxter III (JIRA)
Forge should support dynamic loading of plugin library dependencies
-------------------------------------------------------------------
Key: SEAMFORGE-85
URL: https://issues.jboss.org/browse/SEAMFORGE-85
Project: Seam Forge
Issue Type: Feature Request
Components: Plugin API
Affects Versions: 1.0.0.Alpha2
Reporter: Lincoln Baxter III
Right now, Forge extensions must use the maven shade-plugin to package referenced dependencies of plugins. It would greatly enhance developer experience if referenced plugins or libraries could be dynamically loaded from the local maven repository, even if built with Git.
A META-INF/dependencies file could be used to list runtime dependencies of the plugin. Or the POM files of each plugin (META-INF/pom...) could be scanned and parsed to determine required libs.
A third option, programmatic declaration of runtime dependencies might also be an option if it can be worked into Java from Groovy: http://groovy.codehaus.org/Grape
Benefits of these approaches are:
* Reduced size deliverable ZIPfile
* ...
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira
13 years, 2 months
[JBoss JIRA] Closed: (SEAMFORGE-23) Forge needs a de-centralized plugin distribution and repository system
by Lincoln Baxter III (JIRA)
[ https://issues.jboss.org/browse/SEAMFORGE-23?page=com.atlassian.jira.plug... ]
Lincoln Baxter III closed SEAMFORGE-23.
---------------------------------------
Assignee: Lincoln Baxter III
Fix Version/s: 1.0.0.Beta1
Resolution: Done
This has been partially implemented via:
{code}$ forge find-plugin *
$ forge insall-plugin theplugin{code}
https://raw.github.com/forge/plugin-repository/master/repository.yaml
We still need a way of automating the repository management tasks, and providing alternate repositories.
We can open additional issues for enhancements.
> Forge needs a de-centralized plugin distribution and repository system
> ----------------------------------------------------------------------
>
> Key: SEAMFORGE-23
> URL: https://issues.jboss.org/browse/SEAMFORGE-23
> Project: Seam Forge
> Issue Type: Feature Request
> Components: Brainstorming, Plugin API
> Affects Versions: 1.0.0.Alpha1
> Environment: All
> Reporter: Lincoln Baxter III
> Assignee: Lincoln Baxter III
> Priority: Critical
> Labels: Maven
> Fix For: 1.0.0.Beta1
>
>
> There is no disputing the value of this type of feature, as has been shown with App-stores of all kinds. This would be relatively simple to implement as a Maven-based system, delegating all of the artifact resolution and dependency management to Maven.
> Features Forge would need to provide:
> 1) Built-in plugins and native APIs to search/install/remove/update plug-ins (easy using forge Resource APIs + Aether to add/remove JARs.) This internal plugin/commands could be called "forge" for simplicity
> ------------------------------------------------------------------------------------------
> $ forge plugin-find prettyfaces
> Forge found the following plugins in specified repositories: <--- notice the 'forgeplugin' classifier used to identify forge plugins from other artifacts.
> * http://ocpsoft.com/repository ...... [prettyfaces] com.ocpsoft.pretty.faces:prettyfaces-forgeplugin:[... 3.1.0, 3.2.0, 3.2.1]
> * http://repo1.maven.org/ .............. [prettyfaces] com.ocpsoft.pretty.faces:prettyfaces-forgeplugin:3.1.0
> $ forge plugin-install prettyfaces --version 3.1.0
> ***SUCCESS*** [prettyfaces] plugin was successfully installed. You will need to restart forge to see these changes.
> $ forge plugin-list
> Listing installed plugins:
> * prettyfaces [3.1.0]
> * forge-scaffold [1.0.0.Alpha1]
> * forge-javaee6 [1.0.0.Alpha1]
> * home-control [1.0.0.Alpha1]
> $ forge plugin-remove prettyfaces
> Are you sure you you want to remove the plugin(s) [prettyfaces] [Y,n]? Y
> ***SUCCESS*** [prettyfaces] plugin was successfully removed. You will need to restart forge to see these changes.
> ------------------------------------------------------------------------------------------
> 2) Plugin repository management (add/remove/edit/list current plugin repository targets.)
> ------------------------------------------------------------------------------------------
> $ forge repo-list
> Currently using the following plugin repositories:
> * 1. https://repository.jboss.org/nexus/content/groups/public/
> * 2. http://ocpsoft.com/repository
> * 3. http://example.com/forge/plugin-repository
> $ forge repo-add http://jboss.org/forge/repository/ <-- These two will be KEY, we NEED THESE to happen
> $ forge repo-add http://javaee.org/forge/repository/
> $ forge repo-list
> Currently using the following plugin repositories:
> * 1. https://repository.jboss.org/nexus/content/groups/public/
> * 2. http://ocpsoft.com/repository
> * 3. http://example.com/forge/plugin-repository
> * 4. http://jboss.org/forge/repository/
> * 5. http://javaee.org/forge/repository/
> $ forge repo-del 5
> ***SUCCESS*** removed repository [http://javaee.org/forge/repository/]. Plugins installed from this repository will no longer be auto-updated, and can be removed using [forge plugin-remove {plugin-id}]
> ------------------------------------------------------------------------------------------
> 3) Auto-update functionality
> Periodically search for updates to existing plugins (or search on request) - ask users if they would like to see a list of updates or perform an automated update / update individual plugins.
> 4) A meta-data system of identifying compatible versions of plugins w/running version of forge.
> Possibly need to create a maven packaging type and build plugin in order to facilitate this type of additional metadata and artifact resolution. (Or could require a <classifier>forgeplugin</classifier>. We already have the maven GAV (GroupId : ArtifactId : Version) information. Supplemented with this classifier, we could easily identify forge plugins from other artifacts in maven.
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira
13 years, 2 months