我是 android 开发新手,正在尝试通过 BinTray 将一个基本测试库(我正在构建用于学习目的)部署到 JCenter 和 MavenCentral。我已通过 BinTray 成功部署到 JCenter,但未能成功继续部署到 MavenCentral。
下面是我得到的 MavenCentral REST API 错误:
HTTP/1.1 400 Bad Request [messages:[Invalid POM: /pro/johnfoley/androidTesting/testlibrary/1.0.5/testlibrary-1.0.5.pom: Project name missing, Project description missing, Project URL missing, License information missing, SCM URL missing, Developer information missing, Dropping existing partial staging repository.], status:Validation Failed]
11:45:57 AM: External task execution finished 'bintrayUpload'.
这是我的 build.gradle:
apply plugin: 'com.android.library'
apply plugin: 'com.jfrog.bintray'
apply plugin: 'com.github.dcendents.android-maven'
description = 'A test library'
group = 'pro.johnfoley.androidTesting'
version = '1.0.5'
buildscript {
repositories {
jcenter()
mavenCentral()
}
apply plugin: 'maven'
apply plugin: 'maven-publish'
}
android {
compileSdkVersion 23
buildToolsVersion "23.0.3"
defaultConfig {
minSdkVersion 18
targetSdkVersion 23
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.4.0'
}
// Generate source JAR
task generateSourcesJar(type: Jar) {
from android.sourceSets.main.java.srcDirs
classifier 'sources'
}
// Generate JavaDocs and JavaDocs JAR
task generateJavadocs(type: Javadoc) {
source = android.sourceSets.main.java.srcDirs
classpath += project.files(android.getBootClasspath()
.join(File.pathSeparator))
}
task generateJavadocsJar(type: Jar) {
from generateJavadocs.destinationDir
classifier 'javadoc'
}
generateJavadocsJar.dependsOn generateJavadocs
artifacts
{
archives generateSourcesJar
archives generateJavadocsJar
}
def bintrayUser = 'BT_USER'
def bintrayApiKey = 'BT_KEY'
def bintrayGPGPassword = 'BT_PW'
def mavenCentralToken = 'MC_TOKEN'
def mavenCentralPassword = 'MC_PW'
// BinTray config
bintray
{
user = bintrayUser
key = bintrayApiKey
pkg
{
repo = 'maven'
name = 'pro.johnfoley.androidTesting.testlibrary'
desc = ''
licenses = ['Apache-2.0']
vcsUrl = 'https://github.com/johnlfoleyiii/androidTesting.git'
issueTrackerUrl = 'https://github.com/johnlfoleyiii/androidTesting/issues'
websiteUrl = 'https://github.com/johnlfoleyiii/androidTesting'
labels = []
publicDownloadNumbers = true
version {
name = '1.0.5-testlibrary'
desc = 'My test library'
released = new Date()
vcsTag = 'v1.0'
gpg {
sign = true
passphrase = bintrayGPGPassword
}
mavenCentralSync {
sync = true //Optional (true by default). Determines whether to sync the version to Maven Central.
user = mavenCentralToken
password = mavenCentralPassword
close = '1' //Optional property. By default the staging repository is closed and artifacts are released to Maven Central. You can optionally turn this behaviour off (by puting 0 as value) and release the version manually.
}
}
}
configurations = ['archives']
}
这是从 build.gradle 生成的 POM:
<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<groupId>pro.johnfoley.androidTesting</groupId>
<artifactId>testlibrary</artifactId>
<version>1.0.5</version>
<packaging>aar</packaging>
<dependencies>
<dependency>
<groupId>com.android.support</groupId>
<artifactId>appcompat-v7</artifactId>
<version>23.4.0</version>
<scope>compile</scope>
</dependency>
</dependencies>
</project>
如何配置 build.gradle 以通过 BinTray 成功部署到 MavenCentral?