https://github.com/BattlePlugins/BattleArena

Got a report on Discord that one of the users could not build one of our open 
source projects: BattleArena.

Examples of his error reproduced by me (with an empty local-repo):
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 02:03 min
[INFO] Finished at: 2018-12-18T20:38:53-06:00
[INFO] Final Memory: 14M/390M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal on project BattleArena:
Could not resolve dependencies for project mc.alk:BattleArena:jar:3.9.10.21:
Failed to collect dependencies at mc.euro:BukkitInterface:jar:4.0.1:
Failed to read artifact descriptor for mc.euro:BukkitInterface:jar:4.0.1:
Could not find artifact mc.euro:BukkitInterface-Parent:pom:parent in 
rainbowcraft-repo (http://rainbowcraft.sytes.net/maven/repository/) -> [Help 1]
[ERROR]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 02:06 min
[INFO] Finished at: 2018-12-18T20:35:57-06:00
[INFO] Final Memory: 12M/392M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal on project BattleArena:
Could not resolve dependencies for project mc.alk:BattleArena:jar:3.9.10.22:
Failed to collect dependencies at mc.alk:BattleBukkitLib:jar:4.0.2:
Failed to read artifact descriptor for mc.alk:BattleBukkitLib:jar:4.0.2:
Could not find artifact mc.alk:BattleBukkitLib-parent:pom:parent in 
rainbowcraft-repo (http://rainbowcraft.sytes.net/maven/repository/) -> [Help 1]
[ERROR]

Maven is looking for the Parent POM of multi-module projects.
BattleArena has THREE of these multi-module projects as dependencies:
https://github.com/Europia79/BukkitInterface
https://github.com/BattlePlugins/BattleBukkitLib
https://github.com/BattlePlugins/WorldEditUtil

And our Maven repository:
http://rainbowcraft.sytes.net/maven/repository/

So, I am thinking that these multi-module projects are mis-configured ?
Because when I deploy them, I am only deploying the final JAR of the main 
module (for example):
mvn deploy -pl modules/BukkitInterface

Hack#1:
Obviously, I can just deploy ALL modules & call it a day...
But these other modules don't have life-cycles...
Meaning that they're not used at all... except to create the final JAR.

Hack#2:
For these multi-module projects, I have since learned that the modules must be 
set to optional.
And I've discovered that deleting the Parent block from the main-module's 
pom.xml fixes the issue.
And Maven will no longer look for the Parent-POM.

But this really seems like a hach-ish solution:  Not best practices.
Because as I understand it:  The Parent-block just denotes inheritance.

I would really like to figure this out & understand it.
What is Maven best practices here ?

How does one configure these libraries (multi-modules) in such a way that 
dependent projects aren't un-necessarily looking for the Parent-POMs ?
(When they should be happy with just the libraries JAR file).


Reply via email to