Hi all, I've been trying to write an enforcer plugin that will validate the SCM information contained in a POM actually reflects the actual repository location. I'm only concerned with SVN. Basically I am trying to do is a "svn info project.getBaseDir()" and compare the repository url that comes back with the one defined in the SCM tag. I've been failing misserably as using I can not construct a SCMProviderRepository with the File argument. even though the svn provider supports getting the url from a file location[1] it just ends up throwing a null pointer exception[2]. I have managed to get the following code to work - but it doesn't work out where the repo is from the .svn files. How can I adapt it to do so it will work with the local file location not the remote location- I'm tearing my hair out!
String devSCM = project.getScm().getDeveloperConnection(); String devSVN = devSCM.replaceFirst("scm:svn:", ""); ScmRepository scmRepo = scmManger.makeScmRepository(devSCM); log.warn("Using " + base + " as the base directory"); ScmProvider provider = scmManger.getProviderByUrl(devSCM); if (provider instanceof AbstractSvnScmProvider) { AbstractSvnScmProvider svnProvider = (AbstractSvnScmProvider)provider; // following returns null and a n.p.e is later thrown by AbstractCommand.execute(AbstractCommand.java:49) //ScmProviderRepository providerRepo = svnProvider.makeProviderScmRepository(project.getBaseDir()); ScmProviderRepository providerRepo = svnProvider.makeProviderScmRepository(devSVN, '\u0000'); ScmFileSet fileSet = new ScmFileSet(project.getBasedir(), "pom.xml"); SvnInfoScmResult infoResult = svnProvider.info(providerRepo, fileSet, null); if (infoResult.isSuccess()) { .... } } [1] http://maven.apache.org/scm/xref/org/apache/maven/scm/provider/svn/Abstr actSvnScmProvider.html#110 Regards, /James