java程序获取外部java程序的控件_java – 以编程方式解析插件外的Maven依赖项 – 获取RepositorySystemSession和RepositorySystem...

也许这将是一个比我最初想到的更大的任务,但不管我试图从一个文件加载一个MavenProject,然后解决它的依赖.我有两个代码,但我缺少一些我需要的对象引用;具体来说我需要获取RepositorySystemSession和RepositorySystem的实例.任何提示?

注意:我用maven-plugin标记了这个问题,但这不是一个Maven插件.我很高兴地要求Maven 3(认为我已经有了..)

以下是我到目前为止的代码:

构建MavenProject:

public static MavenProject loadProject(File pomFile) throws Exception

{

MavenProject ret = null;

MavenXpp3Reader mavenReader = new MavenXpp3Reader();

if (pomFile != null && pomFile.exists())

{

FileReader reader = null;

try

{

reader = new FileReader(pomFile);

Model model = mavenReader.read(reader);

model.setPomFile(pomFile);

ret = new MavenProject(model);

}

finally

{

// Close reader

}

}

return ret;

}

解决依赖关系:

public static List getArtifactsDependencies(MavenProject project, String dependencyType, String scope) throws Exception

{

DefaultArtifact pomArtifact = new DefaultArtifact(project.getId());

RepositorySystemSession repoSession = null; // TODO

RepositorySystem repoSystem = null; // TODO

List remoteRepos = project.getRemoteProjectRepositories();

List ret = new ArrayList();

Dependency dependency = new Dependency(pomArtifact, scope);

CollectRequest collectRequest = new CollectRequest();

collectRequest.setRoot(dependency);

collectRequest.setRepositories(remoteRepos);

DependencyNode node = repoSystem.collectDependencies(repoSession, collectRequest).getRoot();

DependencyRequest projectDependencyRequest = new DependencyRequest(node, null);

repoSystem.resolveDependencies(repoSession, projectDependencyRequest);

PreorderNodeListGenerator nlg = new PreorderNodeListGenerator();

node.accept(nlg);

ret.addAll(nlg.getDependencies(true));

return ret;

}

我知道这可能是一个不寻常的要求,也许我应该只是废弃我正在做的事情,并把它作为一个插件包装…但我只是想完成我现在开始!提前致谢.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值