foundweekends / foundweekends/giter8

Giter8 template not working on non-default sbt version

Open
#325 3 comments 0 reactions 0 assignees View on GitHub
Dominant language
Scala
Stars
1.8k
Forks
225
Avg merge
2h 35m
Merged PRs (30d)
8

Description

When you run `g8 foundweekends/giter8.g8` it gives you the option to set the sbt_version. The default version number is 0.13.16-M1 (which seems questionable to me since it's a pre-release). When you run `sbt` on the top-level project generated by the g8 command, it works just fine. When you change the version of sbt to something else (the two I tested were 0.13.15 and 0.13.13) during the configuration step in the `g8` command and then try to run `sbt` again, there is an incompatible plugins exception:
```
Project loading failed: (r)etry, (q)uit, (l)ast, or (i)gnore? last
[info] Loading project definition from /path_to/testing/project
[debug] [naha]
[debug] [naha] Initial source changes:
[debug] [naha] removed:Set()
[debug] [naha] added: Set()
[debug] [naha] modified: Set()
[debug] [naha] Invalidated products: Set()
[debug] [naha] External API changes: API Changes: Set()
[debug] [naha] Modified binary dependencies: Set()
[debug] [naha] Initial directly invalidated sources: Set()
[debug] [naha]
[debug] [naha] Sources indirectly invalidated by:
[debug] [naha] product: Set()
[debug] [naha] binary dep: Set()
[debug] [naha] external source: Set()
[debug] All initially invalidated sources: Set()
[debug] Copy resource mappings:
[debug]
[debug] Forcing garbage collection...
sbt.IncompatiblePluginsException: Binary incompatibility in plugins detected.
Note that conflicts were resolved for some dependencies:
org.codehaus.plexus:plexus-utils
org.scala-sbt:sbt
at sbt.PluginDiscovery$.incompatiblePlugins(PluginDiscovery.scala:145)
at sbt.PluginDiscovery$.loadModules(PluginDiscovery.scala:135)
at sbt.PluginDiscovery$.binarySourceModules(PluginDiscovery.scala:124)
at sbt.PluginDiscovery$.discover$1(PluginDiscovery.scala:28)
at sbt.PluginDiscovery$.discoverAll(PluginDiscovery.scala:43)
at sbt.Load$.loadPlugins(Load.scala:900)
at sbt.Load$.loadPluginDefinition(Load.scala:857)
at sbt.Load$.buildPlugins(Load.scala:852)
at sbt.Load$.plugins(Load.scala:840)
at sbt.Load$$anonfun$loadUnit$1$$anonfun$34.apply(Load.scala:465)
at sbt.Load$$anonfun$loadUnit$1$$anonfun$34.apply(Load.scala:465)
at sbt.Load$.timed(Load.scala:1025)
at sbt.Load$$anonfun$loadUnit$1.apply(Load.scala:464)
at sbt.Load$$anonfun$loadUnit$1.apply(Load.scala:459)
at sbt.Load$.timed(Load.scala:1025)
at sbt.Load$.loadUnit(Load.scala:459)
at sbt.Load$$anonfun$25$$anonfun$apply$14.apply(Load.scala:311)
at sbt.Load$$anonfun$25$$anonfun$apply$14.apply(Load.scala:310)
at sbt.BuildLoader$$anonfun$componentLoader$1$$anonfun$apply$4$$anonfun$apply$5$$anonfun$apply$6.apply(BuildLoader.scala:91)
at sbt.BuildLoader$$anonfun$componentLoader$1$$anonfun$apply$4$$anonfun$apply$5$$anonfun$apply$6.apply(BuildLoader.scala:90)
at sbt.BuildLoader.apply(BuildLoader.scala:140)
at sbt.Load$.loadAll(Load.scala:365)
at sbt.Load$.loadURI(Load.scala:320)
at sbt.Load$.load(Load.scala:316)
at sbt.Load$.load(Load.scala:305)
at sbt.Load$$anonfun$4.apply(Load.scala:146)
at sbt.Load$$anonfun$4.apply(Load.scala:146)
at sbt.Load$.timed(Load.scala:1025)
at sbt.Load$.apply(Load.scala:146)
at sbt.Load$.defaultLoad(Load.scala:39)
at sbt.BuiltinCommands$.liftedTree1$1(Main.scala:548)
at sbt.BuiltinCommands$.doLoadProject(Main.scala:548)
at sbt.BuiltinCommands$$anonfun$loadProjectImpl$2.apply(Main.scala:540)
at sbt.BuiltinCommands$$anonfun$loadProjectImpl$2.apply(Main.scala:540)
at sbt.Command$$anonfun$applyEffect$1$$anonfun$apply$2.apply(Command.scala:59)
at sbt.Command$$anonfun$applyEffect$1$$anonfun$apply$2.apply(Command.scala:59)
at sbt.Command$$anonfun$applyEffect$2$$anonfun$apply$3.apply(Command.scala:61)
at sbt.Command$$anonfun$applyEffect$2$$anonfun$apply$3.apply(Command.scala:61)
at sbt.Command$.process(Command.scala:93)
at sbt.MainLoop$$anonfun$1$$anonfun$apply$1.apply(MainLoop.scala:96)
at sbt.MainLoop$$anonfun$1$$anonfun$apply$1.apply(MainLoop.scala:96)
at sbt.State$$anon$1.doX$1(State.scala:183)
at sbt.State$$anon$1.process(State.scala:190)
at sbt.MainLoop$$anonfun$1.apply(MainLoop.scala:96)
at sbt.MainLoop$$anonfun$1.apply(MainLoop.scala:96)
at sbt.ErrorHandling$.wideConvert(ErrorHandling.scala:17)
at sbt.MainLoop$.next(MainLoop.scala:96)
at sbt.MainLoop$.run(MainLoop.scala:89)
at sbt.MainLoop$$anonfun$runWithNewLog$1.apply(MainLoop.scala:68)
at sbt.MainLoop$$anonfun$runWithNewLog$1.apply(MainLoop.scala:63)
at sbt.Using.apply(Using.scala:24)
at sbt.MainLoop$.runWithNewLog(MainLoop.scala:63)
at sbt.MainLoop$.runAndClearLast(MainLoop.scala:46)
at sbt.MainLoop$.runLoggedLoop(MainLoop.scala:30)
at sbt.MainLoop$.runLogged(MainLoop.scala:22)
at sbt.StandardMain$.runManaged(Main.scala:109)
at sbt.xMain.run(Main.scala:38)
at xsbt.boot.Launch$$anonfun$run$1.apply(Launch.scala:109)
at xsbt.boot.Launch$.withContextLoader(Launch.scala:128)
at xsbt.boot.Launch$.run(Launch.scala:109)
at xsbt.boot.Launch$$anonfun$apply$1.apply(Launch.scala:35)
at xsbt.boot.Launch$.launch(Launch.scala:117)
at xsbt.boot.Launch$.apply(Launch.scala:18)
at xsbt.boot.Boot$.runImpl(Boot.scala:41)
at xsbt.boot.Boot$.main(Boot.scala:17)
at xsbt.boot.Boot.main(Boot.scala)
Caused by: java.lang.NoSuchMethodError: sbt.Keys$.pluginCrossBuild()Lsbt/TaskKey;
at sbt.ScriptedPlugin$.(ScriptedPlugin.scala:101)
at sbt.ScriptedPlugin$.(ScriptedPlugin.scala)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:348)
at sbt.ModuleUtilities$.getObject(ModuleUtilities.scala:14)
at sbt.ModuleUtilities$.getCheckedObject(ModuleUtilities.scala:20)
at sbt.ModuleUtilities$$anonfun$getCheckedObjects$1.apply(ModuleUtilities.scala:23)
at sbt.ModuleUtilities$$anonfun$getCheckedObjects$1.apply(ModuleUtilities.scala:23)
at scala.collection.immutable.Stream.map(Stream.scala:376)
at sbt.ModuleUtilities$.getCheckedObjects(ModuleUtilities.scala:23)
at sbt.PluginDiscovery$.loadModules(PluginDiscovery.scala:130)
at sbt.PluginDiscovery$.binarySourceModules(PluginDiscovery.scala:124)
at sbt.PluginDiscovery$.discover$1(PluginDiscovery.scala:28)
at sbt.PluginDiscovery$.discoverAll(PluginDiscovery.scala:43)
at sbt.Load$.loadPlugins(Load.scala:900)
at sbt.Load$.loadPluginDefinition(Load.scala:857)
at sbt.Load$.buildPlugins(Load.scala:852)
at sbt.Load$.plugins(Load.scala:840)
at sbt.Load$$anonfun$loadUnit$1$$anonfun$34.apply(Load.scala:465)
at sbt.Load$$anonfun$loadUnit$1$$anonfun$34.apply(Load.scala:465)
at sbt.Load$.timed(Load.scala:1025)
at sbt.Load$$anonfun$loadUnit$1.apply(Load.scala:464)
at sbt.Load$$anonfun$loadUnit$1.apply(Load.scala:459)
at sbt.Load$.timed(Load.scala:1025)
at sbt.Load$.loadUnit(Load.scala:459)
at sbt.Load$$anonfun$25$$anonfun$apply$14.apply(Load.scala:311)
at sbt.Load$$anonfun$25$$anonfun$apply$14.apply(Load.scala:310)
at sbt.BuildLoader$$anonfun$componentLoader$1$$anonfun$apply$4$$anonfun$apply$5$$anonfun$apply$6.apply(BuildLoader.scala:91)
at sbt.BuildLoader$$anonfun$componentLoader$1$$anonfun$apply$4$$anonfun$apply$5$$anonfun$apply$6.apply(BuildLoader.scala:90)
at sbt.BuildLoader.apply(BuildLoader.scala:140)
at sbt.Load$.loadAll(Load.scala:365)
at sbt.Load$.loadURI(Load.scala:320)
at sbt.Load$.load(Load.scala:316)
at sbt.Load$.load(Load.scala:305)
at sbt.Load$$anonfun$4.apply(Load.scala:146)
at sbt.Load$$anonfun$4.apply(Load.scala:146)
at sbt.Load$.timed(Load.scala:1025)
at sbt.Load$.apply(Load.scala:146)
at sbt.Load$.defaultLoad(Load.scala:39)
at sbt.BuiltinCommands$.liftedTree1$1(Main.scala:548)
at sbt.BuiltinCommands$.doLoadProject(Main.scala:548)
at sbt.BuiltinCommands$$anonfun$loadProjectImpl$2.apply(Main.scala:540)
at sbt.BuiltinCommands$$anonfun$loadProjectImpl$2.apply(Main.scala:540)
at sbt.Command$$anonfun$applyEffect$1$$anonfun$apply$2.apply(Command.scala:59)
at sbt.Command$$anonfun$applyEffect$1$$anonfun$apply$2.apply(Command.scala:59)
at sbt.Command$$anonfun$applyEffect$2$$anonfun$apply$3.apply(Command.scala:61)
at sbt.Command$$anonfun$applyEffect$2$$anonfun$apply$3.apply(Command.scala:61)
at sbt.Command$.process(Command.scala:93)
at sbt.MainLoop$$anonfun$1$$anonfun$apply$1.apply(MainLoop.scala:96)
at sbt.MainLoop$$anonfun$1$$anonfun$apply$1.apply(MainLoop.scala:96)
at sbt.State$$anon$1.doX$1(State.scala:183)
at sbt.State$$anon$1.process(State.scala:190)
at sbt.MainLoop$$anonfun$1.apply(MainLoop.scala:96)
at sbt.MainLoop$$anonfun$1.apply(MainLoop.scala:96)
at sbt.ErrorHandling$.wideConvert(ErrorHandling.scala:17)
at sbt.MainLoop$.next(MainLoop.scala:96)
at sbt.MainLoop$.run(MainLoop.scala:89)
at sbt.MainLoop$$anonfun$runWithNewLog$1.apply(MainLoop.scala:68)
at sbt.MainLoop$$anonfun$runWithNewLog$1.apply(MainLoop.scala:63)
at sbt.Using.apply(Using.scala:24)
at sbt.MainLoop$.runWithNewLog(MainLoop.scala:63)
at sbt.MainLoop$.runAndClearLast(MainLoop.scala:46)
at sbt.MainLoop$.runLoggedLoop(MainLoop.scala:30)
at sbt.MainLoop$.runLogged(MainLoop.scala:22)
at sbt.StandardMain$.runManaged(Main.scala:109)
at sbt.xMain.run(Main.scala:38)
at xsbt.boot.Launch$$anonfun$run$1.apply(Launch.scala:109)
at xsbt.boot.Launch$.withContextLoader(Launch.scala:128)
at xsbt.boot.Launch$.run(Launch.scala:109)
at xsbt.boot.Launch$$anonfun$apply$1.apply(Launch.scala:35)
at xsbt.boot.Launch$.launch(Launch.scala:117)
at xsbt.boot.Launch$.apply(Launch.scala:18)
at xsbt.boot.Boot$.runImpl(Boot.scala:41)
at xsbt.boot.Boot$.main(Boot.scala:17)
at xsbt.boot.Boot.main(Boot.scala)
[error] sbt.IncompatiblePluginsException: Binary incompatibility in plugins detected.
[error] Note that conflicts were resolved for some dependencies:
[error] org.codehaus.plexus:plexus-utils
[error] org.scala-sbt:sbt
[error] Use 'last' for the full log.
[debug] > load-failed
[debug] > last
```
If you go to the template within the project and run `sbt`, it works just fine.

If you change the `build.properties` file in /path_to/testing/project to be 0.13.16-M1, but leave the one in the template as whatever you want (ex. 0.13.15), it works just fine. To me, it means that either the configuration process when running `g8` is mistakenly also changing the version of sbt being used in the project or you have a dependency (the plexus-utils one presumably) that is tied to a particular version of sbt as opposed to changing depending on what's asked for in the configuration process.

Contributor guide

No contributing guide indexed for this repository

Research direction

Reproduce the issue with `g8 foundweekends/giter8.g8`, selecting sbt 0.13.15 or 0.13.13, then compare `build.properties` in the generated `/path_to/testing/project` and the template. Check why the generated top-level project fails while the template works; done means the generated project loads successfully with the selected sbt version without an incompatible plugins exception.

Written by the indexing model from the issue text.

Assessment

Tech stack
scala
Domain
build-system, cli
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.