[英]Programatically getting an effective POM using Maven Resolver Provider
我想以編程方式獲取該POM文件的有效POM。 具體來說,我想做以下事情:
我不需要獲得傳遞依賴。
我正在使用Maven Resolver Provider 。 但是我必須使用包私有類org.apache.maven.repository.internal.DefaultModelResolver
這里有一個GitHub鏈接到您可以運行的示例Maven項目: https : //github.com/sahilm/maven-resolver-test
示例程序執行以下操作:
您可以運行該程序: mvn exec:java -Dexec.mainClass="com.sahilm.maven_resolver_test.Test"
您可以在包中創建(在您的項目中)公共類: org.apache.maven.repository.internal
,它擴展了package-accessibility類。 只需使用供應商無法在furutre中使用的類名。
package org.apache.maven.repository.internal;
public class VisibleDefaultModelResolver extends DefaultModelResolver{
public VisibleDefaultModelResolver(RepositorySystemSession session, RequestTrace trace, String context, ArtifactResolver resolver, VersionRangeResolver versionRangeResolver, RemoteRepositoryManager remoteRepositoryManager, List<RemoteRepository> repositories) {
super(session, trace, context, resolver, versionRangeResolver, remoteRepositoryManager, repositories);
}
}
然后你的代碼變成:
ModelResolver modelResolver = new VisibleDefaultModelResolver(session, requestTrace, "context", artifactResolver, versionRangeResolver, remoteRepositoryManager, repos);
也許你可以使用ProjectModelResolver
。 這是一段代碼片段,
DefaultRepositorySystem repositorySystem =
new DefaultRepositorySystem();
repositorySystem.initService(locator);
ModelResolver modelResolver =
new ProjectModelResolver(session, requestTrace,
repositorySystem, remoteRepositoryManager, repos,
ProjectBuildingRequest.RepositoryMerging.POM_DOMINANT,
null);
我在這里包含了一個有效的代碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.