有一个中央存储库指南,其中有一个关于上传项目的部分可能会有所帮助。如果不出意外,您可以根据您的项目检查命名约定和最少的信息要求。
Sonatype 也做 OSS Repository 托管,详见他们的指南。
更新:我并不是说你应该改变你的构建过程——如果 Ant 适合你的话,就坚持下去。无论您的构建方法如何,都值得在您的 POM 中遵循 Maven 约定。由于将 jar 放入 Maven 存储库是为了让 Maven 用户可以访问它,因此您需要为已发布的工件定义 POM。遵循命名约定将对您的用户有所帮助,因此您不妨这样做。例如,将 SCM 详细信息添加到 pom 将(除其他外)允许您的用户使用 Maven 的 IDE 集成将项目导入他们的工作区。
基本上,您有 4 个选项:
- 针对 Maven 存储库执行标准 Maven 构建(已排除)
- 设置 Maven 存储库,使用 Ant 进行构建,并使用 Maven 部署 jar 和 POM。
- 设置 Maven 存储库,使用 Ant HTTP 任务发布工件
- 使用 Subversion “存储库”,并使用 SvnAnt 任务发布工件
选项1
使用 Maven 构建和部署工件(有关详细信息,请参阅Maven 书和上面的链接)。
选项 2
假设您有一个创建 jar 的构建过程,并且您已经定义了 POM,那么最好的办法是将其发布到上面的 Sonatype OSS 存储库。
使用 Maven 部署插件的 deploy-file 目标,将现有 jar 部署到标准 Maven 存储库很简单:
- 设置您的存储库(例如,通过提出Jira 请求在 Sonatype 服务器上)
- 用 Ant 构建你的 jar。
- 如果你已经定义了一个 POM,把它和 jar 放在同一个目录下。
运行部署文件目标:
mvn deploy:deploy-file -Durl= http://path/to/your/repository \ -DrepositoryId=some.id \ -Dfile=path-to-your-artifact-jar \ -DpomFile=path-to-your- pom.xml
请注意,Maven 部署目标会自动将 pom.xml 转换为 [project-name]-[version].pom。如果您正在执行其他两个替代方案中的任何一个,则需要确保使用最终名称提交 POM,即 [project-name]-[version].pom。您还需要确保按照 Maven 约定编写工件的相对路径。
例如,对于 groupId=com.foo.bar、artifactId=my-project version=1.0.0,文件的路径将是:
/com/foo/bar/my-project/my-project-1.0.0.jar
/com/foo/bar/my-project/my-project-1.0.0.pom
选项 3
如果您想使用 Ant 部署到 Maven 存储库,可以使用Ant HTTP 库(注意我自己没有尝试过)。您将编写两个 HTTP put 任务,一个用于 jar,一个用于 POM。
<httpput url="http://path/to/your/repository" putFile="/path/to/yourproject.pom">
<userCredentials username="user" password="password"/>
</httpput>
<httpput url="http://path/to/your/repository" putFile="/path/to/yourproject.jar">
<userCredentials username="user" password="password"/>
</httpput>
选项 4
如果您想完全避免使用 Maven 并使用 Ant 部署到 SVN 支持的存储库,您可以使用SvnAnt Subversion 库。您只需配置Svn 导入任务即可将您的工件添加到远程 Subversion 存储库。
<import path ="/dir/containing/the/jar/and/pom"
url="svn://your/svn/repository"
message="release"/>