Я хотел бы:Построения баночки проекта Фрега с использованием Gradle
- использовать язык программирования Фреге написать простой «Hello World» кусок кода,
- затем с помощью компилятору Фрега, порождающим эквивалентный исходный код Java,
- , а затем создание исполняемого файла Jar для запуска из командной строки,
- все предыдущие шаги должны быть «контролируемы» Gradle.
Я могу сгенерировать исходный код (элементы 1 и 2. из предыдущего списка), но я не могу указать структуру пакета исходного кода Java на выходе, то есть я могу не видеть инструкцию Java package
как первую строку кода в генерации исходного кода Java. Я могу указать компилятор Фреге, куда поместить сгенерированный код (через аргумент -d
).
Я думаю, что это причина, почему при создании исполняемого Jar, а затем его запуск, я вижу похожие ошибки (в соответствии с различными попытками задач Gradle), например: no main manifest attribute
.
Фрег исходный код сохраняется в файл с именем 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 {
manifest {
attributes 'Main-Class': 'HelloFrege'
}
}
Как я могу решить эту проблему? Я хотел бы избежать, чтобы вручную добавить ссылку на пакет для автоматически созданного файла исходного кода Java.
Заметим, однако, что вы не можете использовать флаг -j в целом. Например, когда A зависит от B, тогда компилятору понадобится файл класса B при компиляции A. – Ingo