node {
    try {
        stage('Checkout Project') {
            checkout scm
        }

        stage('Check Environment') {
            sh 'mvn -v'
            sh 'java -version'
        }

        stage('Clean and Package') {
            sh 'mvn clean package'
        }

        stage('Reload Daemon') {
            // Replace the password with a secure method if possible
            sh "echo 'manM3423M' | sudo -S systemctl daemon-reload"
        }

        stage('Start Daemon') {
            sh "echo 'manM3423M' | sudo -S systemctl start server"
        }

        stage('Enable Daemon') {
            sh "echo 'manM3423M' | sudo -S systemctl enable server"
        }

        stage('Restart Daemon') {
            sh "echo 'manM3423M' | sudo -S systemctl restart server"
        }
    } catch (Exception e) {
        // Log error and rethrow for visibility in Jenkins
        echo "Build failed: ${e.getMessage()}"
        throw e
    }
}