1

我有以下构建脚本,我需要强制目录权限并创建一个空目录。我在很多地方发现以下代码应该可以工作,但事实并非如此。有什么提示有什么问题吗?

buildscript {
    dependencies {
        classpath 'com.netflix.nebula:gradle-ospackage-plugin:4.8.0'
    }
    repositories {
        jcenter()
    }
}
apply plugin: 'nebula.ospackage'

ospackage {
    def userName = 'myapp'
    def userRoot = 'root'
    preInstall "id -u ${userName} &>/dev/null || useradd ${userName}"

    packageName = "myapp"
    version = project.version
    release = '40'
    arch = NOARCH
    os = LINUX

    user = userRoot
    permissionGroup = userName

    directory('/opt/myapp/aaa', 0750) //directory not created
    from("src/config") {
        into('/opt/myapp/etc')
        dirMode 0750 // directory in RPM has drwxr-xr-x
    }

    requires("shadow-utils", "4.1.5.1", 0x04|0x08)
}

build.dependsOn(buildRpm)

经过更多调查,这似乎是一个错误,我在 Nebula GitHub 中创建了一个问题

4

1 回答 1

1

我很确定该构造在闭包directory()中不起作用。ospackage您必须添加一个Rpm类型闭包才能执行此操作。

请参阅文档的 Rpm 部分此票证

apply plugin: 'nebula.rpm'

task fooRpm(type: Rpm) {
    directory('/opt/myapp/aaa', 0750)
}

如果您想要一个 Debian 软件包,请使用相同的软件包,但在type:Deb 块中

于 2018-05-07T14:13:38.810 回答