当前位置: 首页 > 知识库问答 >
问题:

mvn依赖:离线-如何在命令行上或根本上设置参数

虞安康
2023-03-14

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

我试过这个

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

我也试着在pom中设置它们。xml和设置。xml,无法使其产生任何效果。

共有1个答案

甄正信
2023-03-14

通过检查maven dependency插件的代码,我很确定这是一个bug,因为过滤器没有被应用于离线。以下是解决离线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" );
}

在契约中,下面是解析解决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 ) ) );

    ...

很明显,在解决依赖关系时,离线的代码没有应用这些过滤器。所以我插入了一张项目票来确认:https://issues.apache.org/jira/browse/MDEP-725

 类似资料:
  • 我想在Android设备上运行一些需要根权限的命令。这些命令应该使用java代码执行,因此应用程序本身应该能够运行这些命令,而不需要将设备连接到个人电脑并使用shell运行这些命令。 我使用了,然后使用了我想要运行的命令(chmod 666)。chmod666需要一个根设备才能正常运行,因此我尝试先使用获得超级用户权限,然后尝试运行它。我将java代码放在onCreate方法中。这是我的密码: 但

  • 问题内容: 我想向正在处理的类中添加一些log.debug语句,并且希望在运行测试时在输出中看到它。我想在命令行上覆盖log4j属性,如下所示: 我经常做这种事情。我特别只对在命令行上传递它的方式感兴趣。我知道如何使用配置文件进行操作,但这不适合我的工作流程。 问题答案: log4j不直接支持此功能。 由于您不希望使用配置文件,因此很可能使用编程配置。我建议您考虑扫描所有系统属性,并根据此内容显式

  • 问题内容: 我试图在Windows 7 64位的Netbeans 7.1 Java项目中设置命令行参数。 Netbeans没有传递我给它的参数。 我转到-> -> ->并在“自变量”旁边键入自变量,但是自变量未传递到程序。我如何通过他们? 问题答案: 我猜您正在使用(或shift-F6)而不是运行文件。NetBeans 7.1帮助文件(F1是您的朋友!)说明Arguments参数: 添加参数以在应

  • 问题内容: 我正在尝试在bigquery的查询中使用命名参数。 我懂了 有什么办法可以在biquery上设置命名参数? 问题答案: BigQuery仅通过使用标准SQL的API而非Web UI支持命名参数。您可以在“运行参数化查询”部分中了解有关它们的信息。如果您对查询参数的Web UI支持感兴趣,可以在问题跟踪器上为功能请求加注星标。

  • 问题内容: 可以在调用“ java jar jar_name.jar”时指定要使用的JVM。我的机器上安装了两个JVM。我无法更改JAVA_HOME,因为它可能会破坏所有准备就绪的代码。 亲切的问候 史提芬 问题答案: 是的-仅显式提供java.exe的路径。例如: 对于正在运行的命令外壳,最简单的方法是: 例如,这是一个完整的会话,显示我的默认JVM,然后是路径的更改,然后是新的: 但是,这不会

  • 今天我和jenv一起玩,将Java1.8设置为全局版本,将1.7设置为本地项目。此后,mvn命令在全局位置显示为java版本12- 而Java版本显示如预期- 我试图卸载和安装maven通过sdkman再次,在Mac上。虽然它没有新鲜下载。我仍然得到同样的错误。 我该怎么解决这个问题?