Maven识别4个类路径:
maven.compile.classpath: 编译源代码时需要在类路径上的类和jar。所以基本上对于maven-compiler-plugin
maven.test.classpath:运行单元测试或集成测试时需要在类路径上的类和jar
maven.runtime.classpath: 我知道maven.runtime.classpath包含了maven本身需要运行的jar和类。
maven.plugin.classpath: 我知道当插件运行它自己的JVM时,这个类路径会传递给maven插件
问题:
答案 0 :(得分:2)
实际上,你错了,但我找不到明确说明这一点的文件。
这4个属性由maven-antrun-plugin
定义,不属于Maven本身。来自Referencing the Maven Classpaths:
您也可以使用这些类路径引用:
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
本身的依赖关系。