2013-12-03 7 views
0

У меня есть структура Maven, которая прекрасно строится, но я как-то борюсь с ресурсами Checkstyle. структура выглядит следующим образом:Совместное использование ресурсов для нескольких модулей Maven

  • Родитель
    • Суб Родитель A
      • Модули
    • Суб Родительские B
      • модули
    • Строительные ресурсы
      • SRC/основные/ресурсы файлы

Родитель должен определить все, что оба родителя имеют суб общего. Плагин Checkstyle имеет «Build Resources» в качестве зависимости. Определяется как «/checktyle_resources/checkstyle.xml». У меня проблемы с моим плагином Checkstyle, потому что он не может найти необходимые ресурсы, если я создаю «Родительский». Если я создаю «Sub Parent A» или «Sub Parent B», checkstyle работает нормально, но, конечно, «Build Resources» должны быть установлены в хранилище раньше.

Есть ли у кого-нибудь идея, почему это не сработает? Является ли это структурой Maven даже хорошей идеей?

Благодаря

PS: Я видел this вопрос. И в том, как ответ описывает решение, он отлично работает в моем проекте. Но моя многослойная родительская структура, похоже, создает здесь какую-то проблему.

Вот связанный контент pom.xml родителя.

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
<modelVersion>4.0.0</modelVersion> 
<groupId>group</groupId> 
<artifactId>parent</artifactId> 
<version>1.0</version> 
<packaging>pom</packaging> 

<properties> 

    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    <target.jdk>1.6</target.jdk> 
    <build.module.versions>1.3</build.module.versions> 
    <compiler.source.level>${target.jdk}</compiler.source.level> 
    <compiler.target.level>${target.jdk}</compiler.target.level> 
    <compiler.version>${target.jdk}</compiler.version> 
    <maven.version>2.2.1</maven.version>  
    <maven.checkstyle.plugin.version>2.10</maven.checkstyle.plugin.version> 
    <checkstyle.fail.on.error>false</checkstyle.fail.on.error> 
    <junit.version>4.11</junit.version> 
    <checkstyle.version>5.4</checkstyle.version> 
    <checkstyle.skip>false</checkstyle.skip> 

</properties> 

<dependencyManagement> 
    <dependencies> 

     <dependency> 
      <groupId>junit</groupId> 
      <artifactId>junit</artifactId> 
      <version>${junit.version}</version> 
      <scope>test</scope> 
     </dependency> 

     <dependency> 
      <groupId>group</groupId> 
      <artifactId>build-tools</artifactId> 
      <version>1.0</version> 
     </dependency> 
    </dependencies> 
</dependencyManagement> 



<build> 
    <pluginManagement> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-checkstyle-plugin</artifactId> 
       <version>${maven.checkstyle.plugin.version}</version> 

       <dependencies> 
        <dependency> 
         <groupId>com.puppycrawl.tools</groupId> 
         <artifactId>checkstyle</artifactId> 
         <version>${checkstyle.version}</version> 
         <exclusions> 
          <exclusion> 
           <groupId>com.sun</groupId> 
           <artifactId>tools</artifactId> 
          </exclusion> 
         </exclusions> 
        </dependency> 
        <dependency> 
         <groupId>group</groupId> 
         <artifactId>build-tools</artifactId> 
         <version>1.0</version> 
        </dependency> 
       </dependencies> 
       <executions> 
        <execution> 
         <id>checkstyle</id> 
         <goals> 
          <goal>checkstyle</goal> 
          <goal>check</goal> 
         </goals> 
        </execution> 
       </executions> 
       <configuration> 
        <failsOnError>${checkstyle.fail.on.error}</failsOnError> 
        <failOnViolation>${checkstyle.fail.on.error}</failOnViolation> 
        <enableRulesSummary>false</enableRulesSummary> 
        <configLocation>/Checkstyle_Configuration/checks.xml</configLocation> 
        <headerLocation>/Checkstyle_Configuration/file_header_java_regexp.txt</headerLocation> 
        <suppressionsLocation>/Checkstyle_Configuration/suppressions.xml</suppressionsLocation> 
        <suppressionsFileExpression>checkstyle.suppressions.file.donothing</suppressionsFileExpression> 
        <propertyExpansion>checkstyle.suppressions.file=${project.build.directory}/checkstyle-suppressions.xml</propertyExpansion> 
        <!-- <propertyExpansion>checkstyle.suppressions.file=Checkstyle_Configuration/suppressions.xml</propertyExpansion> --> 
        <includeTestSourceDirectory>true</includeTestSourceDirectory> 
        <excludes>**/*Bean.java</excludes> 
        <excludes>**/gen*/*.java</excludes> 
        <skip>${checkstyle.skip}</skip> 
       </configuration> 
      </plugin> 

      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-dependency-plugin</artifactId> 
       <version>${maven.plugin.dependency.version}</version> 
      </plugin> 

     </plugins> 


    </pluginManagement> 


    <!--************************************************************************ 
    * PLUGINS SECTION ************************************************************************* --> 

    <plugins> 

     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-checkstyle-plugin</artifactId> 
      <inherited>false</inherited> 
      <configuration <configLocation>/Checkstyle_Configuration/volkswagen_checks.xml</configLocation> <headerLocation>/Checkstyle_Configuration/file_header_java_regexp.txt</headerLocation><suppressionsLocation>/Checkstyle_Configuration/suppressions.xml</suppressionsLocation> 
      </configuration> 
     </plugin> 

     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-resources-plugin</artifactId> 
      <version>${maven.resources.version}</version> 
     </plugin> 

    </plugins> 
</build> 


<dependencies> 
    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
    </dependency> 
</dependencies> 

<!--**************************************************************************** 
* MODULES SECTION ***************************************************************************** --> 

<modules> 
    <module>build-tools</module> 
    <module>sub-parent-a</module> 
    <module>sub-parent-b</module> 
</modules> 

+1

Пожалуйста, напишите свой 'pom.xml'. Действительно ли A и B (или их модули) заявляют о зависимости от проекта ресурсов? – chrylis

+0

Нет, но плагин Checkstyle в родительском файле, который наследуется Sub Parents и их модулями. Если я самостоятельно создаю модуль или дочерний родитель, все работает нормально. Я добавлю pom.xml через секунду. – fancy

+0

Родитель не может зависеть от одного из своих детей; вы должны получать ошибки Reactor. – chrylis

ответ

0

Спасибо за вашу помощь Тома и Chrylis.

Решение действительно заключалось в том, чтобы удалить плагин checkstyle из-раздела моего родительского помпы и поместить его в подпоставщиков, в то время как конфигурация плагина определена в разделе родителя.

Теперь у меня все еще есть выполнение checkstyle для дочерних родителей, когда я только создаю родительский элемент, и у меня нет избыточности настройки его в каждом модуле отдельно.

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