我用giter8创建了一个模板项目,并尝试添加条件表达式。
在
defaults.properties
我补充道:
param=true
在我添加的模板文件中:
$if(param.truthy)$
....
$endif$
在生成项目时,使用:
g8 file://proj.g8
一切正常。
在互动部分,
param
将有2个选项:
参数
[是/否]
:
生成的文件将根据
参数
但是,当我生成项目时:
sbt new file:
参数
正在被视为字符串。
在交互部分中,没有是/否选项:
参数
[是]
:
我得到以下错误:
由于模板文件中的错误而退出:
/tmp/giter8-135496483100759/src/main/g8/build。sbt,上下文[匿名]
44:6内部错误:组织。stringtemplate。v4.编译器。ST例外:
上下文[匿名]44:6没有此类属性或无法访问:
Java语言lang.String。真实原因:
组织。stringtemplate。v4.misc。STNoSuchPropertyException:没有这样的
属性:java。lang.String。truthy在
组织。stringtemplate。v4.misc。ObjectModelAdapter。throwNoSuchProperty(ObjectModelAdapter.java:167)
在
组织。stringtemplate。v4.misc。ObjectModelAdapter。getProperty(ObjectModelAdapter.java:89)
在
组织。stringtemplate。v4.解释器。getObjectProperty(解释器.java:1200)
位于组织。stringtemplate。v4.解释器_exec(解释器:210)
组织。stringtemplate。v4.解释器。exec(解释器:145)
组织。stringtemplate。v4.ST.write(ST.java:427)位于
组织。stringtemplate。v4.ST.render(ST.java:497)位于
组织。克拉珀。scalasti。ST.render(ST.scala:285)位于
吉特8.G8美元。applyTemplate(g8.scala:102)位于
吉特8.G8美元。在giter8写入(g8.scala:154)。G8美元。写入(g8.scala:138)
吉特8.G8美元$anonfun$writeTemplates$3(g8.scala:396)位于
斯卡拉。util。控制例外$捕获$anonfun$opt$1(例外。scala:242)
在scala。util。控制例外$捕获。应用(异常。scala:224)于
斯卡拉。util。控制例外$捕获。opt(异常。scala:242)位于
吉特8.G8美元$anonfun$writeTemplates$2(g8.scala:396)位于
斯卡拉。收集不变的流动foreach(流量:530)
吉特8.G8美元。writeTemplates(g8.scala:386)位于
吉特8.G8美元$anonfun$applyT$1(g8.scala:257)位于
斯卡拉。util。美元RightProjection。平面图(scala:702)
吉特8.G8美元。applyT(g8,scala:249)at
吉特8.G8美元。fromDirectory(g8.scala:62)位于
giter8.JgitHelper美元$anonfun$运行$3(JgitHelper.scala:64)
斯卡拉。util。美元RightProjection。平面图(scala:702)
giter8.JgitHelper美元。运行(JgitHelper.scala:63)
giter8.giter8$anonfun$运行$2(giter8.scala:34),位于
斯卡拉。选项地图(可选比例:146)位于
giter8.giter8。运行(giter8.scala:33)
SBTGITER8分解器。Giter8TemplateResolver。运行(Giter8TemplateResolver.scala:31)
在太阳下。反映NativeMethodAccessorImpl。位于的invoke0(本机方法)
太阳反映NativeMethodAccessorImpl。调用(NativeMethodAccessorImpl.java:62)
在
太阳反映DelegatingMethodAccessorImpl。调用(DelegatingMethodAccessorImpl.java:43)
在java。lang.reflect。方法调用(Method.java:498)
sbt。TemplateCommandUtil$。调用(TemplateCommand.scala:100)
sbt。TemplateCommandUtil$。runTemplate(TemplateCommand.scala:78)位于
sbt。TemplateCommandUtil$$anonfun$run$1(TemplateCommand.scala:58)位于
sbt。TemplateCommandUtil$$anonfun$run$1$adapted(TemplateCommand.scala:54)
在
斯卡拉。收集LinearSEQ已优化。查找(LinearSeqOptimized。scala:111)
在
斯卡拉。收集LinearSEQ已优化。查找$(LinearSeqOptimized.scala:108)
在scala。收集不变的列表查找(列表scala:86)
sbt。TemplateCommandUtil$。运行(TemplateCommand.scala:54)
sbt。TemplateCommandUtil$。runTemplate(TemplateCommand.scala:41)位于
sbt。TemplateCommandUtil$$anonfun$templateCommand$2(templateCommand.scala:24)
在sbt。命令$$anonfun$applyEffect$4(命令scala:134)位于
sbt。命令$$anonfun$applyEffect$2(命令.scala:130)位于
sbt。MainLoop美元。processCommand(MainLoop.scala:153)位于
sbt。MainLoop美元$anonfun$下一个$2(MainLoop.scala:136)位于
sbt。州$$非1美元。runCmd$1(State.scala:242)位于
sbt。州$$非1美元。进程(状态:248)
sbt。MainLoop美元$anonfun$下一个$1(MainLoop.scala:136)位于
sbt。内部的util。错误处理$。wideConvert(错误处理。scala:16)
在sbt。MainLoop美元。下一个(MainLoop.scala:136)位于
sbt。MainLoop美元。运行(MainLoop.scala:129)
sbt。MainLoop美元$anonfun$runWithNewLog$1(MainLoop.scala:107)位于
sbt。io。使用。应用(使用.scala:22)于
sbt。MainLoop美元。在以下位置运行WithNewLog(MainLoop.scala:101)
sbt。MainLoop美元。runAndClearLast(主循环。scala:57)位于
sbt。MainLoop美元。runLoggedLoop(MainLoop.scala:42)位于
sbt。MainLoop美元。运行记录(MainLoop.scala:34)
sbt。StandardMain美元。运行管理(主规模:113)
sbt。xMain公司。运行(主刻度:76)
xsbt。靴子启动$$anonfun$运行$1。应用(启动scala:109)
xsbt。靴子启动$。withContextLoader(启动。scala:128)位于
xsbt。靴子启动$。运行(启动,scala:109)
xsbt。靴子启动$$anonfun$应用$1。应用(启动。scala:35)
xsbt。靴子启动$。发布时间(发布时间:117)
xsbt。靴子启动$。应用(启动。scala:18)
xsbt。靴子启动$。runImpl(Boot.scala:41)位于
xsbt。靴子启动$。main(启动scala:17)位于
xsbt。靴子靴子主(启动scala)
在giter8。G8$STErrorHandler。运行时错误(g8.scala:110)
G8$STErrorHandler。运行时错误(g8.scala:105)
组织。stringtemplate。v4.misc。ErrorManager。runTimeError(ErrorManager.java:137)
在
组织。stringtemplate。v4.解释器。getObjectProperty(解释器。java:1203)
位于组织。stringtemplate。v4.解释器_exec(解释器:210)
组织。stringtemplate。v4.解释器。exec(解释器:145)
组织。stringtemplate。v4.ST.write(ST.java:427)位于
组织。stringtemplate。v4.ST.render(ST.java:497)位于
组织。克拉珀。scalasti。ST.render(ST.scala:285)位于
吉特8.G8美元。applyTemplate(g8.scala:102)位于
吉特8.G8美元。在giter8写入(g8.scala:154)。G8美元。写入(g8.scala:138)
吉特8.G8美元$anonfun$writeTemplates$3(g8.scala:396)位于
斯卡拉。util。控制例外$捕获$anonfun$opt$1(例外。scala:242)
在scala。util。控制例外$捕获。应用(异常。scala:224)于
斯卡拉。util。控制例外$捕获。opt(异常。scala:242)位于
吉特8.G8美元$anonfun$writeTemplates$2(g8.scala:396)位于
斯卡拉。收集不变的流动foreach(流量:530)
吉特8.G8美元。writeTemplates(g8.scala:386)位于
吉特8.G8美元$anonfun$applyT$1(g8.scala:257)位于
斯卡拉。util。美元RightProjection。平面图(scala:702)
吉特8.G8美元。applyT(g8,scala:249)at
吉特8.G8美元。fromDirectory(g8.scala:62)位于
giter8.JgitHelper美元$anonfun$运行$3(JgitHelper.scala:64)
斯卡拉。util。美元RightProjection。平面图(scala:702)
giter8.JgitHelper美元。运行(JgitHelper.scala:63)
giter8.giter8$anonfun$运行$2(giter8.scala:34),位于
斯卡拉。选项地图(可选比例:146)位于
giter8.giter8。运行(giter8.scala:33)
SBTGITER8分解器。Giter8TemplateResolver。运行(Giter8TemplateResolver.scala:31)
在太阳下。反映NativeMethodAccessorImpl。位于的invoke0(本机方法)
太阳反映NativeMethodAccessorImpl。调用(NativeMethodAccessorImpl.java:62)
在
太阳反映DelegatingMethodAccessorImpl。调用(DelegatingMethodAccessorImpl.java:43)
在java。lang.reflect。方法调用(Method.java:498)
sbt。TemplateCommandUtil$。调用(TemplateCommand.scala:100)
sbt。TemplateCommandUtil$。runTemplate(TemplateCommand.scala:78)位于
sbt。TemplateCommandUtil$$anonfun$run$1(TemplateCommand.scala:58)位于
sbt。TemplateCommandUtil$$anonfun$run$1$adapted(TemplateCommand.scala:54)
在
斯卡拉。收集LinearSEQ已优化。查找(LinearSeqOptimized。scala:111)
在
斯卡拉。收集LinearSEQ已优化。查找$(LinearSeqOptimized.scala:108)
在scala。收集不变的列表查找(列表scala:86)
sbt。TemplateCommandUtil$。运行(TemplateCommand.scala:54)
sbt。TemplateCommandUtil$。runTemplate(TemplateCommand.scala:41)位于
sbt。TemplateCommandUtil$$anonfun$templateCommand$2(templateCommand.scala:24)
在sbt。命令$$anonfun$applyEffect$4(命令scala:134)位于
sbt。命令$$anonfun$applyEffect$2(命令.scala:130)位于
sbt。MainLoop美元。processCommand(MainLoop.scala:153)位于
sbt。MainLoop美元$anonfun$下一个$2(MainLoop.scala:136)位于
sbt。州$$非1美元。runCmd$1(State.scala:242)位于
sbt。州$$非1美元。进程(状态:248)
sbt。MainLoop美元$anonfun$下一个$1(MainLoop.scala:136)位于
sbt。内部的util。错误处理$。wideConvert(错误处理。scala:16)
在sbt。MainLoop美元。下一个(MainLoop.scala:136)位于
sbt。MainLoop美元。运行(MainLoop.scala:129)
sbt。MainLoop美元$anonfun$runWithNewLog$1(MainLoop.scala:107)位于
sbt。io。使用。应用(使用.scala:22)于
sbt。MainLoop美元。在以下位置运行WithNewLog(MainLoop.scala:101)
sbt。MainLoop美元。runAndClearLast(主循环。scala:57)位于
sbt。MainLoop美元。runLoggedLoop(MainLoop.scala:42)位于
sbt。MainLoop美元。运行记录(MainLoop.scala:34)
sbt。StandardMain美元。运行管理(主规模:113)
sbt。xMain公司。运行(主刻度:76)
xsbt。靴子启动$$anonfun$运行$1。应用(启动scala:109)
xsbt。靴子启动$。withContextLoader(启动。scala:128)位于
xsbt。靴子启动$。运行(启动,scala:109)
xsbt。靴子启动$$anonfun$应用$1。应用(启动。scala:35)
xsbt。靴子启动$。发布时间(发布时间:117)
xsbt。靴子启动$。应用(启动。scala:18)
xsbt。靴子启动$。runImpl(Boot.scala:41)位于
xsbt。靴子启动$。main(启动scala:17)位于
xsbt。靴子靴子主(启动scala)
我正在使用版本
0.11.0-M3
对于两者
g8
和
sbt-giter8
插件
如何解决此问题?
编辑:更多详细信息:
我正在使用sbt 1.1.1(用于g8项目和我机器上的sbt启动器)
我在文件中添加了g8项目中的插件
project/plugins.sbt
具有
addSbtPlugin("org.foundweekends.giter8" %% "sbt-giter8" % "0.11.0-M3")
如果我从模板中删除truthy零件,则项目将从中正确生成
sbt new
此问题已在sbt 1.2.0中修复
为了修复,应使用:
sbt -Dsbt.version=1.2.0 new file://proj.g8