我正在为Android构建一个aar
库,我正面临着一个问题。不上传POM和ARR文件。
有一个错误
跳过上传丢失文件'F:\ Android \ Personal_Project \ sampleMavenLib \ sinalib \ build \ outputs \ aar \ sinalib-release.aar'。跳过上传丢失文件'F:\ Android \ Personal_Project \ sampleMavenLib \ sinalib \ build \ publications \ Production \ pom-default.xml'。
我检查了这两个路径和aar文件在那里,它生成但没有任何路径的pom文件
这是我的傻瓜
apply plugin: 'com.android.library'
apply plugin: 'com.jfrog.bintray'
apply plugin: 'maven-publish'
android {
compileSdkVersion 28
defaultConfig {
minSdkVersion 17
targetSdkVersion 28
versionCode 1
versionName "1.0.2"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.github.dcendents:android-maven-gradle-plugin:1.4.1'
classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.7.3'
}
}
ext {
bintrayRepo = 'maven'
bintrayName = 'sinalib'
publishedGroupId = 'come.sinarahimi.sinalib'
libraryName = 'Sinalib'
artifact = 'sinalib'
libraryDescription = 'This view is a container that supports diagonal scroll and fling gesture. It is based on AOSP HorizontalScrollView.'
siteUrl = 'https://github.com/Sinarahimi/sampleMavenLib'
gitUrl = 'https://github.com/Sinarahimi/sampleMavenLib.git'
libraryVersion = '1.0.2'
developerId = 'sinarahimi'
developerName = 'Sina RAHIMI'
developerEmail = '[email protected]'
licenseName = 'The Apache Software License, Version 2.0'
licenseUrl = 'http://www.apache.org/licenses/LICENSE-2.0.txt'
allLicenses = ["Apache-2.0"]
}
publishing {
publications {
Production(MavenPublication) {
artifact("$buildDir/outputs/aar/sinalib-release.aar")
groupId publishedGroupId
artifactId artifact
version libraryVersion
//The publication doesn't know about our dependencies, so we have to manually add them to the pom
pom.withXml {
def dependenciesNode = asNode().appendNode('dependencies')
//Iterate over the compile dependencies (we don't want the test ones), adding a <dependency> node for each
configurations.compile.allDependencies.each {
def dependencyNode = dependenciesNode.appendNode('dependency')
dependencyNode.appendNode('groupId', it.group)
dependencyNode.appendNode('artifactId', it.name)
dependencyNode.appendNode('version', it.version)
}
}
}
}
bintray {
// Get Bintray credential from environment variable
Properties properties = new Properties()
properties.load(project.rootProject.file('local.properties').newDataInputStrea(
))
user = properties.getProperty('user')
key = properties.getProperty('apikey')
override = true
pkg {
repo = bintrayRepo
name = project.name
userOrg = 'sinara'
licenses = allLicenses
desc = libraryDescription
websiteUrl = siteUrl
vcsUrl = gitUrl
version {
name = libraryVersion
}
publish = true
}
publications = ['Production']
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:28.0.0-rc02'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
}
}
在我尝试了很多东西后,我发现了两点:
1 - 我改变了这个
artifact("$buildDir/outputs/aar/sinalib-release.aar")
至
artifact("build/outputs/aar/sinalib-release.aar")
2 - 您在bintray.com中创建的存储库应与pkg
部分中的存储库相同。
这解决了错误Skipping upload for missing file
并上传了arr文件。但仍然存在一个错误,即它无法上传并生成pom
文件。
所以我找到了这个命令:
clean build generatePomFileForProductionPublication bintrayUpload
这对我有用,但仍然有一个问题,将依赖项添加到pom虽然我有这个代码它不起作用:
//The publication doesn't know about our dependencies, so we have to manually add them to the pom
pom.withXml {
def dependenciesNode = asNode().appendNode('dependencies')
//Iterate over the compile dependencies (we don't want the test ones), adding a <dependency> node for each
configurations.compile.allDependencies.each {
def dependencyNode = dependenciesNode.appendNode('dependency')
dependencyNode.appendNode('groupId', it.group)
dependencyNode.appendNode('artifactId', it.name)
dependencyNode.appendNode('version', it.version)
}
尝试generatePomFileForReleasePublication或publishReleasePublicationToMavenLocal。
完整的表述是:
./gradlew clean build generatePomFileForReleasePublicationbintrayUpload -PbintrayUser=<BINTRAY_USER> -PbintrayKey=<BINTRAY_KEY> -PdryRun=false