我想:建築用搖籃
- 使用弗雷格的編程語言來編寫一個簡單的「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