我想:建筑用摇篮
- 使用弗雷格的编程语言来编写一个简单的“Hello World”的一段代码,
- 然后使用弗雷格编译器生成等效的Java源代码,
- 然后构建一个可执行的Jar文件从命令行运行,
- 所有先前的步骤应该由Gradle“控制”。
我能够生成源代码(上一个列表中的项目1和2),但我不能在输出中指定Java源代码的“包”结构,即我可以没有看到package
Java语句作为生成Java源代码中的第一行代码。我可以向Frege编译器指定放置生成代码的位置(通过参数-d
)。
我认为这就是为什么当构建一个可执行Jar,然后启动它时,我看到类似的错误(根据对Gradle任务的不同尝试),例如:no main manifest attribute
。
将Frege源代码保存在名为HelloFrege.fr
的文件中,生成的Java源代码位于名为HelloFrege.java
的文件中(我验证该文件包含预期的main
方法)。
这里还有的摇篮“jar任务”的一个版本:
//create a single Jar with all dependencies
task fatJar(type: Jar) {
manifest {
attributes 'Implementation-Title': 'Hello Frege Jar Example',
'Implementation-Version': version,
'Main-Class': 'HelloFrege'
}
baseName = project.name + '-all'
from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } }
with jar
}
这里还有的摇篮“罐”任务的另一个版本:
jar {
manifest {
attributes 'Main-Class': 'HelloFrege'
}
}
我怎样才能解决这个问题?我想避免手动将包引用添加到自动生成的Java源代码文件。
但是请注意,你不能在一般的使用-j标志。例如,当A依赖于B时,编译器A编译器将需要B的类文件。 – Ingo 2014-11-04 08:08:01