1. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

Компилирование плагина oraxen из исходников

Тема в разделе "Разработка плагинов для новичков", создана пользователем intervent, 8 дек 2023.

Статус темы:
Закрыта.
  1. Автор темы
    intervent

    intervent Активный участник Пользователь

    Баллы:
    61
    Имя в Minecraft:
    adamant
    Столкнулся с такой проблемой, что при компилировании плагина выдает какую-то ошибку -
    "The supplied phased action failed with an exception.
    A problem occurred configuring project ':core'.
    Build file 'C:\Users\Documents\GitHub\oraxen\core\build.gradle.kts' line: 56
    null cannot be cast to non-null type kotlin.String"
    Все попытки исправить были тщетны. Не совсем понимаю для чего там эта аутентификация в maven репозиторий, если я не выгружаю никуда плагин. Буду благодарен, если поможете разобраться как исправить эту ошибку
    код -
    Код:
    plugins {
        id("java")
        id("io.papermc.paperweight.userdev") version "1.5.6"
        id("maven-publish")
        alias(libs.plugins.shadowjar)
        id("org.ajoberstar.grgit.service") version "5.2.0"
    }
    
    val pluginVersion = project.property("pluginVersion") as String
    tasks {
        shadowJar.get().archiveFileName.set("oraxen-${pluginVersion}.jar")
        build.get().dependsOn(shadowJar)
    }
    
    dependencies {
        val actionsVersion = "1.0.0-SNAPSHOT"
        implementation("org.bstats:bstats-bukkit:3.0.0")
        implementation("dev.triumphteam:triumph-gui:3.1.5") { exclude("net.kyori") }
        implementation("io.th0rgal:protectionlib:1.3.6")
        implementation("com.github.stefvanschie.inventoryframework:IF:0.10.9")
        implementation("com.jeff-media:custom-block-data:2.2.2")
        implementation("com.jeff_media:MorePersistentDataTypes:2.4.0")
        implementation("com.jeff-media:persistent-data-serializer:1.0")
        implementation("gs.mclo:java:2.2.1")
        implementation("com.ticxo:PlayerAnimator:R1.2.8") { isChanging = true }
        implementation("org.jetbrains:annotations:24.0.1") { isTransitive = false }
    
        implementation("me.gabytm.util:actions-spigot:$actionsVersion") { exclude(group = "com.google.guava") }
        paperweight.paperDevBundle("1.20.2-R0.1-SNAPSHOT")
    }
    
    configurations.all {
        resolutionStrategy.cacheChangingModulesFor(0, "seconds")
    }
    
    java {
        toolchain.languageVersion.set(JavaLanguageVersion.of(17))
    }
    
    publishing {
        val publishData = PublishData(project)
        publications {
            create<MavenPublication>("maven") {
                groupId = rootProject.group.toString()
                artifactId = rootProject.name
                version = publishData.getVersion()
    
                from(components["java"])
            }
        }
    
        repositories {
            maven {
                authentication {
                    credentials(PasswordCredentials::class) {
                        username = System.getenv("MAVEN_USERNAME") ?: project.findProperty("oraxenUsername") as String
                        password = System.getenv("MAVEN_PASSWORD") ?: project.findProperty("oraxenPassword") as String
                    }
                    authentication {
                        create<BasicAuthentication>("basic")
                    }
                }
    
                url = uri(publishData.getRepository())
                name = "oraxen"
            }
        }
    }
    
    class PublishData(private val project: Project) {
        var type: Type = getReleaseType()
        var hashLength: Int = 7
    
        private fun getReleaseType(): Type {
            val branch = getCheckedOutBranch()
            println("Branch: $branch")
            return when {
                branch.contentEquals("master") -> Type.RELEASE
                branch.contentEquals("develop") -> Type.SNAPSHOT
                else -> Type.DEV
            }
        }
    
        private fun getCheckedOutGitCommitHash(): String =
            System.getenv("GITHUB_SHA")?.substring(0, hashLength) ?: "local"
    
        private fun getCheckedOutBranch(): String =
            System.getenv("GITHUB_REF")?.replace("refs/heads/", "") ?: grgitService.service.get().grgit.branch.current().name
    
        fun getVersion(): String = getVersion(false)
    
        fun getVersion(appendCommit: Boolean): String =
            type.append(getVersionString(), appendCommit, getCheckedOutGitCommitHash())
    
        private fun getVersionString(): String =
            (rootProject.version as String).removeSuffix("-SNAPSHOT").removeSuffix("-DEV")
    
        fun getRepository(): String = type.repo
    
        enum class Type(private val append: String, val repo: String, private val addCommit: Boolean) {
            RELEASE("", "https://repo.oraxen.com/releases/", false),
            DEV("-DEV", "https://repo.oraxen.com/development/", true),
            SNAPSHOT("-SNAPSHOT", "https://repo.oraxen.com/snapshots/", true);
    
            fun append(name: String, appendCommit: Boolean, commitHash: String): String =
                name.plus(append).plus(if (appendCommit && addCommit) "-".plus(commitHash) else "")
        }
    }
     

    Вложения:

    • error.png
      error.png
      Размер файла:
      125,7 КБ
      Просмотров:
      24
  2. Dymeth

    Dymeth Активный участник Пользователь

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    Ну ты не выгружаешь, а вот разработчик плагина благодаря этому публикует релизы в гитхабе. Просто удали секцию publishing, и скрипт сборки должен заработать.
    Если не поможет, то удали maven-publish из списка плагинов вместе с классом PublishData
     
    Последнее редактирование: 8 дек 2023
  3. Автор темы
    intervent

    intervent Активный участник Пользователь

    Баллы:
    61
    Имя в Minecraft:
    adamant
    Спасибо. Это помогло, но почему-то в логах сборки обнаружил, что проект пытается обратиться к библиотекам по неверным путям, например, 'C:\Users\G\Desktop\libs\compile\BSP.jar', в то время как правильный путь 'C:\Users\G\Desktop\oraxen-master\libs\compile\BSP.jar'. На одну папку назад берет.

    Ошибки -
    Код:
    The container 'Project and External Dependencies' references non existing library 'C:\Users\G\Desktop\libs\compile\BSP.jar'
    
    The declared package "io.th0rgal.oraxen.nms.v1_19_R2" does not match the expected package "io.th0rgal.oraxen.nms.v1_19_R2"
    
    The declared package "io.th0rgal.oraxen.nms.v1_19_R3" does not match the expected package "io.th0rgal.oraxen.nms.v1_19_R3"
    
    The project cannot be built until build path errors are resolved
    
     

    Вложения:

    • error.png
      error.png
      Размер файла:
      141,6 КБ
      Просмотров:
      9
    Последнее редактирование: 9 дек 2023
  4. Dymeth

    Dymeth Активный участник Пользователь

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    В Gradle сборка почти всегда в /build/libs

    Как решать проблему в Эклипсе - ХЗ, сам пользуюсь Идеей
     
  5. imDaniX

    imDaniX Активный участник Пользователь

    Баллы:
    96
    Имя в Minecraft:
    imDaniX
    Замени содержимое core\build.gradle.kts на такое
    PHP:
    plugins {
        
    id("java")
        
    id("io.papermc.paperweight.userdev"version "1.5.6"
        
    alias(libs.plugins.shadowjar)
    }

    val pluginVersion project.property("pluginVersion") as String
    tasks 
    {
        
    shadowJar.get().archiveFileName.set("oraxen-${pluginVersion}.jar")
        
    build.get().dependsOn(shadowJar)
    }

    dependencies {
        
    val actionsVersion "1.0.0-SNAPSHOT"
        
    implementation("org.bstats:bstats-bukkit:3.0.0")
        
    implementation("dev.triumphteam:triumph-gui:3.1.5") { exclude("net.kyori") }
        
    implementation("io.th0rgal:protectionlib:1.3.6")
        
    implementation("com.github.stefvanschie.inventoryframework:IF:0.10.9")
        
    implementation("com.jeff-media:custom-block-data:2.2.2")
        
    implementation("com.jeff_media:MorePersistentDataTypes:2.4.0")
        
    implementation("com.jeff-media:persistent-data-serializer:1.0")
        
    implementation("gs.mclo:java:2.2.1")
        
    implementation("com.ticxo:PlayerAnimator:R1.2.8") { isChanging true }
        
    implementation("org.jetbrains:annotations:24.0.1") { isTransitive false }

        
    implementation("me.gabytm.util:actions-spigot:$actionsVersion") { exclude(group "com.google.guava") }
        
    paperweight.paperDevBundle("1.20.2-R0.1-SNAPSHOT")
    }

    configurations.all {
        
    resolutionStrategy.cacheChangingModulesFor(0"seconds")
    }

    java {
        
    toolchain.languageVersion.set(JavaLanguageVersion.of(17))
    }
    Компилировать можешь без Eclipse/другой IDE - просто запускаешь "gradlew.bat build" из терминала.
     
  6. Автор темы
    intervent

    intervent Активный участник Пользователь

    Баллы:
    61
    Имя в Minecraft:
    adamant
    Спасибо, желанный результат достигнут. В целом всем благодарность, что помогли) На винде по прежнему не компилировалось, мб руки кривые.. А на линуксе все прекрасно собрало
     

    Вложения:

    • 24.jpg
      24.jpg
      Размер файла:
      12 КБ
      Просмотров:
      21
    Последнее редактирование: 11 дек 2023
Статус темы:
Закрыта.

Поделиться этой страницей