- 1,159
- 38
- 544
Здарова ребята. Опять этот градл кровь мою пьет. Задача - научить эту паскуду собирать всемодули как отдельные моды и выкладывать их на bintray. Причем сделать это хочется нормально - через
Вот лучшее что у меня получилоь сделать. Но case2 все равно публикуется с неправильной версией (вместо 0.4.0 должно быть 0.4.0_1.7.10):
case2 ведет себя очень странно. Поэтому я решил вырезать скрипт публикации из рутпроджекта и попробовать вставить его в build.gradle case2 и case1, чтобы сравнить вывод. И вот что мы имеем:
Как видите, артефакты не цепляются к публикации (но цепляются при таком же скрипте в рутпроджекте, факинщит). А дело тут в сраном afterEvaluate. Он нужен чтобы скрипт в рутпроджекте назначал имена, версии и артефакты публикациям только после того как подцепит их из билдскриптов-сабпроджектов. Убирает эту херню и получаем:
И опять косяк с версией. Косяк уходит только если вручную сменить version в case2 на нужную.
Вопрос вот в чем: ЧТО ЭТО ЗА ХЕРНЯ?! Как мне написать нормальный скрипт публикации, чтобы затем вынести его в отдельный файл?! Що это за говно такое вообще?! Уже больше месяца я ковыряюсь в этом дерьме вместо того чтобы писать софт. Я уже блть даже думаю над тем, чтобы сменить профессию. Или к гадалке сходить потому как инфа сотка это проклятие какое-то. Градлфорум молчит (хотя они те еще уроды, stackoverflow молчит, гугл молчит, доки молчат, исьюсы на гитхабе бинтрей-плагина молчат. Даже блть сраный форум лагает и хаотично меняет шрифты. Я уже на грани алкоголизма. Выручайте, пасаны.
allProjects { ... }
. Без дублирования скрипта публикации в каждом модуле.Вот лучшее что у меня получилоь сделать. Но case2 все равно публикуется с неправильной версией (вместо 0.4.0 должно быть 0.4.0_1.7.10):
root build.gradle:
buildscript { // Непонятно почему я не могу разделить этот блок на зависимости для всех проектов и на зависимости для рутпроект. Ругается на невозможность резолва
repositories {
jcenter()
mavenCentral()
maven {
name = "forge"
url = "http://files.minecraftforge.net/maven"
}
maven {
name = "sonatype"
url = "https://oss.sonatype.org/content/repositories/snapshots/"
}
maven {
url = "https://dl.bintray.com/rarescrap/minecraft"
}
}
dependencies {
classpath 'net.minecraftforge.gradle:ForgeGradle:1.2-SNAPSHOT'
classpath 'ru.rarescrap:depATs:1.0.0' // Для поиска трансформеров в зависимостях
classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.8.1' // 1.8.4 не юзается, т.к. он не работает нифига
}
}
allprojects {
repositories { // Вообще, этот реп нужен только в case2, но тогда рутпроект не может найти местонахождение configurabeweight
maven {
url = "https://dl.bintray.com/rarescrap/minecraft"
}
}
apply from: "$rootDir/gradle/mcforge.gradle"
group= "ru.rarescrap.weightapi"
// Подготавливает maven-публикацию, которая будет использоваться в bintray
// Именно тут определяются артефакты для публикации
apply plugin: 'maven-publish'
publishing {
// afterEvaluate {
publications {
"$project.name"(MavenPublication) {
afterEvaluate {
//from components.java // Артефакты по умолчанию. Отлючаем их, т.к. нам нужно артефакт main-модуля заменить на артефакт от api-модуля
groupId group
artifactId archivesBaseName
// version "0.4.0_1.7.10"
version "${project.version}_1.7.10"
artifact deobfJar
artifact sourcesJar
artifact javadocJar
}
}
}
// }
}
// Публикация либы в bintray/jcenter
apply plugin: 'com.jfrog.bintray'
bintray {
user = 'rarescrap'
key = "866f8da09ed3eaaaa3d982830bee4304173fb8d5" //System.getenv('BINTRAY_KEY')
publications = ["$project.name"]
dryRun = true
pkg {
repo = 'minecraft'
name = 'weight-api'
licenses = ['GPL-3.0']
vcsUrl = 'https://github.com/RareScrap/WeightAPI.git'
version {
afterEvaluate {
// name = "0.4.0_1.7.10"
name = "${project.version}_1.7.10"
released = new Date()
}
}
}
}
}
subprojects { // TODO: Forge дублируется в зависимостях с битым путем
dependencies {
compile rootProject
}
configurations { // TODO: Должен быть способ лучше эксклюдить кейсы в самих же кейсах. Что-то вроде "transitive = false"
runtimeOnly.exclude module: 'case1'
runtimeOnly.exclude module: 'case2'
}
}
version = "0.4.0"
//group= "ru.rarescrap.weightapi" // http://maven.apache.org/guides/mini/guide-naming-conventions.html
archivesBaseName = "weightapi"
def publicationVersion = version+'_1.7.10'
apply plugin: 'DepATs'
minecraft { at(DepATs.getDepATs()) } // Включаем трансформеры из зависимостей
dependencies {
// При запуске игры из рутпроекта сабпроджкты подлючатся как моды
runtimeOnly project(':case1')
runtimeOnly project(':case2')
}
Вывод [ICODE]gradlew bintrayUpload[/ICODE]:
C:\Users\yourmomgay\Desktop\WeightAPI>gradlew bintrayUpload
[QUOTE] Configure project :case1[/QUOTE]
Found AccessTransformer in main resources: weightapi_example1_at.cfg
[QUOTE] Configure project :case2[/QUOTE]
Found AccessTransformer in main resources: weightapi_example2_at.cfg
[QUOTE] Task :case1:bintrayUpload[/QUOTE]
Uploading to https://api.bintray.com/content/rarescrap/minecraft/weight-api/0.4.0_1.7.10/ru/rarescrap/weightapi/weightapi-case1/0.4.0_1.7.10/weightapi-case1-0.4.0_1.7.10-dev.jar...
Uploading to https://api.bintray.com/content/rarescrap/minecraft/weight-api/0.4.0_1.7.10/ru/rarescrap/weightapi/weightapi-case1/0.4.0_1.7.10/weightapi-case1-0.4.0_1.7.10-sources.jar...
Uploading to https://api.bintray.com/content/rarescrap/minecraft/weight-api/0.4.0_1.7.10/ru/rarescrap/weightapi/weightapi-case1/0.4.0_1.7.10/weightapi-case1-0.4.0_1.7.10-javadoc.jar...
Uploading to https://api.bintray.com/content/rarescrap/minecraft/weight-api/0.4.0_1.7.10/ru/rarescrap/weightapi/weightapi-case1/0.4.0_1.7.10/weightapi-case1-0.4.0_1.7.10.pom...
[QUOTE] Task :case2:bintrayUpload[/QUOTE]
Uploading to https://api.bintray.com/content/rarescrap/minecraft/weight-api/0.4.0/ru/rarescrap/weightapi/weightapi-case2/0.4.0_1.7.10/weightapi-case2-0.4.0_1.7.10-dev.jar...
Uploading to https://api.bintray.com/content/rarescrap/minecraft/weight-api/0.4.0/ru/rarescrap/weightapi/weightapi-case2/0.4.0_1.7.10/weightapi-case2-0.4.0_1.7.10-sources.jar...
Uploading to https://api.bintray.com/content/rarescrap/minecraft/weight-api/0.4.0/ru/rarescrap/weightapi/weightapi-case2/0.4.0_1.7.10/weightapi-case2-0.4.0_1.7.10-javadoc.jar...
Uploading to https://api.bintray.com/content/rarescrap/minecraft/weight-api/0.4.0/ru/rarescrap/weightapi/weightapi-case2/0.4.0_1.7.10/weightapi-case2-0.4.0_1.7.10.pom...
[QUOTE] Task :bintrayUpload[/QUOTE]
Uploading to https://api.bintray.com/content/rarescrap/minecraft/weight-api/0.4.0_1.7.10/ru/rarescrap/weightapi/weightapi/0.4.0_1.7.10/weightapi-0.4.0_1.7.10-dev.jar...
Uploading to https://api.bintray.com/content/rarescrap/minecraft/weight-api/0.4.0_1.7.10/ru/rarescrap/weightapi/weightapi/0.4.0_1.7.10/weightapi-0.4.0_1.7.10-sources.jar...
Uploading to https://api.bintray.com/content/rarescrap/minecraft/weight-api/0.4.0_1.7.10/ru/rarescrap/weightapi/weightapi/0.4.0_1.7.10/weightapi-0.4.0_1.7.10-javadoc.jar...
Uploading to https://api.bintray.com/content/rarescrap/minecraft/weight-api/0.4.0_1.7.10/ru/rarescrap/weightapi/weightapi/0.4.0_1.7.10/weightapi-0.4.0_1.7.10.pom...
BUILD SUCCESSFUL in 21s
40 actionable tasks: 12 executed, 28 up-to-date
case2 ведет себя очень странно. Поэтому я решил вырезать скрипт публикации из рутпроджекта и попробовать вставить его в build.gradle case2 и case1, чтобы сравнить вывод. И вот что мы имеем:
gradlew bintrayUpload:
C:\Users\DangerArea\Desktop\WeightAPI>gradlew bintrayUpload
[QUOTE] Configure project :case1[/QUOTE]
Found AccessTransformer in main resources: weightapi_example1_at.cfg
[QUOTE] Configure project :case2[/QUOTE]
Found AccessTransformer in main resources: weightapi_example2_at.cfg
[QUOTE] Task :case1:bintrayUpload[/QUOTE]
Uploading to https://api.bintray.com/content/rarescrap/minecraft/weight-api/0.4.0_1.7.10/ru/rarescrap/weightapi/case1/0.4.0/case1-0.4.0.pom...
[QUOTE] Task :case2:bintrayUpload[/QUOTE]
Uploading to https://api.bintray.com/content/rarescrap/minecraft/weight-api/0.4.0/ru/rarescrap/weightapi/case2/0.4.0/case2-0.4.0.pom...
BUILD SUCCESSFUL in 7s
7 actionable tasks: 7 executed
Как видите, артефакты не цепляются к публикации (но цепляются при таком же скрипте в рутпроджекте, факинщит). А дело тут в сраном afterEvaluate. Он нужен чтобы скрипт в рутпроджекте назначал имена, версии и артефакты публикациям только после того как подцепит их из билдскриптов-сабпроджектов. Убирает эту херню и получаем:
gradlew bintrayUpload:
C:\Users\DangerArea\Desktop\WeightAPI>gradlew bintrayUpload
[QUOTE] Configure project :case1[/QUOTE]
Found AccessTransformer in main resources: weightapi_example1_at.cfg
[QUOTE] Configure project :case2[/QUOTE]
Found AccessTransformer in main resources: weightapi_example2_at.cfg
[QUOTE] Task :case1:bintrayUpload[/QUOTE]
Uploading to https://api.bintray.com/content/rarescrap/minecraft/weight-api/0.4.0_1.7.10/ru/rarescrap/weightapi/weightapi-case1/0.4.0_1.7.10/weightapi-case1-0.4.0_1.7.10-dev.jar...
Uploading to https://api.bintray.com/content/rarescrap/minecraft/weight-api/0.4.0_1.7.10/ru/rarescrap/weightapi/weightapi-case1/0.4.0_1.7.10/weightapi-case1-0.4.0_1.7.10-sources.jar...
Uploading to https://api.bintray.com/content/rarescrap/minecraft/weight-api/0.4.0_1.7.10/ru/rarescrap/weightapi/weightapi-case1/0.4.0_1.7.10/weightapi-case1-0.4.0_1.7.10-javadoc.jar...
Uploading to https://api.bintray.com/content/rarescrap/minecraft/weight-api/0.4.0_1.7.10/ru/rarescrap/weightapi/weightapi-case1/0.4.0_1.7.10/weightapi-case1-0.4.0_1.7.10.pom...
[QUOTE] Task :case2:bintrayUpload[/QUOTE]
Uploading to https://api.bintray.com/content/rarescrap/minecraft/weight-api/0.4.0/ru/rarescrap/weightapi/weightapi-case2/0.4.0_1.7.10/weightapi-case2-0.4.0_1.7.10-dev.jar...
Uploading to https://api.bintray.com/content/rarescrap/minecraft/weight-api/0.4.0/ru/rarescrap/weightapi/weightapi-case2/0.4.0_1.7.10/weightapi-case2-0.4.0_1.7.10-sources.jar...
Uploading to https://api.bintray.com/content/rarescrap/minecraft/weight-api/0.4.0/ru/rarescrap/weightapi/weightapi-case2/0.4.0_1.7.10/weightapi-case2-0.4.0_1.7.10-javadoc.jar...
Uploading to https://api.bintray.com/content/rarescrap/minecraft/weight-api/0.4.0/ru/rarescrap/weightapi/weightapi-case2/0.4.0_1.7.10/weightapi-case2-0.4.0_1.7.10.pom...
BUILD SUCCESSFUL in 21s
34 actionable tasks: 9 executed, 25 up-to-date
Вопрос вот в чем: ЧТО ЭТО ЗА ХЕРНЯ?! Как мне написать нормальный скрипт публикации, чтобы затем вынести его в отдельный файл?! Що это за говно такое вообще?! Уже больше месяца я ковыряюсь в этом дерьме вместо того чтобы писать софт. Я уже блть даже думаю над тем, чтобы сменить профессию. Или к гадалке сходить потому как инфа сотка это проклятие какое-то. Градлфорум молчит (хотя они те еще уроды, stackoverflow молчит, гугл молчит, доки молчат, исьюсы на гитхабе бинтрей-плагина молчат. Даже блть сраный форум лагает и хаотично меняет шрифты. Я уже на грани алкоголизма. Выручайте, пасаны.