Fix test scope skipping
This commit is contained in:
parent
33b0a5fcd6
commit
61f66c0070
@ -1,14 +1,14 @@
|
||||
From 8ded699d85fd30717fbdd09a9238f309386747db Mon Sep 17 00:00:00 2001
|
||||
From 97ddab6cd1a948294176f851e37a48b5bc036c73 Mon Sep 17 00:00:00 2001
|
||||
From: Stanislav Ochotnicky <sochotnicky@redhat.com>
|
||||
Date: Tue, 12 Oct 2010 16:56:50 +0200
|
||||
Subject: [PATCH 1/2] Add plugin-api deps
|
||||
Date: Tue, 30 Aug 2011 11:41:39 +0200
|
||||
Subject: [PATCH 1/4] Add plugin-api deps
|
||||
|
||||
---
|
||||
maven-plugin-api/pom.xml | 5 +++++
|
||||
1 files changed, 5 insertions(+), 0 deletions(-)
|
||||
|
||||
diff --git a/maven-plugin-api/pom.xml b/maven-plugin-api/pom.xml
|
||||
index 621f8d6..ca98242 100644
|
||||
index 8967754..0f72aa5 100644
|
||||
--- a/maven-plugin-api/pom.xml
|
||||
+++ b/maven-plugin-api/pom.xml
|
||||
@@ -51,6 +51,11 @@ under the License.
|
||||
@ -24,5 +24,5 @@ index 621f8d6..ca98242 100644
|
||||
|
||||
<build>
|
||||
--
|
||||
1.7.4
|
||||
1.7.6
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
From 2f1e46675a26996103ba9c96ae62d3b5876bdba8 Mon Sep 17 00:00:00 2001
|
||||
From e1b80440159b03b397cba740a7949f8be412fef5 Mon Sep 17 00:00:00 2001
|
||||
From: Stanislav Ochotnicky <sochotnicky@redhat.com>
|
||||
Date: Tue, 18 Jan 2011 11:09:32 +0100
|
||||
Subject: [PATCH 2/2] Use custom resolver
|
||||
Date: Tue, 30 Aug 2011 11:42:32 +0200
|
||||
Subject: [PATCH 2/4] Use custom resolver
|
||||
|
||||
WorkspaceReader is used to resolve main dependencies, but we had to
|
||||
add this resolve to ProjectModelResolver and DefaultModelResolver as
|
||||
@ -220,5 +220,5 @@ index c97095f..ef0edc2 100644
|
||||
}
|
||||
|
||||
--
|
||||
1.7.4
|
||||
1.7.6
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
From b84e27c430a321185639096e7a0ca2ab4945bbfa Mon Sep 17 00:00:00 2001
|
||||
From 053974e55c21a372e544ba23f5eca6c864cc283c Mon Sep 17 00:00:00 2001
|
||||
From: Stanislav Ochotnicky <sochotnicky@redhat.com>
|
||||
Date: Mon, 22 Aug 2011 16:11:57 +0200
|
||||
Subject: [PATCH] Use utf-8 source encoding
|
||||
Date: Tue, 30 Aug 2011 11:43:01 +0200
|
||||
Subject: [PATCH 3/4] Use utf-8 source encoding
|
||||
|
||||
---
|
||||
pom.xml | 1 +
|
||||
|
156
0004-Fix-text-scope-skipping-with-maven.test.skip.patch
Normal file
156
0004-Fix-text-scope-skipping-with-maven.test.skip.patch
Normal file
@ -0,0 +1,156 @@
|
||||
From d3c8d75d197ac8494c87f26ea63733d4f5163c7f Mon Sep 17 00:00:00 2001
|
||||
From: Stanislav Ochotnicky <sochotnicky@redhat.com>
|
||||
Date: Tue, 30 Aug 2011 11:44:42 +0200
|
||||
Subject: [PATCH 4/4] Fix text scope skipping with maven.test.skip
|
||||
|
||||
Previously maven put test dependencies into dependency graph even when
|
||||
"maven.test.skip" was true, therefore. This patch fixes that with few
|
||||
caveats:
|
||||
|
||||
maven-compat was changed so plugins using old api work like this as
|
||||
well. We removed test deps from "artifacts" Set in
|
||||
DefaultArtifactResolver if maven.test.skip system property is found.
|
||||
|
||||
We created new DependencySelector. Currently it's in wrong place and
|
||||
possibly has other problems (never going to get upstreamed like
|
||||
this). But as a hack this works OK.
|
||||
|
||||
Main problem: Is using "maven.test.skip" string literally OK? Also,
|
||||
literally referencing "test" scope is probably not 100% clean.
|
||||
---
|
||||
.../artifact/resolver/DefaultArtifactResolver.java | 17 +++++
|
||||
.../main/java/org/apache/maven/DefaultMaven.java | 3 +-
|
||||
.../maven/SkipTestScopeDependencySelector.java | 72 ++++++++++++++++++++
|
||||
3 files changed, 91 insertions(+), 1 deletions(-)
|
||||
create mode 100644 maven-core/src/main/java/org/apache/maven/SkipTestScopeDependencySelector.java
|
||||
|
||||
diff --git a/maven-compat/src/main/java/org/apache/maven/artifact/resolver/DefaultArtifactResolver.java b/maven-compat/src/main/java/org/apache/maven/artifact/resolver/DefaultArtifactResolver.java
|
||||
index 2e65979..601ace7 100644
|
||||
--- a/maven-compat/src/main/java/org/apache/maven/artifact/resolver/DefaultArtifactResolver.java
|
||||
+++ b/maven-compat/src/main/java/org/apache/maven/artifact/resolver/DefaultArtifactResolver.java
|
||||
@@ -460,6 +460,23 @@ public class DefaultArtifactResolver
|
||||
return result;
|
||||
}
|
||||
|
||||
+ // When we find maven.test.skip property we remove dependencies
|
||||
+ // with scope "test" from artifact set. Current implementation
|
||||
+ // of artifacts doesn't implement "remove" method so create a
|
||||
+ // new object and copy non-test artifacts there
|
||||
+ if (System.getProperty("maven.test.skip") != null) {
|
||||
+ Set<Artifact> newArtifacts = new LinkedHashSet<Artifact>();
|
||||
+ for (Artifact artifact: artifacts)
|
||||
+ {
|
||||
+ String scope = artifact.getScope();
|
||||
+ if (scope == null || !scope.equals("test"))
|
||||
+ {
|
||||
+ newArtifacts.add(artifact);
|
||||
+ }
|
||||
+ }
|
||||
+ artifacts = newArtifacts;
|
||||
+ }
|
||||
+
|
||||
// After the collection we will have the artifact object in the result but they will not be resolved yet.
|
||||
result =
|
||||
artifactCollector.collect( artifacts, rootArtifact, managedVersions, collectionRequest, source,
|
||||
diff --git a/maven-core/src/main/java/org/apache/maven/DefaultMaven.java b/maven-core/src/main/java/org/apache/maven/DefaultMaven.java
|
||||
index 8fdb6ed..75d1e37 100644
|
||||
--- a/maven-core/src/main/java/org/apache/maven/DefaultMaven.java
|
||||
+++ b/maven-core/src/main/java/org/apache/maven/DefaultMaven.java
|
||||
@@ -31,6 +31,7 @@ import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Properties;
|
||||
|
||||
+import org.apache.maven.SkipTestScopeDependencySelector;
|
||||
import org.apache.maven.artifact.ArtifactUtils;
|
||||
import org.apache.maven.artifact.handler.manager.ArtifactHandlerManager;
|
||||
import org.apache.maven.eventspy.internal.EventSpyDispatcher;
|
||||
@@ -437,7 +438,7 @@ public class DefaultMaven
|
||||
|
||||
DependencySelector depFilter =
|
||||
new AndDependencySelector( new ScopeDependencySelector( "test", "provided" ), new OptionalDependencySelector(),
|
||||
- new ExclusionDependencySelector() );
|
||||
+ new ExclusionDependencySelector(), new SkipTestScopeDependencySelector() );
|
||||
session.setDependencySelector( depFilter );
|
||||
|
||||
DependencyGraphTransformer transformer =
|
||||
diff --git a/maven-core/src/main/java/org/apache/maven/SkipTestScopeDependencySelector.java b/maven-core/src/main/java/org/apache/maven/SkipTestScopeDependencySelector.java
|
||||
new file mode 100644
|
||||
index 0000000..60be724
|
||||
--- /dev/null
|
||||
+++ b/maven-core/src/main/java/org/apache/maven/SkipTestScopeDependencySelector.java
|
||||
@@ -0,0 +1,72 @@
|
||||
+package org.apache.maven;
|
||||
+
|
||||
+
|
||||
+import java.util.Arrays;
|
||||
+import java.util.Collection;
|
||||
+import java.util.Collections;
|
||||
+import java.util.HashSet;
|
||||
+
|
||||
+import org.sonatype.aether.collection.DependencyCollectionContext;
|
||||
+import org.sonatype.aether.collection.DependencySelector;
|
||||
+import org.sonatype.aether.graph.Dependency;
|
||||
+import org.sonatype.aether.RepositorySystemSession;
|
||||
+
|
||||
+/**
|
||||
+ * A dependency selector that filters dependencies with scope "test"
|
||||
+ * when tests are being skipped.
|
||||
+ *
|
||||
+ * @author Stanislav Ochotnicky
|
||||
+ */
|
||||
+public class SkipTestScopeDependencySelector
|
||||
+ implements DependencySelector
|
||||
+{
|
||||
+
|
||||
+ private boolean testSkip;
|
||||
+
|
||||
+ /**
|
||||
+ * Creates a new selector
|
||||
+ */
|
||||
+ public SkipTestScopeDependencySelector()
|
||||
+ {
|
||||
+ testSkip = System.getProperty("maven.test.skip") != null ? true : false;
|
||||
+ }
|
||||
+
|
||||
+ public boolean selectDependency( Dependency dependency )
|
||||
+ {
|
||||
+ if (testSkip && dependency.getScope().equals("test"))
|
||||
+ {
|
||||
+ return false;
|
||||
+ }
|
||||
+ else
|
||||
+ {
|
||||
+ return true;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ public DependencySelector deriveChildSelector( DependencyCollectionContext context )
|
||||
+ {
|
||||
+ return this;
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public boolean equals( Object obj )
|
||||
+ {
|
||||
+ if ( this == obj )
|
||||
+ {
|
||||
+ return true;
|
||||
+ }
|
||||
+ else if ( null == obj || !getClass().equals( obj.getClass() ) )
|
||||
+ {
|
||||
+ return false;
|
||||
+ }
|
||||
+
|
||||
+ return true;
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public int hashCode()
|
||||
+ {
|
||||
+ return 42;
|
||||
+ }
|
||||
+
|
||||
+}
|
||||
--
|
||||
1.7.6
|
||||
|
93
SkipTestScopeDependencySelector.java
Normal file
93
SkipTestScopeDependencySelector.java
Normal file
@ -0,0 +1,93 @@
|
||||
package org.sonatype.aether.util.graph.selector;
|
||||
|
||||
/*******************************************************************************
|
||||
* Copyright (c) 2010-2011 Sonatype, Inc.
|
||||
* All rights reserved. This program and the accompanying materials
|
||||
* are made available under the terms of the Eclipse Public License v1.0
|
||||
* and Apache License v2.0 which accompanies this distribution.
|
||||
* The Eclipse Public License is available at
|
||||
* http://www.eclipse.org/legal/epl-v10.html
|
||||
* The Apache License v2.0 is available at
|
||||
* http://www.apache.org/licenses/LICENSE-2.0.html
|
||||
* You may elect to redistribute this code under either of these licenses.
|
||||
*******************************************************************************/
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.HashSet;
|
||||
|
||||
import org.sonatype.aether.collection.DependencyCollectionContext;
|
||||
import org.sonatype.aether.collection.DependencySelector;
|
||||
import org.sonatype.aether.graph.Dependency;
|
||||
|
||||
/**
|
||||
* A dependency selector that filters transitive dependencies based on their scope. Direct dependencies are always
|
||||
* included regardless of their scope. <em>Note:</em> This filter does not assume any relationships between the scopes.
|
||||
* In particular, the filter is not aware of scopes that logically include other scopes.
|
||||
*
|
||||
* @author Benjamin Bentmann
|
||||
* @see Dependency#getScope()
|
||||
*/
|
||||
public class SkipTestScopeDependencySelector
|
||||
implements DependencySelector
|
||||
{
|
||||
|
||||
|
||||
/**
|
||||
* Creates a new selector using the specified includes and excludes.
|
||||
*
|
||||
* @param included The set of scopes to include, may be {@code null} or empty to include any scope.
|
||||
* @param excluded The set of scopes to exclude, may be {@code null} or empty to exclude no scope.
|
||||
*/
|
||||
public SkipTestScopeDependencySelector()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
public boolean selectDependency( Dependency dependency )
|
||||
{
|
||||
String scope = dependency.getScope();
|
||||
if (System.getProperty("maven.test.skip") != null &&
|
||||
scope == "test")
|
||||
return false;
|
||||
else return true;
|
||||
}
|
||||
|
||||
public DependencySelector deriveChildSelector( DependencyCollectionContext context )
|
||||
{
|
||||
if ( this.transitive || context.getDependency() == null )
|
||||
{
|
||||
return this;
|
||||
}
|
||||
|
||||
return new SkipTestScopeDependencySelector( true, included, excluded );
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals( Object obj )
|
||||
{
|
||||
if ( this == obj )
|
||||
{
|
||||
return true;
|
||||
}
|
||||
else if ( null == obj || !getClass().equals( obj.getClass() ) )
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
SkipTestScopeDependencySelector that = (SkipTestScopeDependencySelector) obj;
|
||||
return transitive == that.transitive && included.equals( that.included ) && excluded.equals( that.excluded );
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode()
|
||||
{
|
||||
int hash = 17;
|
||||
hash = hash * 31 + ( transitive ? 1 : 0 );
|
||||
hash = hash * 31 + included.hashCode();
|
||||
hash = hash * 31 + excluded.hashCode();
|
||||
return hash;
|
||||
}
|
||||
|
||||
}
|
@ -2,7 +2,7 @@
|
||||
|
||||
Name: maven
|
||||
Version: 3.0.3
|
||||
Release: 13%{?dist}
|
||||
Release: 14%{?dist}
|
||||
Summary: Java project management and project comprehension tool
|
||||
|
||||
Group: Development/Tools
|
||||
@ -36,6 +36,7 @@ Patch150: 0001-Add-plugin-api-deps.patch
|
||||
Patch151: 0003-Use-utf-8-source-encoding.patch
|
||||
# Patch2XX for non-upstreamable patches
|
||||
Patch200: 0002-Use-custom-resolver.patch
|
||||
Patch201: 0004-Fix-text-scope-skipping-with-maven.test.skip.patch
|
||||
|
||||
BuildRequires: maven
|
||||
BuildRequires: maven-parent
|
||||
@ -114,6 +115,7 @@ Requires: jpackage-utils
|
||||
%patch150 -p1
|
||||
%patch151 -p1
|
||||
%patch200 -p1
|
||||
%patch201 -p1
|
||||
|
||||
# get custom resolver in place
|
||||
mkdir -p maven-aether-provider/src/main/java/org/apache/maven/artifact/resolver \
|
||||
@ -332,6 +334,9 @@ install -Dm 644 %{SOURCE1} %{buildroot}%{_sysconfdir}/bash_completion.d/%{name}
|
||||
|
||||
|
||||
%changelog
|
||||
* Tue Aug 30 2011 Stanislav Ochotnicky <sochotnicky@redhat.com> - 3.0.3-14
|
||||
- Fix test scope skipping
|
||||
|
||||
* Mon Aug 22 2011 Stanislav Ochotnicky <sochotnicky@redhat.com> - 3.0.3-13
|
||||
- Remove unnecessary deps causing problems from lib/
|
||||
- Add utf-8 source encoding patch
|
||||
|
Loading…
Reference in New Issue
Block a user