通过node-bintray

时间:2017-10-10 13:31:01

标签: android node.js maven pom.xml bintray

我遇到一个奇怪的问题,即通过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

的结构时才会重现

1 个答案:

答案 0 :(得分:0)

我最终发现问题出在node-bintray包中。该软件包使用multipart上传到bintray,但Bintray不接受这些文件,所有文件都被破坏了。

使用inputStream包通过request正常上传功能。

&#13;
&#13;
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;
&#13;
&#13;