[
https://issues.jboss.org/browse/FORGE-1030?page=com.atlassian.jira.plugin...
]
Lennart Jörelid commented on FORGE-1030:
----------------------------------------
Ah.
First - you are quite true; I remember seeing that the maven build from inside the Forge
was run without the tests engaged.
What do you think would be a good practise here? I see three options, basically:
# We could simply run the Forge install build with unit tests switched on. This is a
performance hit, but will only be executed at installation - so maybe that is OK.
# We could run the Forge install build without unit tests. This will ensure performance
during installation. If we go down this route, it should be documented. I completely
missed it until I looked inside the Forge source code.
# We could run the Forge install build without unit tests, but with some extra environment
variable set (say "plugin_install") - implying that the Maven build for the
plugin could turn on a Profile which would either switch all plugins off or make plugins
not break the build on failure. This, also, needs to be documented.
Personally, I would suggest going for the last option since it is compliant with what we
have today while preserving the development default to run all unit tests in all runs
except the installation itself. You feel this is OK?
Second - your idea of extracting the code to handle plugins into a PluginManager is better
than the too conservative way I implemented it. I focused on not breaking any code in the
Forge core, whereas you refactored properly. I will look through the code a little better
tomorrow, but the approach you took is good.
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
Reporter: Lennart Jörelid
Assignee: George Gastaldi
Priority: Blocker
Fix For: 1.3.4.Final
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