我想下载除了我自己的依赖项之外的所有东西,我还没有编译。我想我需要的是excludeGroupIds
,但我如何设置它,或在 https://maven.apache.org/plugins/maven-dependency-plugin/go-offline-mojo.html 中的任何其他内容在命令行上?
我试过这个
mvn dependency:go-offline -DexcludeGroupIds=com.example
我也尝试将它们设置在
pom.xml
和 settings.xml
,并不能使它们产生任何效果。
最佳答案
通过检查 maven-dependency-plugin 的代码,我很确定这是一个错误,因为过滤器不适用于 go-offline
.这是在 go-offline
mojo implementation 中解析依赖关系的代码(版本 3.1.3-快照):
protected Set<Artifact> resolveDependencyArtifacts()
throws DependencyResolverException
{
final Collection<Dependency> dependencies = getProject().getDependencies();
final Set<DependableCoordinate> dependableCoordinates = new HashSet<>();
final ProjectBuildingRequest buildingRequest = newResolveArtifactProjectBuildingRequest();
for ( Dependency dependency : dependencies )
{
dependableCoordinates.add( createDependendableCoordinateFromDependency( dependency ) );
}
return resolveDependableCoordinate( buildingRequest, dependableCoordinates, "dependencies" );
}
在契约(Contract)中,这里是解析 resolve
mojo 的依赖关系的代码。 :@Override
protected void doExecute()
throws MojoExecutionException
{
// get sets of dependencies
results = this.getDependencySets( false, includeParents );
...
}
AbstractDependencyFilterMojo:protected DependencyStatusSets getDependencySets( boolean stopOnFailure, boolean includeParents )
throws MojoExecutionException
{
// add filters in well known order, least specific to most specific
FilterArtifacts filter = new FilterArtifacts();
filter.addFilter( new ProjectTransitivityFilter( getProject().getDependencyArtifacts(),
this.excludeTransitive ) );
filter.addFilter( new ScopeFilter( DependencyUtil.cleanToBeTokenizedString( this.includeScope ),
DependencyUtil.cleanToBeTokenizedString( this.excludeScope ) ) );
filter.addFilter( new TypeFilter( DependencyUtil.cleanToBeTokenizedString( this.includeTypes ),
DependencyUtil.cleanToBeTokenizedString( this.excludeTypes ) ) );
filter.addFilter( new ClassifierFilter( DependencyUtil.cleanToBeTokenizedString( this.includeClassifiers ),
DependencyUtil.cleanToBeTokenizedString( this.excludeClassifiers ) ) );
filter.addFilter( new GroupIdFilter( DependencyUtil.cleanToBeTokenizedString( this.includeGroupIds ),
DependencyUtil.cleanToBeTokenizedString( this.excludeGroupIds ) ) );
filter.addFilter( new ArtifactIdFilter( DependencyUtil.cleanToBeTokenizedString( this.includeArtifactIds ),
DependencyUtil.cleanToBeTokenizedString( this.excludeArtifactIds ) ) );
...
很明显go-offline
的代码解决依赖项时不应用这些过滤器。所以我插入了一个项目的票来确认:https://issues.apache.org/jira/browse/MDEP-725
关于maven - mvn 依赖项 :go-offline - how do you set params on the command line or at all,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51113813/