Как сделать файл cat в сборке Gradle - PullRequest
0 голосов
/ 26 июня 2019

Я пытаюсь создать исполняемый файл программы для распространения моей Java-программы.Обычно я создаю этот файл, выполняя:

$ echo '#!/usr/bin/java -jar' > program
$ cat my-program.jar >> program
$ chmod +x program

Насколько я могу судить, Gradle должен иметь возможность производить распространение программного обеспечения.Я не уверен, распространяется ли это на выпуск операционной системы или это просто файлы, которые будут использоваться сопровождающими пакетов. как описано здесь

Я бы хотел иметь возможность подготовить дистрибутивные файлы Gradle для создания пакетов.Примерно так:


distributions
└── project_1.1-1
    └── Folder
        ├── control
        └── usr
            └── local
                └── bin
                    └── program

Пока я пробовал это в build.gradle:

distributions {
    write '#!/usr/bin/java -jar'
    into program
    Jar {
        from sourceSets.main.output
        dependsOn configurations.runtimeClasspath
        from {
            configurations.runtimeClasspath.findAll {
                it.name.endsWith('jar') }.collect { zipTree(it) }
            }
        }
    } into program
}

Ответы [ 2 ]

0 голосов
/ 26 июня 2019

Скорее всего, вам лучше создать работоспособный дистрибутив с помощью плагина приложения gradle, например, посмотрите следующие вопросы:

Иначе вы можете написать файл, аналогичныйэтот вопрос: создайте файл version.txt в каталоге проекта с помощью задачи build.gradle

task versionTxt()  {
    doLast {
        new File("$projectDir/version.txt").text = """
#!/usr/bin/java -jar
#...
"""
    }
}

и измените права доступа, как в этом , измените разрешение файла с помощью gradle

0 голосов
/ 26 июня 2019

Чтобы дублировать ваши echo команды, вам нужно всего лишь write имя файла JAR во второй строке program.Обратите внимание, что вы не создаете двоичный файл здесь.Скорее вы создаете bash-скрипт, который автоматически запускает интерпретатор java в вашем JAR-файле.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...