MavenProject getArtifacts 在从父级调用时在模块上返回不同的列表



在Mojo中,我需要扫描模块的所有依赖项,其中它是一个插件,为此我使用mavenProject.getArtifacts()。如果我直接构建模块,这工作正常,所以不是从父级,而只是在 de 模块的目录中调用"mvn 干净的包"。在这种情况下,我得到了该模块的所有依赖项。

但是,如果我构建整个项目,那么当构建到达模块时,我会得到一组完全不同的依赖项。我不明白为什么。插件在模块的pom中定义。

MavenProject通过以下方式在Mojo中获得:

@Parameter(readonly = true, defaultValue = "${project}")
private MavenProject mavenProject;

当然包括:

requiresDependencyResolution = ResolutionScope.COMPILE_PLUS_RUNTIME

如果我直接构建模块,我会得到这个:

Examining jar:file:/C:/Users/tbeuge/.m2/repository/com/planon-fm/planonee/PlanonUX/201501.0.33.0/PlanonUX-201501.0.33.0.jar!/model.xml
Examining jar:file:/C:/Users/tbeuge/.m2/repository/com/planon/tms/scheduler/SchedulerService/1.1.2/SchedulerService-1.1.2.jar!/model.xml
Examining jar:file:/C:/Users/tbeuge/.m2/repository/org/mockito/mockito-core/2.12.0/mockito-core-2.12.0.jar!/model.xml
Examining jar:file:/C:/Users/tbeuge/.m2/repository/com/google/guava/guava/23.6-jre/guava-23.6-jre.jar!/model.xml
Examining jar:file:/C:/Users/tbeuge/.m2/repository/nl/planon/querybuilder/querybuilder-api-impl/3.0.4/querybuilder-api-impl-3.0.4.jar!/model.xml
Examining jar:file:/C:/Users/tbeuge/.m2/repository/com/planon/tms/lib/sx/sx-utils201210/2.1.0/sx-utils201210-2.1.0.jar!/model.xml
Examining jar:file:/C:/Users/tbeuge/.m2/repository/nl/planon/querybuilder/querybuilder-api/1.2.0/querybuilder-api-1.2.0.jar!/model.xml
Examining jar:file:/C:/Users/tbeuge/.m2/repository/com/planonsoftware/hades/17.0.4.9-1/hades-17.0.4.9-1.jar!/model.xml
Examining jar:file:/C:/Users/tbeuge/.m2/repository/junit/junit/4.12/junit-4.12.jar!/model.xml
Examining jar:file:/C:/Users/tbeuge/.m2/repository/com/planon/tms/myclient/myclient-shared/1/myclient-shared-1.jar!/model.xml

如果模块是作为整个项目的一部分构建的,我会得到:

Examining jar:file:/C:/Users/tbeuge/.m2/repository/org/mockito/mockito-core/2.12.0/mockito-core-2.12.0.jar!/model.xml
Examining jar:file:/C:/Users/tbeuge/.m2/repository/junit/junit/4.12/junit-4.12.jar!/model.xml
Examining jar:file:/C:/Users/tbeuge/.m2/repository/org/apache/commons/commons-lang3/3.7/commons-lang3-3.7.jar!/model.xml

谁能解释为什么我对同一个模块有不同的依赖项?

休息的眼睛:问题不在于注入的MavenProject,而在于处理它的自定义URLStreamHandler。处理程序处理了一个"classpath:/path/to/resource"URI,这样的处理程序需要在URL.setURLStreamHandlerFactory中注册,并且只要JVM处于活动状态,就只允许调用该方法一次。Mojo 类每次都会实例化,甚至每次都会调用静态 {},因此注册调用在第一次 Mojo 实例化后失败。捕获了关联的异常,但这种情况不是很明显,因为处理程序是使用 lambda 内联编写的。

无论如何,它将工件jars列表处理程序进程锁定到Mojo的第一个实例化。

现在有一种方法可以解决这个问题。需要以某种方式从第一个实例化桥接到实例变量......

相关内容

  • 没有找到相关文章

最新更新