gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:16:17 25 4
gpt4 key购买 nike

Maven 识别 4 个类路径:

  • maven.compile.classpath:编译源代码时需要在类路径中的类和 jar。所以基本上对于 maven-compiler-plugin

  • maven.test.classpath:运行单元测试或集成测试时需要在类路径上的类和 jar

  • maven.runtime.classpath:我了解到 maven.runtime.classpath 包含 jar 和 maven 本身需要运行的类。

  • maven.plugin.classpath:我知道当插件运行它自己的 JVM 时,这个类路径被传递给 maven 插件

问题:

  • 我说得对吗?
  • 插件是编译类路径的超集吗?
  • 是编译类路径的测试超集吗?
  • 当插件运行它自己的 JVM - 什么是类路径传递给它?
  • 有这方面的文档吗?

最佳答案

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

这 4 个属性由 maven-antrun-plugin 定义并且不是 Maven 本身的一部分。来自 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本身的依赖。

关于java - maven.plugin.classpath 和 maven.runtime.classpath 有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34902288/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com