com.ning.maven.plugins.duplicatefinder.DependencyWrapper Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of maven-duplicate-finder-plugin Show documentation
Show all versions of maven-duplicate-finder-plugin Show documentation
The maven-duplicate-class-finder-plugin is a plugin that will search for classes with the same name, as well as resources with the same path,
in the classpaths of a maven project. More specifically, it will check the compile, runtime, and test classpaths for
* Classes with the same qualified name in the current project and all dependencies relevant for that classpath
* Files that are not class files, with the same resource path (i.e. as if it would be accessed via the classloader) in the current project and all dependencies relevant for that
(Note that at the moment, the plugin does not check if the files are actually the same or not, it only looks for the same file/class name.)
The newest version!
/*
* Copyright 2010 Ning, Inc.
*
* Ning 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.
*/
package com.ning.maven.plugins.duplicatefinder;
import org.apache.commons.lang.StringUtils;
import org.apache.maven.artifact.Artifact;
import org.apache.maven.artifact.versioning.ArtifactVersion;
import org.apache.maven.artifact.versioning.DefaultArtifactVersion;
import org.apache.maven.artifact.versioning.InvalidVersionSpecificationException;
import org.apache.maven.artifact.versioning.OverConstrainedVersionException;
import org.apache.maven.artifact.versioning.VersionRange;
import org.apache.maven.model.Dependency;
public class DependencyWrapper
{
private final Dependency dependency;
private final VersionRange versionRange;
public DependencyWrapper(Dependency dependency) throws InvalidVersionSpecificationException
{
this.dependency = dependency;
this.versionRange = VersionRange.createFromVersionSpec(dependency.getVersion());
}
public String toString()
{
String result = dependency.getGroupId() + ":" + dependency.getArtifactId() + ":" + dependency.getVersion();
if ((dependency.getType() != null) && !"jar".equals(dependency.getType())) {
result = result + ":" + dependency.getType();
}
if ((dependency.getClassifier() != null) && (!"tests".equals(dependency.getClassifier()) || !"test-jar".equals(dependency.getType()))) {
result = result + ":" + dependency.getClassifier();
}
return result;
}
public boolean matches(Artifact artifact)
{
ArtifactVersion version;
try {
if (artifact.getVersionRange() != null) {
version = artifact.getSelectedVersion();
}
else {
version = new DefaultArtifactVersion(artifact.getVersion());
}
}
catch (OverConstrainedVersionException ex) {
return false;
}
return StringUtils.equals(dependency.getGroupId(), artifact.getGroupId()) &&
StringUtils.equals(dependency.getArtifactId(), artifact.getArtifactId()) &&
StringUtils.equals(StringUtils.defaultIfEmpty(dependency.getType(), "jar"), StringUtils.defaultIfEmpty(artifact.getType(), "jar")) &&
StringUtils.equals(dependency.getClassifier(), artifact.getClassifier()) &&
(versionRange == null || versionRange.containsVersion(version) || StringUtils.equals(artifact.getVersion(), dependency.getVersion()));
}
}