2016-01-20 5 views
2

Maven распознает 4: пути к классамВ чем разница между maven.plugin.classpath и maven.runtime.classpath

  • maven.compile.classpath: Классы и банки, которые должны быть на пути к классам при компиляции исходные коды. Поэтому в основном для Maven-компилятора-плагин

  • maven.test.classpath: Классы и банки, которые должны быть на пути к классам при выполнении модульных тестов или интеграции тесты

  • maven.runtime.classpath: я понял, что maven.runtime.classpath содержит банки и классы, которые необходимо запустить maven.

  • maven.plugin.classpath: я понял, что это путь к классам перейти к Maven плагин, когда плагин работает его собственный JVM

Вопросы:

  • Я прав?
  • Является ли расширение плагина для компиляции classpath?
  • Является ли надмножество тестов для компиляции classpath?
  • Когда плагин запускает свою собственную JVM - что это за классный путь ?
  • Есть ли документация по этому вопросу?

ответ

1

На самом деле, у вас есть это неправильно, но я не могу найти документацию, в которой говорится об этом явно.

Эти 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 соответствует элементам классаpath, которые имеют область compile.
  • maven.runtime.classpath соответствует элементам классаpath, которые имеют область действия runtime.
  • maven.test.classpath соответствует элементам классаpath, которые имеют область test.
  • maven.plugin.classpath соответствует зависимостям самого maven-antrun-plugin.
Смежные вопросы