maven - mvn 依赖项 :go-offline - how do you set params on the command line or at all

标签 maven maven-dependency-plugin

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

我试过这个

mvn dependency:go-offline -DexcludeGroupIds=com.example

我也尝试将它们设置在 pom.xmlsettings.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/

相关文章:

java - 使用maven依赖插件时如何删除子目录

maven - 在 Maven 中,我如何构建模块,而不是聚合器项目本身?

java - 不同文件中 Spring bean 的 Grails 配置

eclipse - org.eclipse.xtext.resource.FileNotFoundOnClasspathException : Couldn't find resource on classpath. URI 是 'classpath:/../Less.xtext'

java - Maven依赖插件下线未下载某些插件

由于执行顺序,将子用作模块时父中的 Maven 依赖管理失败

eclipse - 使 Eclipse 尊重 Maven-Dependency-Plugin

java - maven构建中找不到资源

java - 项目 'X' 缺少必需的 Java 项目 : 'Y'

maven - 如何使用目标 unpack-dependency 解压 maven-dependency-plugin 中子文件夹中的文件?