[英]How to resolve maven dependencies inside the maven plugin?
Im trying to use ArtifactResolver.resolve(ArtifactResolutionRequest) with flag resolveTransitively=true and it takes 10min for separated module of my project. 我正在尝试使用带有标志resolveTransitively = true的 ArtifactResolver.resolve(ArtifactResolutionRequest) ,并且我的项目的单独模块需要10分钟。
ArtifactResolutionRequest request = new ArtifactResolutionRequest()
.setArtifact( project.getArtifact() )
.setArtifactDependencies( project.getDependencyArtifacts() )
.setLocalRepository( localRepository )
.setManagedVersionMap( project.getManagedVersionMap() )
.setForceUpdate(false)
.setResolveTransitively(true)
.setOffline(true)
.setListeners(listeners);
result = artifactResolver.resolve(request);
If i just build it with mvn it takes ~4sec. 如果我只是用mvn构建它,大约需要4秒。
How maven resolve all transitive dependencies before compile and how to use it in code? Maven如何在编译之前解决所有传递依赖关系,以及如何在代码中使用它?
//The separate module of project heavily use parents, import dependencies and finally have 350 dependency artifacts. //项目的单独模块大量使用父项,导入依赖项,最后有350个依赖项。 So may it be what maven build cuts some processing steps or ArtifactResolver do something additionally?
那么这可能是Maven构建削减了某些处理步骤还是ArtifactResolver额外做了一些事情?
This is the code I use to resolve an artifact and get a File reference to it: 这是我用来解析工件并获得文件引用的代码:
// get maven artifact representing this mojo artifact
org.apache.maven.artifact.Artifact ma = ...; // create artifact reference
// resolve the maven artifact
try {
resolver.resolve(ma, remoteRepositories, localRepository );
} catch (ArtifactNotFoundException ex) {
throw new MojoExecutionException("could not find deploy artifact ["+a+"]", ex);
} catch (ArtifactResolutionException ex) {
throw new MojoExecutionException("could not resolve deploy artifact ["+a+"]", ex);
}
File maFile = ma.getFile();
The repositories references are class-level attributes which are resolved via dependency inject in maven. 存储库引用是类级别的属性,可通过maven中的依赖项注入来解析。 You just need to declare them in your class:
您只需要在您的类中声明它们:
/**
* @parameter default-value="${localRepository}"
* @readonly
* @required
*/
protected ArtifactRepository localRepository;
/**
* @parameter default-value="${project.remoteArtifactRepositories}"
* @readonly
* @required
*/
protected java.util.List<ArtifactRepository> remoteRepositories;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.