2015-11-29 2 views
1

В моем проекте я приложил Викисклада lang3 плагину и Обще-ю к проекту:Как сканировать зависимость плагина maven?

<build> 
    <plugins> 
     <plugin> 
      <groupId>@[email protected]</groupId> 
      <artifactId>@[email protected]</artifactId> 
      <version>@[email protected]</version> 
       (...) 
      <dependencies> 
       <dependency> 
        <groupId>org.apache.commons</groupId> 
        <artifactId>commons-lang3</artifactId> 
        <version>3.4</version> 
       </dependency> 
      </dependencies> 
     </plugin> 
    </plugins> 
</build> 
<dependencies> 
    <dependency> 
     <groupId>commons-io</groupId> 
     <artifactId>commons-io</artifactId> 
     <version>2.4</version> 
    </dependency> 
</dependencies> 

В моей настраиваемого плагин (в пределах моей харизмы), я могу найти Викисклада ИО

@Component 
private MavenProject project; 
(...) 
project.getDependecies(); // [{groupId=commons-io, artifactId=commons-io... 

Как найти commons-lang3?

+0

run 'mvn help: effective-pom' –

ответ

0

Использование API Maven, из MavenProject вы можете получить экземпляр сборки и из него затем список настроенных плагинов, от каждого объекта Plugin вы можете иметь его зависимости следующим образом:

@Component 
private PluginDescriptor pluginDescriptor; 
(...) 

List<Plugin> plugins = project.getBuild().getPlugins(); 
for (Plugin p : plugins) { 
    if (p.getId().equals(pluginDescriptor.getId())) { 
     List<Dependency> pluginDependencies = p.getDependencies(); 
     // your logic here 
     break; 
    } 
} 

Если вы на самом деле хотите, чтобы покрыть каждый случай, вы можете также сканировать модули, настроенные в настоящее время активных профилей следующим образом:

List<Profile> profiles = project.getActiveProfiles(); 
for (Profile p : profiles) { 
    // from personal experience, don't forget this check! 
    if (p.getBuild() != null) { 
     checkAsShownAbove(p.getBuild().getPlugins()); 
    } 
} 

Надежда, что помогает.

0

Поскольку commons-lang3 объявляется как зависимость только для определенного плагина, он недоступен во время компиляции. Вы должны явно определить commons-lang3 как зависимость (если его не включить в качестве транзитивной зависимости), подобно тому, как вы определили commons-io.

+0

Однако плагин maven-компилятор позволяет поддерживать нестандартные компиляторы. Эти компиляторы определяются как зависимость плагина, и они «работают». Я хочу реализовать что-то подобное. Я обновляю описание, чтобы быть более понятным – michaldo

Смежные вопросы