[forge-issues] [JBoss JIRA] (FORGE-1030) Support multi-module Forge plugins

Lennart Jörelid (JIRA) jira-events at lists.jboss.org
Wed Sep 4 07:41:03 EDT 2013


    [ https://issues.jboss.org/browse/FORGE-1030?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12801493#comment-12801493 ] 

Lennart Jörelid commented on FORGE-1030:
----------------------------------------

Quoting my comment on this issue from the 31 July:

{quote}By the way, just checking if a module uses the forge APIs is not sufficient for proper project detection.
Any abstract superclass of a Forge plugin implementation class which holds some utility method will also require Forge API dependencies.{quote}

A normal scenario would be placing such a superclass be placed *in a separate project* from the plugin implementation project, to enable 
several plugin implementations to use the utility methods or abstract superclass. Therefore, the project holding the utility methods 
would need to include dependencies to the same Forge API (including version) that the plugin project itself does. In the case of the 
Nazgul plugin, these utility methods and abstract classes are located within the {{factory-api}} project, whereas the plugin implementations
are located within the {{factory-impl-nazgul}} project - both of these require the same Forge dependency in {{provided}} scope.

Also, from my comment on this issue from the 31 July:
{quote}I simply added the requested groupId and artifactId values as extra parameters to the method.
These are acquired within the installFromIndex method, and held as part of the PluginRef.
One needed to pass them along through the installFromGit method to the buildFromCurrentProject method, and then one can do the magic.{quote}
                
> Support multi-module Forge plugins
> ----------------------------------
>
>                 Key: FORGE-1030
>                 URL: https://issues.jboss.org/browse/FORGE-1030
>             Project: Forge
>          Issue Type: Bug
>          Components: Documentation, Plugin API, Plugin Repository
>    Affects Versions: 1.3.3.Final, 1.4.0.Final
>            Reporter: Lennart Jörelid
>            Assignee: George Gastaldi
>            Priority: Blocker
>             Fix For: 1.x Future
>
>         Attachments: forge_1030_codeAnalysis.png
>
>
> It seems that Forge really needs better support for the default Maven
> development process. In repository.yaml, Forge plugins are defined by giving
> a Maven project GAV for the project holding the forge plugin definitions, as well as the GitHub repository holding the plugin source.
> Yet, Forge seems to ignore the Maven GAV information given in repository.yaml when checking out and building the plugin locally.
> This is a rather nasty bug, which in its current state effectively prevents anyone from using a multi-module build for their plugins (and it is also undocumented).
> An example is shown below:
> {code}
> [no project] Nazgul $ forge install-plugin nazgul
> ***INFO*** Preparing to install plugin: nazgul
> ***INFO*** Checking out plugin source files to [/var/folders/6g/9n7r543d2bv9n2qjvnvf_hsh0000gn/T/forgetemp6186363544408555570] via 'git'
> ***INFO*** Switching to branch/tag [refs/heads/1.3.3.Final]
>  ? The project does not appear to be a Forge Plugin Project, install anyway? [y/N]
> {code}
> While this analysis by Forge is incorrect (the Maven GAV given in the repository.yaml is indeed a project which holds plugins), it gets worse after installation:
> {code}
> [INFO] ------------------------------------------------------------------------
> [INFO] Reactor Summary:
> [INFO]
> [INFO] nazgul-forge-parent ............................... SUCCESS [7.921s]
> [INFO] nazgul-forge-api-parent ........................... SUCCESS [4.345s]
> [INFO] nazgul-forge-model-parent ......................... SUCCESS [1.274s]
> [INFO] nazgul-forge-reactor .............................. SUCCESS [0.847s]
> [INFO] nazgul-forge-poms-reactor ......................... SUCCESS [0.058s]
> [INFO] nazgul-forge-analyzer-api ......................... SUCCESS [5.562s]
> [INFO] nazgul-forge-analyzer-impl-nazgul ................. SUCCESS [1.666s]
> [INFO] nazgul-forge-analyzer-reactor ..................... SUCCESS [0.020s]
> [INFO] nazgul-forge-factory-model ........................ SUCCESS [2.434s]
> [INFO] nazgul-forge-factory-api .......................... SUCCESS [7.634s]
> [INFO] nazgul-forge-factory-impl-nazgul .................. SUCCESS [2.724s]
> [INFO] nazgul-forge-factory-reactor ...................... SUCCESS [0.032s]
> [INFO] ------------------------------------------------------------------------
> [INFO] BUILD SUCCESS
> [INFO] ------------------------------------------------------------------------
> [INFO] Total time: 36.580s
> [INFO] Finished at: Mon Jul 22 07:46:48 CEST 2013
> [INFO] Final Memory: 49M/247M
> [INFO] ------------------------------------------------------------------------
> ***INFO*** Cleaning up temp workspace [/var/folders/6g/9n7r543d2bv9n2qjvnvf_hsh0000gn/T/forgetemp6186363544408555570]
> Deleted /var/folders/6g/9n7r543d2bv9n2qjvnvf_hsh0000gn/T/forgetemp6186363544408555570
> ***ERROR*** Exception encountered: Build artifact [nazgul-forge-reactor-1.0.1-SNAPSHOT.pom] is missing and cannot be installed. Please resolve build errors and try again. (type "set VERBOSE true" to enable stack traces)
> {code}
> So ... 
> # The repository.yaml includes a full Maven GAV to the project which holds Forge plugins.
> # Forge uses repository.yaml to download the source from GitHub and build it
> # Forge ignores the Maven GAV given in repository.yaml, and simply uses the root reactor project to inspect and attempt to install the plugins.
> To fix this bug, Forge needs to find the project given within the repository.yaml within the downloaded reactor and install the plugins from *that* project.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira



More information about the forge-issues mailing list