在互联网上有很多关于如何/是否可以将二进制文件部署到 Maven Central 的相互矛盾的信息。因为我想避免将它们隐藏在 JAR 中,所以我找到了建议使用 POM 目标然后使用 codehaus 插件来部署所需二进制文件的指南:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<packaging>pom</packaging>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>1.8</version>
<executions>
<execution>
<id>attach-artifacts</id>
<phase>package</phase>
<goals>
<goal>attach-artifact</goal>
</goals>
<configuration>
<artifacts>
<artifact>
<file>mybinary.so</file>
<type>so</type>
</artifact>
</artifacts>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
我使用以下 ANT 任务上传二进制文件:
<target name="stage" depends="" description="deploy release version to Maven staging repository">
<artifact:mvn>
<arg value="org.apache.maven.plugins:maven-gpg-plugin:1.3:sign-and-deploy-file" />
<arg value="-Durl=${ossrh-staging-repository-url}" />
<arg value="-DrepositoryId=${ossrh-server-id}" />
<arg value="-DpomFile=pom.xml" />
<arg value="-Dfile=mybinary.so" />
<arg value="-Pgpg" />
</artifact:mvn>
</target>
当我运行任务时,我可以看到我的二进制上传和 SUCCESS 返回消息,但是当我登录并检查 OSS 控制面板时,我的上传只包含 POM 文件。
有什么线索吗?有成功案例吗?最后为什么这么难,对我来说,在 pypi 之后,Ivy 已经太复杂了,但 Maven 似乎更糟糕。