【发布时间】:2014-11-03 00:04:32
【问题描述】:
我想:
- 使用 Frege 编程语言编写一段简单的“Hello World”代码,
- 然后使用 Frege 编译器生成等效的 Java 源代码,
- 然后构建一个可执行的 Jar 文件以从命令行运行,
- 前面的所有步骤都应该由 Gradle “控制”。
我能够生成源代码(上一个列表中的项目 1. 和 2.),但我无法在输出中指定 Java 源代码的“包”结构,即我看不到packageJava 语句作为生成 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源代码文件中。
【问题讨论】:
标签: ant gradle executable-jar frege