[ 
https://jira.codehaus.org/browse/MNG-5091?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=315371#comment-315371
 ] 

Steven Swor edited comment on MNG-5091 at 12/10/12 5:54 PM:
------------------------------------------------------------

As a workaround, you can use the GMaven plugin to set the validation level 
during the Maven build.  Here's an example which checks the validation level 
during the {{validate}} phase and fails the build if it's above 
{{org.apache.maven.model.building.ModelBuildingRequest.VALIDATION_LEVEL_MAVEN_2_0}}.
  Add the following to your {{project.build.plugins}} section

{code}
<plugin>
    <groupId>org.codehaus.gmaven</groupId>
    <artifactId>gmaven-plugin</artifactId>
    <version>1.5</version>
    <configuration>
         <!--
            This tells gmaven-plugin we want to run against Groovy 2
        -->
        <providerSelection>2.0</providerSelection>
    </configuration>
    <executions>
        <execution>
            <id>change-validation-level</id>
            <phase>validate</phase>
            <goals>
                <goal>execute</goal>
            </goals>
            <configuration>
                <source>                                
                    def desiredValidationLevel = 
org.apache.maven.model.building.ModelBuildingRequest.VALIDATION_LEVEL_MAVEN_2_0

                    def request = session.request.projectBuildingRequest
                    if (request.validationLevel > desiredValidationLevel) {
                        /* 
                         * Comment out the following line and uncomment the two 
below
                         * to coerce the validation level instead of failing 
the build
                         */
                        throw new RuntimeException("Validation level is too 
high")
//                      log.warn("Correcting validation level.  Was {}.  Now 
{}", request.validationLevel, desiredValidationLevel)
//                      request.validationLevel = desiredValidationLevel
                    }
                </source>
            </configuration>
        </execution>
    </executions>
    <dependencies>
        <dependency>
            <groupId>org.codehaus.groovy</groupId>
            <artifactId>groovy-all</artifactId>
            <version>2.0.5</version>
        </dependency>
        <dependency>
            <groupId>org.codehaus.gmaven.runtime</groupId>
            <artifactId>gmaven-runtime-2.0</artifactId>
            <version>1.5</version>
            <exclusions>
                <exclusion>
                    <groupId>org.codehaus.groovy</groupId>
                    <artifactId>groovy-all</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
    </dependencies>
</plugin>
{code}

Note: I'm not sure if forcing GMaven to use Groovy 2 is required.  I just 
copied an existing usage of the plugin and tweaked it for this example.

The trick works because gmaven injects the {{MavenSession}} into the script, 
which has access to the {{ProjectBuildingRequest}} via its 
{{MavenExecutionRequest}}.  I'd suggest having a look at the Maven core API 
docs and maven build API docs.  You might be able to get access to the warnings 
somehow.
                
      was (Author: sworisbreathing):
    As a workaround, you can use the GMaven plugin to set the validation level 
during the Maven build.  Here's an example which checks the validation level 
during the {{validate}} phase and fails the build if it's above 
{{org.apache.maven.model.building.ModelBuildingRequest.VALIDATION_LEVEL_MAVEN_2_0}}.
  Add the following to your {{project.build.plugins}} section

{code}
<plugin>
    <groupId>org.codehaus.gmaven</groupId>
    <artifactId>gmaven-plugin</artifactId>
    <version>1.5</version>
    <configuration>
         <!--
            This tells gmaven-plugin we want to run against Groovy 2
        -->
        <providerSelection>2.0</providerSelection>
    </configuration>
    <executions>
        <execution>
            <id>change-validation-level</id>
            <phase>validate</phase>
            <goals>
                <goal>execute</goal>
            </goals>
            <configuration>
                <source>                                
                    def desiredValidationLevel = 
org.apache.maven.model.building.ModelBuildingRequest.VALIDATION_LEVEL_MAVEN_2_0

                    def request = session.request.projectBuildingRequest
                    if (request.validationLevel > desiredValidationLevel) {
                        /* 
                         * Comment out the following line and uncomment the two 
below
                         * to coerce the validation level instead of failing 
the build
                         */
                        throw new RuntimeException("Validation level is too 
high")
//                      log.warn("Correcting validation level.  Was {}.  Now 
{}", request.validationLevel, desiredValidationLevel)
//                      request.validationLevel = desiredValidationLevel
                    }
                </source>
            </configuration>
        </execution>
    </executions>
    <dependencies>
        <dependency>
            <groupId>org.codehaus.groovy</groupId>
            <artifactId>groovy-all</artifactId>
            <version>2.0.5</version>
        </dependency>
        <dependency>
            <groupId>org.codehaus.gmaven.runtime</groupId>
            <artifactId>gmaven-runtime-2.0</artifactId>
            <version>1.5</version>
            <exclusions>
                <exclusion>
                    <groupId>org.codehaus.groovy</groupId>
                    <artifactId>groovy-all</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
    </dependencies>
</plugin>
{code}

Note: I'm not sure if forcing GMaven to use Groovy 2 is required.  I just 
copied an existing usage of the plugin and tweaked it for this example.
                  
> Add option to fail build if WARNING's appear in POM
> ---------------------------------------------------
>
>                 Key: MNG-5091
>                 URL: https://jira.codehaus.org/browse/MNG-5091
>             Project: Maven 2 & 3
>          Issue Type: Improvement
>          Components: Command Line, POM
>    Affects Versions: 3.0.3
>            Reporter: Karl Heinz Marbaise
>            Priority: Minor
>             Fix For: 3.1.x
>
>         Attachments: MNG-5091-maven-embedder.patch
>
>
> It would be nice to have the option to let a build fail if something like 
> this will appear:
> {code}
> [INFO] Scanning for projects...
> [WARNING] 
> [WARNING] Some problems were encountered while building the effective model 
> for com.soebes.training.module:050-project-without-warnings:jar:0.1.0-SNAPSHOT
> [WARNING] 'dependencies.dependency.(groupId:artifactId:type:classifier)' must 
> be unique: org.slf4j:slf4j-api:jar -> duplicate declaration of version 1.6.1 
> @ line 28, column 14
> [WARNING] 
> [WARNING] It is highly recommended to fix these problems because they 
> threaten the stability of your build.
> [WARNING] 
> [WARNING] For this reason, future Maven versions might no longer support 
> building such malformed projects.
> [WARNING] 
> {code}
> This shoud be done for WARNING's in case of missing versions for plugins etc.
> Currently it is possible to set the Validation leven in Jenkins/Hudson 
> already but it is not possible on command line. So an option on command line 
> like:
> {code}
> mvn --fail-warning ...
> {code}
> would be great. Or may be a good supplemental option to set the validation 
> level like:
> {code}
> mvn --validation-level MINIMAL
> mvn --validation-level MAVEN20
> mvn --validation-level MAVEN30
> mvn --validation-level MAVEN31
> mvn --validation-level DEFAULT
> {code}
> or may be both. May this might be an enhancement for Maven 3.0.4 ?

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://jira.codehaus.org/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to