【问题标题】:How to do cat file in gradle build如何在gradle build中做cat文件
【发布时间】:2019-06-25 21:43:22
【问题描述】:

我正在尝试制作一个可执行程序文件来分发我的 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
}

【问题讨论】:

  • 您的echo 命令创建一个包含两行的文本文件,而不是二进制文件。这与您在 build.gradle 文件中尝试执行的操作不同。

标签: java gradle build.gradle


【解决方案1】:

您可能更应该使用 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 那样更改权限

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-11-14
      • 2015-08-13
      • 1970-01-01
      • 2019-09-14
      • 2020-12-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多