我遇到一个奇怪的问题,即通过node-bintray包上传.pom
个文件会导致400。
所有其他文件上传功能都正常,我找不到任何可能解释为什么.pom
文件不同的文档。
正在上传的pom文件是com.github.dcendents.android-maven
gradle插件生成的文件。
以下是重现问题的代码示例:
const repository = new Bintray({
username: bintrayProps.BINTRAY_USER,
apikey: bintrayProps.BINTRAY_API_KEY,
organization: bintrayProps.BINTRAY_ORG,
repository: bintrayProps.BINTRAY_MAVEN_REPO
});
repository.uploadPackage('packageName', '1.0.0', './myPomFile.xml', 'my/group/artifactId/1.0.0/artifactId-1.0.0-myPomFile.pom', false);
错误消息如下:
无法上传文件:无法提取工件\'my / group / artifactId / 1.0.0 / artifactId-1.0.0-myPomFile.pom \'的元数据,内容可能格式错误。
示例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>my.group</groupId>
<artifactId>artifactId</artifactId>
<version>1.0.0</version>
<packaging>aar</packaging>
<name>MyPackage</name>
<url>http://my-site.io</url>
</project>
更改远程路径以获得任何其他扩展名会导致上传成功。
修改
更改了远程路径以匹配pom文件以排除该问题。
编辑2
我已将问题缩小到特定的文件路径......似乎只有在远程路径遵循上面my/group/artifactId/version/artifactId-version-myPomFile.pom
答案 0 :(得分:0)
我最终发现问题出在node-bintray
包中。该软件包使用multipart上传到bintray,但Bintray不接受这些文件,所有文件都被破坏了。
使用inputStream
包通过request
正常上传功能。
readStream = fs.createReadStream filePath
return request.put {
url: Bintray.apiBaseUrl + endpoint,
body: readStream,
headers: {
"Content-Type": mimeType
}
auth: {
user: @rest.options.username
pass: @rest.options.password
}
}
&#13;