mvn dependency:go-offline - 你如何在命令行上或根本不设置参数

Ale*_*502 13 maven maven-dependency-plugin

我想下载除了我自己的依赖项之外的所有东西,我还没有编译。我想我需要的是excludeGroupIds,但是如何在命令行上的https://maven.apache.org/plugins/maven-dependency-plugin/go-offline-mojo.html 中设置它或其他任何内容?

我试过这个

mvn dependency:go-offline -DexcludeGroupIds=com.example
Run Code Online (Sandbox Code Playgroud)

我也尝试将它们设置在pom.xmland 中settings.xml,但无法使它们产生任何效果。

man*_*uti 5

通过检查 maven-dependency-plugin 的代码,我很确定这是一个错误,因为过滤器不适用于go-offline. go-offline以下是解决mojo 实现中的依赖关系的代码(版本 3.1.3-SNAPSHOT):

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" );
}
Run Code Online (Sandbox Code Playgroud)

resolve在合同中,以下是解决mojo依赖关系的代码:

@Override
protected void doExecute()
    throws MojoExecutionException
{
    // get sets of dependencies
    results = this.getDependencySets( false, includeParents );

    ...
}
Run Code Online (Sandbox Code Playgroud)

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 ) ) );

    ...
Run Code Online (Sandbox Code Playgroud)

很明显,go-offline在解决依赖关系时,代码没有应用这些过滤器。因此,我插入了项目确认票:https://issues.apache.org/jira/browse/MDEP-725