hi folks i am using ```/** * Copyright © 2016-202...
# plugin-development
r
hi folks i am using
Copy code
/**
 * Copyright © 2016-2025 The Thingsboard Authors
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     <http://www.apache.org/licenses/LICENSE-2.0>
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
import org.apache.tools.ant.filters.ReplaceTokens

plugins {
    id "nebula.ospackage" version "8.6.3"
}

buildDir = projectBuildDir
version = projectVersion
distsDirName = "./"

// OS Package plugin configuration
ospackage {
    packageName = pkgName
    version = "${project.version}"
    release = 1
    os = LINUX
    type = BINARY

    into pkgInstallFolder

    user pkgUser
    permissionGroup pkgUser

    // Copy the actual .jar file
    from(mainJar) {
        // Strip the version from the jar filename
        rename { String fileName ->
            "${pkgName}.jar"
        }
        fileMode 0500
        into "bin"
    }

    if("${pkgCopyInstallScripts}".equalsIgnoreCase("true")) {
        // Copy the install files
        from("${buildDir}/bin/install/install.sh") {
            fileMode 0775
            into "bin/install"
        }

        from("${buildDir}/bin/install/upgrade.sh") {
            fileMode 0775
            into "bin/install"
        }

        from("${buildDir}/bin/install/logback.xml") {
            into "bin/install"
        }
    }

    // Copy the config files
    from("${buildDir}/conf") {
        exclude "${pkgName}.conf"
        fileType CONFIG | NOREPLACE
        fileMode 0754
        into "conf"
    }

    // Copy the data files
    from("${buildDir}/data") {
        fileType CONFIG | NOREPLACE
        fileMode 0754
        into "data"
    }

    // Copy the extensions files
    from("${buildDir}/extensions") {
        into "extensions"
    }
}

// Configure our RPM build task
buildRpm {

    arch = NOARCH

    archiveVersion = projectVersion.replace('-', '')
    archiveFileName = "${pkgName}.rpm"

    requires("(java-17 or java-17-headless or jre-17 or jre-17-headless)") // .or() notation does work in RPM plugin

    from("${buildDir}/conf") {
        include "${pkgName}.conf"
        filter(ReplaceTokens, tokens: ['pkg.platform': 'rpm'])
        fileType CONFIG | NOREPLACE
        fileMode 0754
        into "${pkgInstallFolder}/conf"
    }

    preInstall file("${buildDir}/control/rpm/preinst")
    postInstall file("${buildDir}/control/rpm/postinst")
    preUninstall file("${buildDir}/control/rpm/prerm")
    postUninstall file("${buildDir}/control/rpm/postrm")

    user pkgUser
    permissionGroup pkgUser

    // Copy the system unit files
    from("${buildDir}/control/template.service") {
        addParentDirs = false
        fileMode 0644
        into "/usr/lib/systemd/system"
        rename { String filename ->
            "${pkgName}.service"
        }
    }

    link("${pkgInstallFolder}/bin/${pkgName}.yml", "${pkgInstallFolder}/conf/${pkgName}.yml")
    link("/etc/${pkgName}/conf", "${pkgInstallFolder}/conf")
}

// Same as the buildRpm task
buildDeb {

    arch = "all"

    archiveFileName = "${pkgName}.deb"

    requires("openjdk-17-jre").or("java17-runtime").or("oracle-java17-installer").or("openjdk-17-jre-headless")

    from("${buildDir}/conf") {
        include "${pkgName}.conf"
        filter(ReplaceTokens, tokens: ['pkg.platform': 'deb'])
        fileType CONFIG | NOREPLACE
        fileMode 0754
        into "${pkgInstallFolder}/conf"
    }

    configurationFile("${pkgInstallFolder}/conf/${pkgName}.conf")
    configurationFile("${pkgInstallFolder}/conf/${pkgName}.yml")
    configurationFile("${pkgInstallFolder}/conf/logback.xml")
    configurationFile("${pkgInstallFolder}/conf/actor-system.conf")

    preInstall file("${buildDir}/control/deb/preinst")
    postInstall file("${buildDir}/control/deb/postinst")
    preUninstall file("${buildDir}/control/deb/prerm")
    postUninstall file("${buildDir}/control/deb/postrm")

    user pkgUser
    permissionGroup pkgUser

    // Copy the system unit files
    from("${buildDir}/control/template.service") {
        addParentDirs = false
        fileMode 0644
        into "/lib/systemd/system"
        rename { String filename ->
            "${pkgName}.service"
        }
    }

    link("${pkgInstallFolder}/bin/${pkgName}.yml", "${pkgInstallFolder}/conf/${pkgName}.yml")
    link("/etc/${pkgName}/conf", "${pkgInstallFolder}/conf")
}
build.gradle and encountering error
startup failed:
General error during conversion: Unsupported class file major version 69 while compiling i am using openjdk version 17 i need help in this i am running this on mac machine
t
"class file major version 69" is Java 25, so check that you're actually using JDK 17 (also check toolchains) BTW, this question doesn't seem to have anything to do with developing a Gradle plugin, so would have been better in the #CAHSN3LDN channel.
p
69 is Java 25, so you need Gradle 9.10. if you are not using Gradle 9.1.0, just use a lower JDK like 21
v
And please do not put such long snippets in the initial message, this makes it very hard to follow a channel, especially on mobile. Better write an inital descriptive message and add the long snippet within the thread.
💯 3