maven.plugin.classpath 和 maven.runtime.classpath 有什么区别

What is the difference between maven.plugin.classpath and maven.runtime.classpath

Maven 识别 4 个类路径:

问题:

实际上,你错了,但我找不到任何明确说明这一点的文档。

这 4 个属性由 maven-antrun-plugin and are not part of Maven itself. From Referencing the Maven Classpaths:

定义

You can also use these classpath references:

  • maven.compile.classpath
  • maven.runtime.classpath
  • maven.test.classpath
  • maven.plugin.classpath

此插件创建了这 4 个属性,以便 Ant 任务可以引用它们。如果你看一下 at the source code,你会发现这些属性是在哪里创建的,复制到这里以供参考

Path p = new Path( antProject );
p.setPath( StringUtils.join( mavenProject.getCompileClasspathElements().iterator(), File.pathSeparator ) );

/* maven.dependency.classpath it's deprecated as it's equal to maven.compile.classpath */
antProject.addReference( "maven.dependency.classpath", p );
antProject.addReference( "maven.compile.classpath", p );

p = new Path( antProject );
p.setPath( StringUtils.join( mavenProject.getRuntimeClasspathElements().iterator(), File.pathSeparator ) );
antProject.addReference( "maven.runtime.classpath", p );

p = new Path( antProject );
p.setPath( StringUtils.join( mavenProject.getTestClasspathElements().iterator(), File.pathSeparator) );
antProject.addReference( "maven.test.classpath", p );

/* set maven.plugin.classpath with plugin dependencies */
antProject.addReference( "maven.plugin.classpath", getPathFromArtifacts( pluginArtifacts, antProject ) );

通过分析这段代码,可以得出以下结论:

  • maven.compile.classpath 对应于范围为 compile.
  • 的类路径元素
  • maven.runtime.classpath 对应于范围为 runtime.
  • 的类路径元素
  • maven.test.classpath 对应于范围为 test.
  • 的类路径元素
  • maven.plugin.classpath对应maven-antrun-plugin本身的依赖。