You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by br...@apache.org on 2008/12/23 01:43:05 UTC
svn commit: r728833 -
/maven/enforcer/trunk/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireNoRepositories.java
Author: brett
Date: Mon Dec 22 16:43:04 2008
New Revision: 728833
URL: http://svn.apache.org/viewvc?rev=728833&view=rev
Log:
[MENFORCER-59] add the ability to be more selective about banned repositories
Modified:
maven/enforcer/trunk/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireNoRepositories.java
Modified: maven/enforcer/trunk/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireNoRepositories.java
URL: http://svn.apache.org/viewvc/maven/enforcer/trunk/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireNoRepositories.java?rev=728833&r1=728832&r2=728833&view=diff
==============================================================================
--- maven/enforcer/trunk/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireNoRepositories.java (original)
+++ maven/enforcer/trunk/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireNoRepositories.java Mon Dec 22 16:43:04 2008
@@ -1,3 +1,5 @@
+package org.apache.maven.plugins.enforcer;
+
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
@@ -16,11 +18,11 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.maven.plugins.enforcer;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.Iterator;
import java.util.List;
@@ -29,13 +31,13 @@
import org.apache.maven.enforcer.rule.api.EnforcerRuleException;
import org.apache.maven.enforcer.rule.api.EnforcerRuleHelper;
import org.apache.maven.model.Model;
+import org.apache.maven.model.Repository;
import org.apache.maven.plugins.enforcer.utils.EnforcerRuleUtils;
import org.apache.maven.project.MavenProject;
import org.codehaus.plexus.component.configurator.expression.ExpressionEvaluationException;
import org.codehaus.plexus.util.StringUtils;
import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
-// TODO: Auto-generated Javadoc
/**
* This rule checks that this pom or its parents don't define a repository.
*
@@ -44,11 +46,30 @@
public class RequireNoRepositories
extends AbstractNonCacheableEnforcerRule
{
+ /**
+ * Whether to ban non-plugin repositories. By default they are banned.
+ */
+ public boolean banRepositories = true;
+
+ /**
+ * Whether to ban plugin repositories. By default they are banned.
+ */
+ public boolean banPluginRepositories = true;
+
+ /**
+ * Specify explicitly allowed non-plugin repositories. This is a list of ids.
+ */
+ public List allowedRepositories = Collections.EMPTY_LIST;
+
+ /**
+ * Specify explicitly allowed plugin repositories. This is a list of ids.
+ */
+ public List allowedPluginRepositories = Collections.EMPTY_LIST;
/*
* (non-Javadoc)
- *
- * @see org.apache.maven.enforcer.rule.api.EnforcerRule#execute(org.apache.maven.enforcer.rule.api.EnforcerRuleHelper)
+ * @see
+ * org.apache.maven.enforcer.rule.api.EnforcerRule#execute(org.apache.maven.enforcer.rule.api.EnforcerRuleHelper)
*/
public void execute( EnforcerRuleHelper helper )
throws EnforcerRuleException
@@ -63,22 +84,48 @@
List models =
utils.getModelsRecursively( project.getGroupId(), project.getArtifactId(), project.getVersion(),
new File( project.getBasedir(), "pom.xml" ) );
+ List badModels = new ArrayList();
- List badModels = checkModels( models );
+ StringBuffer newMsg = new StringBuffer();
+ newMsg.append( "Some poms have repositories defined:\n" );
+
+ for ( Iterator i = models.iterator(); i.hasNext(); )
+ {
+ Model model = (Model) i.next();
+ if ( banRepositories )
+ {
+ List repos = model.getRepositories();
+ if ( repos != null && !repos.isEmpty() )
+ {
+ List bannedRepos = findBannedRepositories( repos, allowedRepositories );
+ if ( !bannedRepos.isEmpty() )
+ {
+ badModels.add( model );
+ newMsg.append( model.getGroupId() + ":" + model.getArtifactId() + " version:"
+ + model.getVersion() + " has repositories " + bannedRepos );
+ }
+ }
+ }
+ if ( banPluginRepositories )
+ {
+ List repos = model.getPluginRepositories();
+ if ( repos != null && !repos.isEmpty() )
+ {
+ List bannedRepos = findBannedRepositories( repos, allowedPluginRepositories );
+ if ( !bannedRepos.isEmpty() )
+ {
+ badModels.add( model );
+ newMsg.append( model.getGroupId() + ":" + model.getArtifactId() + " version:"
+ + model.getVersion() + " has plugin repositories " + bannedRepos );
+ }
+ }
+ }
+ }
// if anything was found, log it then append the
// optional message.
if ( !badModels.isEmpty() )
{
- StringBuffer newMsg = new StringBuffer();
- newMsg.append( "Some poms have repositories defined:\n" );
- Iterator iter = badModels.iterator();
- while ( iter.hasNext() )
- {
- Model model = (Model) iter.next();
- newMsg.append( model.getGroupId() + ":" + model.getArtifactId() + " version:" + model.getVersion() +
- "\n" );
- }
if ( StringUtils.isNotEmpty( message ) )
{
newMsg.append( message );
@@ -110,26 +157,17 @@
}
}
- /**
- * Check models.
- *
- * @param models the models
- * @return the list
- */
- private List checkModels( List models )
+ private static List findBannedRepositories( List repos, List allowedRepos )
{
- List badModels = new ArrayList();
-
- Iterator iter = models.iterator();
- while ( iter.hasNext() )
+ List bannedRepos = new ArrayList( allowedRepos.size() );
+ for ( Iterator i = repos.iterator(); i.hasNext(); )
{
- Model model = (Model) iter.next();
- List repos = model.getRepositories();
- if ( repos != null && !repos.isEmpty() )
+ Repository r = (Repository) i.next();
+ if ( !allowedRepos.contains( r.getId() ) )
{
- badModels.add( model );
+ bannedRepos.add( r.getId() );
}
}
- return badModels;
+ return bannedRepos;
}
}