You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@maven.apache.org by "Jim Sellers (JIRA)" <ji...@codehaus.org> on 2010/05/20 16:35:12 UTC

[jira] Commented: (MDEP-213) resolve dependencyManagement section with option to fail the build

    [ http://jira.codehaus.org/browse/MDEP-213?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=221929#action_221929 ] 

Jim Sellers commented on MDEP-213:
----------------------------------

As a work around I created a groovy script that will that:
1) take the pom, copy it to the target directory
2) remove the dependencyManagement tags so that the pom just has dependencies
3) run dependency:resolve on that modified pom, failing the build if dependency:resolve fails.

In the pom:
{noformat}
  <build>
    <plugins>
      <plugin>
        <groupId>org.codehaus.groovy.maven</groupId>
        <artifactId>gmaven-plugin</artifactId>
        <executions>
          <execution>
            <phase>generate-test-sources</phase>
            <goals>
              <goal>execute</goal>
            </goals>
            <configuration>
              <source>${pom.basedir}/src/main/script/resolveDepMgmt.groovy</source>
            </configuration>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
{noformat}

The contents of resolveDepMgmt.groovy is:
{noformat}
import org.apache.commons.lang.SystemUtils

log.info('About to run check on the dependency management section...')

// read the pom, remove the dependencyManagement tags
File sourceFile = new File('pom.xml')
String text = sourceFile.text.replaceAll('<dependencyManagement>', '').replaceAll('</dependencyManagement>', '')

// make the outputDirectory if it does not exist 
File outputDir = new File('target')
if (!outputDir.exists())
	outputDir.mkdirs()

File ouputFile = new File(outputDir.getAbsolutePath() + '/pom-only-dependencies.xml')
ouputFile.write(text)

String mvnCommand = "mvn dependency:resolve -f " + ouputFile.getAbsolutePath()

// because mvn is not an executable program on windows
if (SystemUtils.IS_OS_WINDOWS)
	mvnCommand = 'cmd /c ' + mvnCommand

outputCatcher = new StringBuffer()
errorCatcher = new StringBuffer()
proc = mvnCommand.execute()
proc.consumeProcessOutput(outputCatcher, errorCatcher)
proc.waitFor()

// print the output / errors to the screen
println outputCatcher

// have the calling process share the exit value of the maven command if there was an error
if (0 != proc.exitValue())
	fail('failed resolving dependencies')
{noformat}

> resolve dependencyManagement section with option to fail the build
> ------------------------------------------------------------------
>
>                 Key: MDEP-213
>                 URL: http://jira.codehaus.org/browse/MDEP-213
>             Project: Maven 2.x Dependency Plugin
>          Issue Type: New Feature
>          Components: resolve
>    Affects Versions: 2.0
>            Reporter: Jim Sellers
>            Assignee: Brian Fox
>
> When using the dependencyManagement section of a pom of type "pom" to create a bill of materials, it's currently possible to specify an invalid version.  eg:
> {code:xml}
> 	<dependencyManagement>
> 		<dependencies>
> 			<dependency>
> 				<groupId>commons-logging</groupId>
> 				<artifactId>commons-logging</artifactId>
> 				<version>9.9</version>
> 			</dependency>
> 		</dependencies>
> 	</dependencyManagement>
> {code} 
> It would be really useful for these types of pom's to be able to force all the dependencies to be resolved when running something like "install" and have that fail the build.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira