blob: a1f7b6b754a3dc1caccf990f642d7abaf58481a8 [file] [log] [blame]
package org.apache.rat.mp.util;
import org.apache.maven.plugin.logging.Log;
import org.apache.rat.config.SourceCodeManagementSystems;
import org.codehaus.plexus.util.DirectoryScanner;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Set;
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
/**
* This class encapsulates the file/directory exclusion handling of RAT.
* Visibility is to allow testing and usage in the maven plugin itself.
*/
public final class ExclusionHelper {
/**
* The Maven specific default excludes.
*/
static final List<String> MAVEN_DEFAULT_EXCLUDES = Collections
.unmodifiableList(Arrays.asList(//
"target/**/*", //
"cobertura.ser", //
"release.properties", //
".repository", // Used by Jenkins when a Maven job uses a private repository that is "Local to the workspace"
"build.log", // RAT-160: until now maven-invoker-plugin runs create a build.log that is not part of a release
".mvn", // Project configuration since Maven 3.3.1 which contains maven.config, jvm.config, extensions.xml
"pom.xml.releaseBackup"));
/**
* The Eclipse specific default excludes.
*/
static final List<String> ECLIPSE_DEFAULT_EXCLUDES = Collections
.unmodifiableList(Arrays.asList(".classpath",//
".project", //
".settings/**/*"));
/**
* The IDEA specific default excludes.
*/
static final List<String> IDEA_DEFAULT_EXCLUDES = Collections
.unmodifiableList(Arrays.asList(//
"*.iml", //
"*.ipr", //
"*.iws", //
".idea/**/*"));
public static void addPlexusAndScmDefaults(Log log, final boolean useDefaultExcludes,
final Set<String> excludeList1) {
if (useDefaultExcludes) {
log.debug("Adding plexus default exclusions...");
Collections.addAll(excludeList1, DirectoryScanner.DEFAULTEXCLUDES);
log.debug("Adding SCM default exclusions...");
excludeList1.addAll(//
SourceCodeManagementSystems.getPluginExclusions());
} else {
log.debug("rat.useDefaultExcludes set to false. "
+ "Plexus and SCM default exclusions will not be added");
}
}
public static void addMavenDefaults(Log log, boolean useMavenDefaultExcludes,
final Set<String> excludeList) {
if (useMavenDefaultExcludes) {
log.debug("Adding exclusions often needed by Maven projects...");
excludeList.addAll(MAVEN_DEFAULT_EXCLUDES);
} else {
log.debug("rat.useMavenDefaultExcludes set to false. "
+ "Exclusions often needed by Maven projects will not be added.");
}
}
public static void addEclipseDefaults(Log log, boolean useEclipseDefaultExcludes,
final Set<String> excludeList) {
if (useEclipseDefaultExcludes) {
log.debug("Adding exclusions often needed by projects "
+ "developed in Eclipse...");
excludeList.addAll(ECLIPSE_DEFAULT_EXCLUDES);
} else {
log.debug("rat.useEclipseDefaultExcludes set to false. "
+ "Exclusions often needed by projects developed in "
+ "Eclipse will not be added.");
}
}
public static void addIdeaDefaults(Log log, boolean useIdeaDefaultExcludes,
final Set<String> excludeList) {
if (useIdeaDefaultExcludes) {
log.debug("Adding exclusions often needed by projects "
+ "developed in IDEA...");
excludeList.addAll(IDEA_DEFAULT_EXCLUDES);
} else {
log.debug("rat.useIdeaDefaultExcludes set to false. "
+ "Exclusions often needed by projects developed in "
+ "IDEA will not be added.");
}
}
}