我想:
我能够生成源代码(上一个列表中的项目 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 源代码文件中。
最佳答案
如果您在 Frege 中的模块名称不合格,例如 HelloWorld
,您将看不到在 Java 中生成的 package 语句。模块名将成为类名,包为空或默认包。
如果您的模块名称是限定的,例如 foo.bar.HelloWorld
,然后 foo.bar
将是包名和HelloWorld
将是生成的 Java 源代码中的类名。
规则是模块名的最后一部分成为类名,而限定符在生成的 Java 源代码中形成包名。
关于ant - 使用 Gradle 构建 Frege 项目的 Jar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26705963/