Hi. I need to publish all of my project to bintray. I wrote this:
allprojects { p ->
// Подготавливает maven-публикацию, которая будет использоваться в bintray
// Именно тут определяются артефакты для публикации
apply plugin: 'maven-publish'
publishing {
publications {
"$p.archivesBaseName"(MavenPublication) {
//from components.java // Артефакты по умолчанию. Отлючаем их, т.к. нам нужно артефакт main-модуля заменить на артефакт от api-модуля
afterEvaluate {
groupId p.group
artifactId p.archivesBaseName
version p.version + "_1.7.10"
artifact p.deobfJar
artifact p.sourcesJar
artifact p.javadocJar
println(p.group)
println(p.archivesBaseName)
println(p.version)
println(p)
}
}
}
}
// Публикация либы в bintray/jcenter
apply plugin: 'com.jfrog.bintray'
bintray {
user = 'rarescrap'
key = System.getenv('BINTRAY_KEY')
publications = [p.archivesBaseName]
println(p.archivesBaseName)
pkg {
repo = 'minecraft'
name = 'weight-api'
licenses = ['GPL-3.0']
vcsUrl = 'https://github.com/RareScrap/WeightAPI.git'
version {
name = p.version+"_1.7.10"
released = new Date()
}
}
}
}
and everything nice, but my root project doesn’t publish. Just creates maven-metadata and pom file without any artifact. I think publication doesn’t create for root project - multiple println confirm that. How can i fix it?
Full 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 plugin: 'forge'
minecraft {
version = "1.7.10-10.13.4.1614-1.7.10"
runDir = "eclipse"
}
processResources {
// this will ensure that this task is redone when the versions change.
inputs.property "version", project.version
inputs.property "mcversion", project.minecraft.version
// replace stuff in mcmod.info, nothing else
from(sourceSets.main.resources.srcDirs) {
include 'mcmod.info'
// replace version and mcversion
expand 'version':project.version, 'mcversion':project.minecraft.version
}
// copy everything else, thats not the mcmod.info
from(sourceSets.main.resources.srcDirs) {
exclude 'mcmod.info'
}
}
// Собираем бинарник мода без обфускации. Рабочий вариант, в отличие от оф. доков из ForgeGradle
task deobfJar(type: Jar) {
classifier "dev"
from sourceSets.main.output
}
// Формирует jar'ник с доками
task javadocJar(type: Jar, dependsOn: javadoc) {
classifier = 'javadoc'
from javadoc.destinationDir
}
// Формирует jar'ник с исходниками
task sourcesJar(type: Jar, dependsOn: classes) {
classifier = 'sources'
from sourceSets.main.allSource
}
// Чтоб idea смогла запаковать ресурсы в джарник
idea { module { inheritOutputDirs = true } }
// Поддержка руских букв в доках
javadoc { options.encoding = 'UTF-8' }
// Устраняет ошибки и предупреждения компиляции из-за русских комментов
tasks.withType(JavaCompile) { options.encoding = 'UTF-8' }
version = "0.4.0"
group= "ru.rarescrap.weightapi"
}
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"
apply plugin: 'DepATs'
minecraft { at(DepATs.getDepATs()) } // Включаем трансформеры из зависимостей
dependencies {
// При запуске игры из рутпроекта сабпроджкты подлючатся как моды
runtimeOnly project(':case1')
runtimeOnly project(':case2')
}
allprojects { p ->
// Подготавливает maven-публикацию, которая будет использоваться в bintray
// Именно тут определяются артефакты для публикации
apply plugin: 'maven-publish'
publishing {
publications {
"$p.archivesBaseName"(MavenPublication) {
//from components.java // Артефакты по умолчанию. Отлючаем их, т.к. нам нужно артефакт main-модуля заменить на артефакт от api-модуля
afterEvaluate {
groupId p.group
artifactId p.archivesBaseName
version p.version + "_1.7.10"
artifact p.deobfJar
artifact p.sourcesJar
artifact p.javadocJar
println(p.group)
println(p.archivesBaseName)
println(p.version)
println(p)
}
}
}
}
// Публикация либы в bintray/jcenter
apply plugin: 'com.jfrog.bintray'
bintray {
user = 'rarescrap'
key = System.getenv('BINTRAY_KEY')
publications = [p.archivesBaseName]
println(p.archivesBaseName)
pkg {
repo = 'minecraft'
name = 'weight-api'
licenses = ['GPL-3.0']
vcsUrl = 'https://github.com/RareScrap/WeightAPI.git'
version {
name = p.version+"_1.7.10"
released = new Date()
}
}
}
}
settings.gradle:
include 'case1', 'case2'
project(":case1").projectDir = file("examples/case1")
project(":case2").projectDir = file("examples/case2")