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).
