最近在开发中遇到需要从Maven仓库下载Maven Artifact(GAV)的场景,遂有此篇小文。
目的
可以在应用程序中根据Maven坐标(GroupID,ArtifactID,Version,即GAV)从maven仓库中下载maven jar到本地。
Eclipse Aether项目
Eclipse 的Aether项目(Wiki)能够满足这个需求,不止于此,它还能同时下载某个GAV的所有传递性依赖的jar,能获取指定版本范围的所有GAV,能把本地的GAV deploy到远程Maven仓库,能显示GAV的依赖层级(Dependency Hierarchy),依赖树(Dependency Tree)。几乎就是把一个Maven发行版嵌入到你的应用程序中。下面用几个代码片段介绍下它的用法。
代码示例1:下载指定的Maven jar包
/**
*
* download the artifact.
*
* @param groupId
* @param artifactId
* @param version
* @param localRepositoryBaseDir 本地仓库目录,会下载到该目录
* @return
* @throws ArtifactResolutionException
* @since 1.0
*/
public static File downloadDirectDependency(String groupId, String artifactId, String version,
String localRepositoryBaseDir)
throws ArtifactResolutionException {
RepositorySystem system = Booter.newRepositorySystem();
RepositorySystemSession session =
Booter.newRepositorySystemSession