Details

    • Type: New Feature New Feature
    • Status: Closed Closed
    • Priority: Minor Minor
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: XML-0.1
    • Component/s: XML
    • Labels:
      None
    • Number of attachments :
      0

      Description

      I would like to enforce consistency of all pom.xml accross projects of my company. I've asked all developers to follow Maven POM Code convention to order elements (http://maven.apache.org/developers/conventions/code.html#POM_Code_Convention).

      It would be great to have a Sonar check that enforce compliance of this rule.

        Issue Links

          Activity

          Hide
          Simon Brandhof added a comment -

          Great, I did not know these conventions.
          Do you know how can we check them ? Are there any lib at Apache ?

          Show
          Simon Brandhof added a comment - Great, I did not know these conventions. Do you know how can we check them ? Are there any lib at Apache ?
          Hide
          Evgeny Mandrikov added a comment - - edited

          Hi all, I think it would be better to automatically reorder and reformat pom.xml - see http://jira.codehaus.org/browse/MOJO-928

          Show
          Evgeny Mandrikov added a comment - - edited Hi all, I think it would be better to automatically reorder and reformat pom.xml - see http://jira.codehaus.org/browse/MOJO-928
          Hide
          Julien HENRY added a comment -

          From Sonar point of view, I think it is better to raise a warning/error when convention is not followed. I don't want that Sonar change the pom.xml of the project.

          Having a Maven plugin to perform the change is a good thing but is the responsibility of each project to actually run it. Sonar is the solution in corporate environment to check all projects are following the rule.

          Show
          Julien HENRY added a comment - From Sonar point of view, I think it is better to raise a warning/error when convention is not followed. I don't want that Sonar change the pom.xml of the project. Having a Maven plugin to perform the change is a good thing but is the responsibility of each project to actually run it. Sonar is the solution in corporate environment to check all projects are following the rule.
          Hide
          Evgeny Mandrikov added a comment -

          So, I think that such functionality should be realized as a plugin.
          Moreover it can be a good start point for plugin, which can validate not only pom.xml (eg. jboss-app.xml, web.xml and so on).
          What do you think, guys?

          Show
          Evgeny Mandrikov added a comment - So, I think that such functionality should be realized as a plugin. Moreover it can be a good start point for plugin, which can validate not only pom.xml (eg. jboss-app.xml, web.xml and so on). What do you think, guys?
          Hide
          Christophe DENEUX added a comment -

          Do you thing that it is possible to use the xml-maven-plugin (http://mojo.codehaus.org/xml-maven-plugin) to validate xml files (POM, ...) against coding rules defined through an XSD.

          Show
          Christophe DENEUX added a comment - Do you thing that it is possible to use the xml-maven-plugin ( http://mojo.codehaus.org/xml-maven-plugin ) to validate xml files (POM, ...) against coding rules defined through an XSD.
          Hide
          Evgeny Mandrikov added a comment -

          Hi Christophe,

          I never used this plugin, but looks like it can check validity of xml file against an XSD.
          But returning to original issue - validity of xml isn't the same as compliance with POM Code Convention.

          Show
          Evgeny Mandrikov added a comment - Hi Christophe, I never used this plugin, but looks like it can check validity of xml file against an XSD. But returning to original issue - validity of xml isn't the same as compliance with POM Code Convention.
          Hide
          Christophe DENEUX added a comment -

          Evgeny,

          POM Code convention is a POM elements ordering, so you can defined it using an XSD. In the default POM XSD (http://maven.apache.org/xsd/maven-4.0.0.xsd), all elements are defined inside a 'xsd:all'. If you replace it by a 'xsd:sequence' and order elements according to POM Code conventions, you check the compliance with POM Code Convention.

          Show
          Christophe DENEUX added a comment - Evgeny, POM Code convention is a POM elements ordering, so you can defined it using an XSD. In the default POM XSD ( http://maven.apache.org/xsd/maven-4.0.0.xsd ), all elements are defined inside a 'xsd:all'. If you replace it by a 'xsd:sequence' and order elements according to POM Code conventions, you check the compliance with POM Code Convention.
          Hide
          Evgeny Mandrikov added a comment -

          Good point, Christophe.

          Show
          Evgeny Mandrikov added a comment - Good point, Christophe.
          Evgeny Mandrikov made changes -
          Field Original Value New Value
          Project Sonar [ 11694 ] Sonar Plugins [ 11911 ]
          Key SONAR-1399 SONARPLUGINS-611
          Issue Type Wish [ 5 ] New Feature [ 2 ]
          Affects Version/s 1.12 [ 15685 ]
          Hide
          Evgeny Mandrikov added a comment -

          I've moved this issue to Sonar Plugins project, because we want to decouple Sonar core from Maven in future.

          Show
          Evgeny Mandrikov added a comment - I've moved this issue to Sonar Plugins project, because we want to decouple Sonar core from Maven in future.
          Evgeny Mandrikov made changes -
          Link This issue depends upon SONAR-926 [ SONAR-926 ]
          Hide
          Taciano Tres added a comment -

          In reply to comment #5:
          > Do you thing that it is possible to use the xml-maven-plugin
          > (http://mojo.codehaus.org/xml-maven-plugin) to validate xml files (POM, ...)
          > against coding rules defined through an XSD.
          Just for historical reference, I get it to work with this configuration:

          			<plugin>
          				<groupId>org.codehaus.mojo</groupId>
          				<artifactId>xml-maven-plugin</artifactId>
          				<version>1.0</version>
          				<executions>
          					<execution>
          						<phase>validate</phase>
          						<goals>
          							<goal>validate</goal>
          						</goals>
          					</execution>
          				</executions>
          				<configuration>
          					<validationSets>
          						<validationSet>
          							<dir>${project.basedir}</dir>
          							<systemId>http://my.company.server/maven-4.0.0.xsd</systemId>
          							<includes>
          								<include>pom.xml</include>
          							</includes>
          						</validationSet>
          					</validationSets>
          				</configuration>
          			</plugin>
          

          The maven-4.0.0.xsd was edited to follow the POM Code Convention Rules.

          Show
          Taciano Tres added a comment - In reply to comment #5: > Do you thing that it is possible to use the xml-maven-plugin > ( http://mojo.codehaus.org/xml-maven-plugin ) to validate xml files (POM, ...) > against coding rules defined through an XSD. Just for historical reference, I get it to work with this configuration: <plugin> <groupId> org.codehaus.mojo </groupId> <artifactId> xml-maven-plugin </artifactId> <version> 1.0 </version> <executions> <execution> <phase> validate </phase> <goals> <goal> validate </goal> </goals> </execution> </executions> <configuration> <validationSets> <validationSet> <dir> ${project.basedir} </dir> <systemId> http://my.company.server/maven-4.0.0.xsd </systemId> <includes> <include> pom.xml </include> </includes> </validationSet> </validationSets> </configuration> </plugin> The maven-4.0.0.xsd was edited to follow the POM Code Convention Rules .
          Matthijs Galesloot made changes -
          Assignee Matthijs Galesloot [ matthijs.galesloot ]
          Fix Version/s XML-0.1 [ 17345 ]
          Matthijs Galesloot made changes -
          Component/s XML [ 14607 ]
          Hide
          Matthijs Galesloot added a comment -

          schema validation is provided by a custom maven-4.0.0.xsd with order of the elements as in the maven code conventions.

          whitespace validation will be done in http://jira.codehaus.org/browse/SONARPLUGINS-1145

          Show
          Matthijs Galesloot added a comment - schema validation is provided by a custom maven-4.0.0.xsd with order of the elements as in the maven code conventions. whitespace validation will be done in http://jira.codehaus.org/browse/SONARPLUGINS-1145
          Matthijs Galesloot made changes -
          Status Open [ 1 ] Resolved [ 5 ]
          Resolution Fixed [ 1 ]
          Matthijs Galesloot made changes -
          Status Resolved [ 5 ] Closed [ 6 ]

            People

            • Assignee:
              Matthijs Galesloot
              Reporter:
              Julien HENRY
            • Votes:
              3 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: