もくもくログ
主にIT 関連のメモをもくもくと綴っていきます
2021/01/23 ~ 2021/01/29 のもくもく日記 をご覧ください。
AndroidPreparation で開発したAndroid ライブラリは、bintray 経由でjCenter に公開してたりします。
今まではアップロードするためにxxx のGradle Plugin を使っていたのだけど、Deprecated になってしまったのですorz
なので、maven-publish を使った記述に書き直そうとしたのだけど、めっちゃハマったのでメモしてみる。
root のbuild.config はこんな感じ。
プラグインの導入と、変数の定義が主目的。
buildscript {
ext {
bintray_access_key = project.hasProperty('bintray_key') ? bintray_key : System.getenv('bintray_key')
bintray_access_user = project.hasProperty('bintray_user') ? bintray_user : System.getenv('bintray_user')
bintray_github = "https://github.com/TentaShion/AndroidPreparation"
bintray_group_id = "work.shion.androidpreparation"
bintray_repository = "maven"
(省略)
}
dependencies {
(省略)
// Bintray
classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.8.5'
}
repositories {
google()
jcenter()
}
}
(省略)
で、アップロードロジックは各モジュールのbuild.gradle に記述した。
plugins {
// Android
id 'com.android.library'
// Bintray
id 'com.jfrog.bintray'
// Maven
id 'maven-publish'
(省略)
}
// バージョン
def appver_major = 1
def appver_minor = 0
def appver_revision = 4
version = "${appver_major}.${appver_minor}.${appver_revision}"
// ライブラリ情報
archivesBaseName = "debugger"
android {
(省略)
}
bintray {
key = bintray_access_key
pkg {
licenses = ['MIT']
name = "${bintray_group_id}.${archivesBaseName}"
publicDownloadNumbers = true
repo = bintray_repository
vcsUrl = "${bintray_github}.git"
version {
name = project.version
released = new Date()
vcsTag = "Debugger_${project.version}"
}
websiteUrl = bintray_github
}
publications = ['release']
user = bintray_access_user
}
dependencies {
(省略)
}
afterEvaluate {
publishing {
publications {
release(MavenPublication) {
from components.release
groupId
artifactId archivesBaseName
version this.version
artifact javadocJar {
classifier = 'javadoc'
extension = 'jar'
}
artifact sourcesJar {
classifier = 'sources'
extension = 'jar'
}
pom.withXml {
def dependenciesNode = asNode().getAt('dependencies')[0] ?: asNode().appendNode('dependencies')
// Iterate over the implementation dependencies (we don't want the test ones), adding a <dependency> node for each
configurations.implementation.allDependencies.each {
// Ensure dependencies such as fileTree are not included.
if (it.name != 'unspecified') {
def dependencyNode = dependenciesNode.appendNode('dependency')
dependencyNode.appendNode('groupId', it.group)
dependencyNode.appendNode('artifactId', it.name)
dependencyNode.appendNode('version', it.version)
}
}
}
}
}
}
}
task javadoc(type: Javadoc) {
classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
excludes = ['**/*.kt']
source = android.sourceSets.main.java.srcDirs
}
task javadocJar(type: Jar, dependsOn: javadoc) {
from javadoc.destinationDir
}
task sourcesJar(type: Jar) {
from android.sourceSets.main.java.srcDirs
}
この実装は下記を参考にしたのだけど、それぞれからいいとこどりする必要があった。
afterEvaluate
内で記述する理由が書いてあるところこれでやっと終わったヽ(^o^)丿……と思った矢先、どうやらBintray, jCenter などはサービス終了するようだorz
Service End for Bintray, JCenter, GoCenter, and ChartCenter | JFrog
Jetpack Navigation で、自動生成されるDirections を使って
ダイアログ1を出す
ダイアログ1で許可されたら処理をする
ダイアログ2を出す
をやったみたら、ダイアログ1につられてダイアログ2も消えてしまったorz
しゃーないので、ダイアログ1を明示的に消してみたら、うまく動いた
(Kotlin のコレクション関数、多すぎじゃねw)
!any() って書いていたら、none() とかあってびびるw