2010-10-17 2 views
3

Я хотел бы сгенерировать файл pathpath из зависимостей pom.xml. Мне это нужно так, во время тестов у меня есть путь к классам всех зависимостей (которые впоследствии упакованы в связке)Создание файла classpath с Maven

maven-dependency-plugin меня не устраивает по двум причинам:

  • он генерирует пути к файлам в хранилище, поэтому для использования других модулей им сначала нужно запустить фазу install (я хотел бы иметь такие пути, как /some/root/othermodule/target/classes)
  • он не включает собственный путь артефакта (target/classes), что означает, что мне нужно добавить его позже в код, который неудобен

Так я ищу другой плагин (или как правильно запустить maven-dependency-plugin)

+0

Путь к классам для теста автоматически генерируется. Итак, где конкретная проблема? Или вы говорите о каком-то интеграционном тесте вместо модульного теста? (Multimodule build?) – khmarbaise

+0

В одном компоненте я создаю ClassLoader для другого. В производстве classpath является lib/*, но при тестировании я не хочу проходить упаковку – IttayD

ответ

2

Я закончил с использованием GMaven:

 <plugin> 
      <groupId>org.codehaus.groovy.maven</groupId> 
      <artifactId>gmaven-plugin</artifactId> 
      <executions> 
       <execution> 
        <phase>generate-resources</phase> 
        <goals> 
         <goal>execute</goal> 
        </goals> 
        <configuration> 
         <source> 
          def all = project.runtimeArtifacts.collect{ 
           def aid = "${it.groupId}:${it.artifactId}:${it.version}" 
           def p = project.projectReferences[aid] 
           p?.build?.outputDirectory ?: it.file.path 
          } + project.build.outputDirectory 
          def file = new File(project.build.directory, ".classpath") 
          file.write(all.join(File.pathSeparator)) 
         </source> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 

код является немного сложным, так как я хотел пути к цели/классы когда возможно. Если это не требуется, можно сделать:

file.write(project.runtimeClasspathElements.join(File.pathSeparator)) 
Смежные вопросы