如何在gradle构建中执行cat文件

时间:2019-06-25 21:43:22

标签: java gradle build.gradle

我正在尝试制作一个可执行程序文件来分发我的Java程序。通常我会通过运行以下命令来制作该文件:

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

据我所知,Gradle应该能够发行软件。我不确定这是否扩展到发布操作系统版本,还是仅仅是包维护人员要使用的文件。 as covered here

我希望能够让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 :(得分:0)

要复制echo命令,只需要将write的JAR文件名作为program中的第二行。请注意,您不是在这里创建二进制文件。而是要创建一个bash脚本,该脚本会在JAR文件中自动运行java解释器。

答案 1 :(得分:0)

您可能应该使用gradle应用程序插件创建可运行的发行版,例如看到以下问题:

否则,您可以编写类似于以下问题的文件:create version.txt file in project dir via build.gradle task

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

并像这样change file permission by gradle

中更改权限