我想:
- 使用 Frege 编程语言编写一段简单的“Hello World”代码,
- 然后使用 Frege 编译器生成等效的 Java 源代码,
- 然后构建一个可执行的 Jar 文件以从命令行运行,
- 前面的所有步骤都应该由 Gradle “控制”。
我能够生成源代码(上一个列表中的第 1 项和第 2 项),但我无法在输出中指定 Java 源代码的“包”结构,即我看不到package
Java 语句为生成Java源代码中的第一行代码。我可以向 Frege 编译器指定将生成的代码放在哪里(通过-d
参数)。
我认为这就是为什么在构建可执行 Jar,然后启动它时,我看到类似错误(根据 Gradle 任务的不同尝试)的原因,例如:no main manifest attribute
.
Frege 源代码保存在一个名为 的文件HelloFrege.fr
中,生成的 Java 源代码在一个名为的文件HelloFrege.java
中(我验证该文件包含预期的main
方法)。
这是 Gradle“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
}
这里有另一个版本的 Gradle “Jar” 任务:
jar {
manifest {
attributes 'Main-Class': 'HelloFrege'
}
}
我怎么解决这个问题?我想避免手动将包引用添加到自动生成的 Java 源代码文件中。