Drop support for local mode
This commit is contained in:
parent
e1deac7d72
commit
2cf4fd6a25
@ -1,28 +0,0 @@
|
|||||||
From d0dbdcde31414336340a5089fecf4f93cb5125ad 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/6] 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 abc2065..efea352 100644
|
|
||||||
--- a/maven-plugin-api/pom.xml
|
|
||||||
+++ b/maven-plugin-api/pom.xml
|
|
||||||
@@ -52,6 +52,11 @@ under the License.
|
|
||||||
<groupId>org.sonatype.sisu</groupId>
|
|
||||||
<artifactId>sisu-inject-plexus</artifactId>
|
|
||||||
</dependency>
|
|
||||||
+ <dependency>
|
|
||||||
+ <groupId>org.codehaus.plexus</groupId>
|
|
||||||
+ <artifactId>plexus-container-default</artifactId>
|
|
||||||
+ <version>1.0.0</version>
|
|
||||||
+ </dependency>
|
|
||||||
</dependencies>
|
|
||||||
|
|
||||||
<build>
|
|
||||||
--
|
|
||||||
1.7.7.6
|
|
||||||
|
|
@ -1,104 +0,0 @@
|
|||||||
From c7d89b31e7764c514138135f91b2e290d410ebc7 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Mikolaj Izdebski <mizdebsk@redhat.com>
|
|
||||||
Date: Thu, 22 Nov 2012 15:28:28 +0100
|
|
||||||
Subject: [PATCH] Customize compiler plugin
|
|
||||||
|
|
||||||
In local mode require source to be >= 1.5 and target >= source.
|
|
||||||
---
|
|
||||||
.../model/validation/DefaultModelValidator.java | 68 ++++++++++++++++++++++
|
|
||||||
1 file changed, 68 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/maven-model-builder/src/main/java/org/apache/maven/model/validation/DefaultModelValidator.java b/maven-model-builder/src/main/java/org/apache/maven/model/validation/DefaultModelValidator.java
|
|
||||||
index 6c76173..bc0b836 100644
|
|
||||||
--- a/maven-model-builder/src/main/java/org/apache/maven/model/validation/DefaultModelValidator.java
|
|
||||||
+++ b/maven-model-builder/src/main/java/org/apache/maven/model/validation/DefaultModelValidator.java
|
|
||||||
@@ -19,6 +19,10 @@ package org.apache.maven.model.validation;
|
|
||||||
* under the License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
+import java.math.BigDecimal;
|
|
||||||
+import java.util.LinkedList;
|
|
||||||
+import org.codehaus.plexus.util.xml.Xpp3Dom;
|
|
||||||
+
|
|
||||||
import java.io.File;
|
|
||||||
import java.util.Arrays;
|
|
||||||
import java.util.HashMap;
|
|
||||||
@@ -342,6 +346,8 @@ public class DefaultModelValidator
|
|
||||||
"distributionManagement.snapshotRepository", request );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
+
|
|
||||||
+ customizeModel( model );
|
|
||||||
}
|
|
||||||
|
|
||||||
private void validateRawDependencies( ModelProblemCollector problems, List<Dependency> dependencies, String prefix,
|
|
||||||
@@ -924,4 +930,66 @@ public class DefaultModelValidator
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
+ private void customizeModel( Model model )
|
|
||||||
+ {
|
|
||||||
+ // Enable model customizations only in local mode
|
|
||||||
+ if ( System.getProperty( "maven.local.mode" ) == null )
|
|
||||||
+ return;
|
|
||||||
+
|
|
||||||
+ Build build = model.getBuild();
|
|
||||||
+ if ( build == null )
|
|
||||||
+ return;
|
|
||||||
+
|
|
||||||
+ List<Plugin> plugins = build.getPlugins();
|
|
||||||
+ if ( plugins == null )
|
|
||||||
+ return;
|
|
||||||
+
|
|
||||||
+ for ( Plugin plugin : plugins )
|
|
||||||
+ {
|
|
||||||
+ String groupId = plugin.getGroupId();
|
|
||||||
+ String artifactId = plugin.getArtifactId();
|
|
||||||
+
|
|
||||||
+ if ( groupId.equals( "org.apache.maven.plugins" ) && artifactId.equals( "maven-compiler-plugin" ) )
|
|
||||||
+ customizeCompilerPlugin( plugin );
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ private void customizeCompilerPlugin( Plugin plugin )
|
|
||||||
+ {
|
|
||||||
+ List<Object> configurations = new LinkedList<Object>();
|
|
||||||
+ configurations.add( plugin.getConfiguration() );
|
|
||||||
+
|
|
||||||
+ List<PluginExecution> executions = plugin.getExecutions();
|
|
||||||
+ for ( PluginExecution exec : executions )
|
|
||||||
+ configurations.add( exec.getConfiguration() );
|
|
||||||
+
|
|
||||||
+ for ( Object configObj : configurations )
|
|
||||||
+ {
|
|
||||||
+ try
|
|
||||||
+ {
|
|
||||||
+ Xpp3Dom config = (Xpp3Dom) configObj;
|
|
||||||
+ BigDecimal source = new BigDecimal( config.getChild( "source" ).getValue() );
|
|
||||||
+ BigDecimal target = new BigDecimal( config.getChild( "target" ).getValue() );
|
|
||||||
+
|
|
||||||
+ // Source must be at least 1.5
|
|
||||||
+ BigDecimal minSource = new BigDecimal( "1.5" );
|
|
||||||
+ if ( source.compareTo( minSource ) < 0 )
|
|
||||||
+ source = minSource;
|
|
||||||
+
|
|
||||||
+ // Target must not be less than source
|
|
||||||
+ if ( target.compareTo( source ) < 0 )
|
|
||||||
+ target = source;
|
|
||||||
+
|
|
||||||
+ config.getChild( "source" ).setValue( source.toString() );
|
|
||||||
+ config.getChild( "target" ).setValue( target.toString() );
|
|
||||||
+ }
|
|
||||||
+ catch ( NullPointerException e )
|
|
||||||
+ {
|
|
||||||
+ }
|
|
||||||
+ catch ( NumberFormatException e )
|
|
||||||
+ {
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
}
|
|
||||||
--
|
|
||||||
1.7.11.7
|
|
||||||
|
|
@ -1,224 +0,0 @@
|
|||||||
From 46e6dbc205065a670fa3b6e7c41e02e30b2fdb7a 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/6] Use custom resolver
|
|
||||||
|
|
||||||
WorkspaceReader is used to resolve main dependencies, but we had to
|
|
||||||
add this resolve to ProjectModelResolver and DefaultModelResolver as
|
|
||||||
well because these are instantiated early and used to build model of
|
|
||||||
project when WorkspaceReader is not available yet.
|
|
||||||
---
|
|
||||||
.../repository/internal/DefaultModelResolver.java | 9 +++++++++
|
|
||||||
.../org/apache/maven/artifact/ArtifactUtils.java | 10 ++++++++--
|
|
||||||
.../main/java/org/apache/maven/DefaultMaven.java | 7 +++++++
|
|
||||||
.../apache/maven/plugin/MavenPluginValidator.java | 5 ++++-
|
|
||||||
.../internal/DefaultPluginVersionResolver.java | 9 +++++++++
|
|
||||||
.../apache/maven/project/ProjectModelResolver.java | 9 +++++++++
|
|
||||||
.../project/artifact/MavenMetadataSource.java | 9 +++++++++
|
|
||||||
.../model/validation/DefaultModelValidator.java | 16 +++++++++++++---
|
|
||||||
8 files changed, 68 insertions(+), 6 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultModelResolver.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultModelResolver.java
|
|
||||||
index 96b9fc3..f30bf94 100644
|
|
||||||
--- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultModelResolver.java
|
|
||||||
+++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultModelResolver.java
|
|
||||||
@@ -40,6 +40,7 @@ import org.sonatype.aether.repository.RemoteRepository;
|
|
||||||
import org.sonatype.aether.resolution.ArtifactRequest;
|
|
||||||
import org.sonatype.aether.resolution.ArtifactResolutionException;
|
|
||||||
import org.sonatype.aether.util.artifact.DefaultArtifact;
|
|
||||||
+import org.apache.maven.artifact.resolver.JavadirWorkspaceReader;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* A model resolver to assist building of dependency POMs. This resolver gives priority to those repositories that have
|
|
||||||
@@ -114,6 +115,14 @@ class DefaultModelResolver
|
|
||||||
throws UnresolvableModelException
|
|
||||||
{
|
|
||||||
Artifact pomArtifact = new DefaultArtifact( groupId, artifactId, "", "pom", version );
|
|
||||||
+ if ( System.getProperty("maven.local.mode") != null) {
|
|
||||||
+ JavadirWorkspaceReader wReader = new JavadirWorkspaceReader();
|
|
||||||
+ File pomFile = wReader.findArtifact(pomArtifact);
|
|
||||||
+ // if pom file does not exist continue resolving using different
|
|
||||||
+ // resolvers (maybe they will have more luck)
|
|
||||||
+ if ( pomFile != null )
|
|
||||||
+ return new FileModelSource( pomFile );
|
|
||||||
+ }
|
|
||||||
|
|
||||||
try
|
|
||||||
{
|
|
||||||
diff --git a/maven-artifact/src/main/java/org/apache/maven/artifact/ArtifactUtils.java b/maven-artifact/src/main/java/org/apache/maven/artifact/ArtifactUtils.java
|
|
||||||
index 8efc45c..df7d4e9 100644
|
|
||||||
--- a/maven-artifact/src/main/java/org/apache/maven/artifact/ArtifactUtils.java
|
|
||||||
+++ b/maven-artifact/src/main/java/org/apache/maven/artifact/ArtifactUtils.java
|
|
||||||
@@ -99,12 +99,18 @@ public final class ArtifactUtils
|
|
||||||
{
|
|
||||||
throw new NullPointerException( "artifactId is null" );
|
|
||||||
}
|
|
||||||
- if ( version == null )
|
|
||||||
+ // in local mode we ignore versions because these would only cause
|
|
||||||
+ // problems
|
|
||||||
+ if ( version == null && System.getProperty("maven.local.mode") == null )
|
|
||||||
{
|
|
||||||
throw new NullPointerException( "version is null" );
|
|
||||||
}
|
|
||||||
|
|
||||||
- return groupId + ":" + artifactId + ":" + version;
|
|
||||||
+ if( System.getProperty("maven.local.mode") == null || version != null) {
|
|
||||||
+ return groupId + ":" + artifactId + ":" + version;
|
|
||||||
+ } else {
|
|
||||||
+ return versionlessKey(groupId, artifactId);
|
|
||||||
+ }
|
|
||||||
}
|
|
||||||
|
|
||||||
public static Map<String, Artifact> artifactMapByVersionlessId( Collection<Artifact> artifacts )
|
|
||||||
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 cd944a8..7bff4a0 100644
|
|
||||||
--- a/maven-core/src/main/java/org/apache/maven/DefaultMaven.java
|
|
||||||
+++ b/maven-core/src/main/java/org/apache/maven/DefaultMaven.java
|
|
||||||
@@ -56,6 +56,7 @@ import org.apache.maven.project.ProjectBuildingException;
|
|
||||||
import org.apache.maven.project.ProjectBuildingRequest;
|
|
||||||
import org.apache.maven.project.ProjectBuildingResult;
|
|
||||||
import org.apache.maven.project.ProjectSorter;
|
|
||||||
+import org.apache.maven.artifact.resolver.JavadirWorkspaceReader;
|
|
||||||
import org.apache.maven.repository.DelegatingLocalArtifactRepository;
|
|
||||||
import org.apache.maven.repository.LocalRepositoryNotAccessibleException;
|
|
||||||
import org.apache.maven.settings.Mirror;
|
|
||||||
@@ -375,6 +376,12 @@ public class DefaultMaven
|
|
||||||
session.setWorkspaceReader( workspaceRepository );
|
|
||||||
}
|
|
||||||
|
|
||||||
+ // Set our own workspace reader to resolve from /usr/share/java
|
|
||||||
+ if ( System.getProperty("maven.local.mode") != null)
|
|
||||||
+ {
|
|
||||||
+ session.setWorkspaceReader(new JavadirWorkspaceReader());
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
DefaultSettingsDecryptionRequest decrypt = new DefaultSettingsDecryptionRequest();
|
|
||||||
decrypt.setProxies( request.getProxies() );
|
|
||||||
decrypt.setServers( request.getServers() );
|
|
||||||
diff --git a/maven-core/src/main/java/org/apache/maven/plugin/MavenPluginValidator.java b/maven-core/src/main/java/org/apache/maven/plugin/MavenPluginValidator.java
|
|
||||||
index 2eb2738..28fcdd9 100644
|
|
||||||
--- a/maven-core/src/main/java/org/apache/maven/plugin/MavenPluginValidator.java
|
|
||||||
+++ b/maven-core/src/main/java/org/apache/maven/plugin/MavenPluginValidator.java
|
|
||||||
@@ -60,7 +60,10 @@ public class MavenPluginValidator
|
|
||||||
errors.add( "Plugin's descriptor contains the wrong artifact ID: " + pluginDescriptor.getArtifactId() );
|
|
||||||
}
|
|
||||||
|
|
||||||
- if ( !pluginArtifact.getBaseVersion().equals( pluginDescriptor.getVersion() ) )
|
|
||||||
+ // ignore incorrect version in local mode (we can have different
|
|
||||||
+ // versions in /usr/share/java
|
|
||||||
+ if ( !pluginArtifact.getBaseVersion().equals( pluginDescriptor.getVersion() )
|
|
||||||
+ && System.getProperty("maven.local.mode") == null)
|
|
||||||
{
|
|
||||||
errors.add( "Plugin's descriptor contains the wrong version: " + pluginDescriptor.getVersion() );
|
|
||||||
}
|
|
||||||
diff --git a/maven-core/src/main/java/org/apache/maven/plugin/version/internal/DefaultPluginVersionResolver.java b/maven-core/src/main/java/org/apache/maven/plugin/version/internal/DefaultPluginVersionResolver.java
|
|
||||||
index a215d28..754406a 100644
|
|
||||||
--- a/maven-core/src/main/java/org/apache/maven/plugin/version/internal/DefaultPluginVersionResolver.java
|
|
||||||
+++ b/maven-core/src/main/java/org/apache/maven/plugin/version/internal/DefaultPluginVersionResolver.java
|
|
||||||
@@ -89,6 +89,15 @@ public class DefaultPluginVersionResolver
|
|
||||||
throws PluginVersionResolutionException
|
|
||||||
{
|
|
||||||
logger.debug( "Resolving plugin version for " + request.getGroupId() + ":" + request.getArtifactId() );
|
|
||||||
+ if (System.getProperty("maven.local.mode") != null) {
|
|
||||||
+ // in local mode we always use "latest" as a resolved version
|
|
||||||
+ // (we ignore it anyway)
|
|
||||||
+ DefaultPluginVersionResult result = new DefaultPluginVersionResult("latest");
|
|
||||||
+ result.setRepository(request.getRepositorySession().getWorkspaceReader().getRepository());
|
|
||||||
+ logger.debug( "Resolved plugin version for " + request.getGroupId() + ":" + request.getArtifactId()
|
|
||||||
+ + " to latest from repository " + result.getRepository());
|
|
||||||
+ return result;
|
|
||||||
+ }
|
|
||||||
|
|
||||||
PluginVersionResult result = resolveFromProject( request );
|
|
||||||
|
|
||||||
diff --git a/maven-core/src/main/java/org/apache/maven/project/ProjectModelResolver.java b/maven-core/src/main/java/org/apache/maven/project/ProjectModelResolver.java
|
|
||||||
index e6cc411..bab7885 100644
|
|
||||||
--- a/maven-core/src/main/java/org/apache/maven/project/ProjectModelResolver.java
|
|
||||||
+++ b/maven-core/src/main/java/org/apache/maven/project/ProjectModelResolver.java
|
|
||||||
@@ -42,6 +42,7 @@ import org.sonatype.aether.repository.RemoteRepository;
|
|
||||||
import org.sonatype.aether.resolution.ArtifactRequest;
|
|
||||||
import org.sonatype.aether.resolution.ArtifactResolutionException;
|
|
||||||
import org.sonatype.aether.util.artifact.DefaultArtifact;
|
|
||||||
+import org.apache.maven.artifact.resolver.JavadirWorkspaceReader;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* A model resolver to assist building of projects. This resolver gives priority to those repositories that have been
|
|
||||||
@@ -147,6 +148,14 @@ class ProjectModelResolver
|
|
||||||
if ( pomFile == null )
|
|
||||||
{
|
|
||||||
Artifact pomArtifact = new DefaultArtifact( groupId, artifactId, "", "pom", version );
|
|
||||||
+ if ( System.getProperty("maven.local.mode") != null) {
|
|
||||||
+ JavadirWorkspaceReader wReader = new JavadirWorkspaceReader();
|
|
||||||
+ pomFile = wReader.findArtifact(pomArtifact);
|
|
||||||
+ // if pom file does not exist continue resolving using different resolvers
|
|
||||||
+ // (maybe they will have more luck)
|
|
||||||
+ if ( pomFile != null)
|
|
||||||
+ return new FileModelSource( pomFile );
|
|
||||||
+ }
|
|
||||||
|
|
||||||
try
|
|
||||||
{
|
|
||||||
diff --git a/maven-core/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java b/maven-core/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java
|
|
||||||
index 919f0ee..68a509d 100644
|
|
||||||
--- a/maven-core/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java
|
|
||||||
+++ b/maven-core/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java
|
|
||||||
@@ -325,6 +325,15 @@ public class MavenMetadataSource
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
+ // this is a workaround for 669034
|
|
||||||
+ // Seems like plexus-container-default has some quirks that
|
|
||||||
+ // cause it to lose version. Needs more looking into and fix it
|
|
||||||
+ // properly
|
|
||||||
+ if (dependency.getVersion() == null && System.getProperty("maven.local.mode") != null)
|
|
||||||
+ {
|
|
||||||
+ System.out.println("FIXING NULL VERSION:" + dependency.getGroupId() + ":" + dependency.getArtifactId() + ":" + dependency.getVersion());
|
|
||||||
+ dependency.setVersion("1.0.0");
|
|
||||||
+ }
|
|
||||||
VersionRange versionRange = VersionRange.createFromVersionSpec( dependency.getVersion() );
|
|
||||||
|
|
||||||
Artifact dependencyArtifact =
|
|
||||||
diff --git a/maven-model-builder/src/main/java/org/apache/maven/model/validation/DefaultModelValidator.java b/maven-model-builder/src/main/java/org/apache/maven/model/validation/DefaultModelValidator.java
|
|
||||||
index d7a6ac9..6c76173 100644
|
|
||||||
--- a/maven-model-builder/src/main/java/org/apache/maven/model/validation/DefaultModelValidator.java
|
|
||||||
+++ b/maven-model-builder/src/main/java/org/apache/maven/model/validation/DefaultModelValidator.java
|
|
||||||
@@ -433,7 +433,11 @@ public class DefaultModelValidator
|
|
||||||
|
|
||||||
if ( !management )
|
|
||||||
{
|
|
||||||
- validateVersion( prefix + "version", problems, errOn30, d.getVersion(), d.getManagementKey(), d );
|
|
||||||
+ // in local mode set version to "latest" and validate
|
|
||||||
+ if(System.getProperty("maven.local.mode") != null && d.getVersion() == null)
|
|
||||||
+ d.setVersion("latest");
|
|
||||||
+ else
|
|
||||||
+ validateVersion( prefix + "version", problems, errOn30, d.getVersion(), d.getManagementKey(), d );
|
|
||||||
|
|
||||||
/*
|
|
||||||
* TODO: Extensions like Flex Mojos use custom scopes like "merged", "internal", "external", etc.
|
|
||||||
@@ -461,7 +465,11 @@ public class DefaultModelValidator
|
|
||||||
{
|
|
||||||
validateEffectiveDependency( problems, d, false, prefix, request );
|
|
||||||
|
|
||||||
- validateVersion( prefix + "version", problems, errOn30, d.getVersion(), d.getManagementKey(), d );
|
|
||||||
+ // in local mode set version to "latest" and validate
|
|
||||||
+ if(System.getProperty("maven.local.mode") != null && d.getVersion() == null)
|
|
||||||
+ d.setVersion("latest");
|
|
||||||
+ else
|
|
||||||
+ validateVersion( prefix + "version", problems, errOn30, d.getVersion(), d.getManagementKey(), d );
|
|
||||||
|
|
||||||
validateEnum( prefix + "scope", problems, errOn30, d.getScope(), d.getManagementKey(), d, "compile",
|
|
||||||
"runtime", "system" );
|
|
||||||
@@ -480,7 +488,9 @@ public class DefaultModelValidator
|
|
||||||
{
|
|
||||||
validateStringNotEmpty( prefix + "type", problems, Severity.ERROR, d.getType(), d.getManagementKey(), d );
|
|
||||||
|
|
||||||
- validateStringNotEmpty( prefix + "version", problems, Severity.ERROR, d.getVersion(), d.getManagementKey(),
|
|
||||||
+ // in local mode ignore missing version completely
|
|
||||||
+ if(System.getProperty("maven.local.mode") == null)
|
|
||||||
+ validateStringNotEmpty( prefix + "version", problems, Severity.ERROR, d.getVersion(), d.getManagementKey(),
|
|
||||||
d );
|
|
||||||
}
|
|
||||||
|
|
||||||
--
|
|
||||||
1.7.7.6
|
|
||||||
|
|
@ -1,24 +0,0 @@
|
|||||||
From b38e59d0512fed8f376fcbdea71204b04cdee1cb Mon Sep 17 00:00:00 2001
|
|
||||||
From: Stanislav Ochotnicky <sochotnicky@redhat.com>
|
|
||||||
Date: Mon, 22 Aug 2011 15:59:53 +0200
|
|
||||||
Subject: [PATCH 3/6] Use utf-8 source encoding
|
|
||||||
|
|
||||||
---
|
|
||||||
pom.xml | 1 +
|
|
||||||
1 files changed, 1 insertions(+), 0 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/pom.xml b/pom.xml
|
|
||||||
index 3aacefc..8cba9cc 100644
|
|
||||||
--- a/pom.xml
|
|
||||||
+++ b/pom.xml
|
|
||||||
@@ -65,6 +65,7 @@
|
|
||||||
<siteDeployUrl>scp://people.apache.org/www/maven.apache.org/ref/${project.version}/</siteDeployUrl>
|
|
||||||
<siteUrl>http://maven.apache.org/ref/${project.version}/</siteUrl>
|
|
||||||
|
|
||||||
+ <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
|
||||||
</properties>
|
|
||||||
|
|
||||||
<mailingLists>
|
|
||||||
--
|
|
||||||
1.7.7.6
|
|
||||||
|
|
@ -1,160 +0,0 @@
|
|||||||
From ed8122f5538d9000cd8a8579be8a107249e7b022 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/6] 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 | 18 ++++++
|
|
||||||
.../main/java/org/apache/maven/DefaultMaven.java | 6 +-
|
|
||||||
.../maven/SkipTestScopeDependencySelector.java | 72 ++++++++++++++++++++++
|
|
||||||
3 files changed, 95 insertions(+), 1 deletion(-)
|
|
||||||
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 9c8364d..761ff92 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,24 @@ 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.local.mode") != null &&
|
|
||||||
+ 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 7bff4a0..71bbd29 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;
|
|
||||||
@@ -449,7 +450,10 @@ public class DefaultMaven
|
|
||||||
|
|
||||||
DependencySelector depFilter =
|
|
||||||
new AndDependencySelector( new ScopeDependencySelector( "test", "provided" ), new OptionalDependencySelector(),
|
|
||||||
- new ExclusionDependencySelector() );
|
|
||||||
+ new ExclusionDependencySelector());
|
|
||||||
+ if ( System.getProperty("maven.local.mode") != null) {
|
|
||||||
+ depFilter = new AndDependencySelector(depFilter, 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.11.7
|
|
||||||
|
|
@ -1,33 +0,0 @@
|
|||||||
From 62e01ae45ea1da847e4cabdcbd64950654f9d4a5 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Stanislav Ochotnicky <sochotnicky@redhat.com>
|
|
||||||
Date: Thu, 9 Feb 2012 11:11:26 +0100
|
|
||||||
Subject: [PATCH 6/6] Make compiler plugin default to source 1.5
|
|
||||||
|
|
||||||
This will help with modello problems and is generally better probably
|
|
||||||
---
|
|
||||||
pom.xml | 9 +++++++++
|
|
||||||
1 files changed, 9 insertions(+), 0 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/pom.xml b/pom.xml
|
|
||||||
index c55f33c..fd27b03 100644
|
|
||||||
--- a/pom.xml
|
|
||||||
+++ b/pom.xml
|
|
||||||
@@ -393,6 +393,15 @@
|
|
||||||
<pluginManagement>
|
|
||||||
<plugins>
|
|
||||||
<plugin>
|
|
||||||
+ <groupId>org.apache.maven.plugins</groupId>
|
|
||||||
+ <artifactId>maven-compiler-plugin</artifactId>
|
|
||||||
+ <version>2.1</version>
|
|
||||||
+ <configuration>
|
|
||||||
+ <source>1.5</source>
|
|
||||||
+ <target>1.5</target>
|
|
||||||
+ </configuration>
|
|
||||||
+ </plugin>
|
|
||||||
+ <plugin>
|
|
||||||
<groupId>org.codehaus.plexus</groupId>
|
|
||||||
<artifactId>plexus-component-metadata</artifactId>
|
|
||||||
<version>${plexusVersion}</version>
|
|
||||||
--
|
|
||||||
1.7.7.6
|
|
||||||
|
|
@ -1,198 +0,0 @@
|
|||||||
package org.apache.maven.artifact.resolver;
|
|
||||||
|
|
||||||
import java.io.File;
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.Arrays;
|
|
||||||
import java.util.Hashtable;
|
|
||||||
import java.util.LinkedList;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import org.apache.maven.artifact.repository.MavenJPackageDepmap;
|
|
||||||
import org.sonatype.aether.artifact.Artifact;
|
|
||||||
import org.sonatype.aether.repository.WorkspaceReader;
|
|
||||||
import org.sonatype.aether.repository.WorkspaceRepository;
|
|
||||||
|
|
||||||
public class JavadirWorkspaceReader implements WorkspaceReader {
|
|
||||||
private WorkspaceRepository workspaceRepository;
|
|
||||||
|
|
||||||
private static final char GROUP_SEPARATOR = '.';
|
|
||||||
private static final char PATH_SEPARATOR = File.separatorChar;
|
|
||||||
|
|
||||||
public JavadirWorkspaceReader() {
|
|
||||||
workspaceRepository = new WorkspaceRepository("javadir-workspace");
|
|
||||||
}
|
|
||||||
|
|
||||||
public WorkspaceRepository getRepository() {
|
|
||||||
return workspaceRepository;
|
|
||||||
}
|
|
||||||
|
|
||||||
private static final String LOG_FILE = System
|
|
||||||
.getProperty("maven.resolver.logfile");
|
|
||||||
private static final java.util.concurrent.Semaphore LOG_SEMAPHORE = new java.util.concurrent.Semaphore(
|
|
||||||
1);
|
|
||||||
|
|
||||||
public File findArtifact(Artifact artifact) {
|
|
||||||
File f = findArtifactImpl(artifact);
|
|
||||||
|
|
||||||
LOG_SEMAPHORE.acquireUninterruptibly();
|
|
||||||
try {
|
|
||||||
if (LOG_FILE != null && f != null) {
|
|
||||||
java.io.FileOutputStream fos = new java.io.FileOutputStream(
|
|
||||||
LOG_FILE, true);
|
|
||||||
java.io.PrintStream ps = new java.io.PrintStream(fos);
|
|
||||||
ps.println(f.getAbsolutePath());
|
|
||||||
ps.close();
|
|
||||||
}
|
|
||||||
} catch (Exception _) {
|
|
||||||
} finally {
|
|
||||||
LOG_SEMAPHORE.release();
|
|
||||||
return f;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private File findArtifactImpl(Artifact artifact) {
|
|
||||||
MavenJPackageDepmap.debug("=============JAVADIRREADER-FIND_ARTIFACT: "
|
|
||||||
+ artifact.getArtifactId());
|
|
||||||
StringBuffer path = new StringBuffer();
|
|
||||||
File ret = new File("");
|
|
||||||
String artifactId = artifact.getArtifactId();
|
|
||||||
String groupId = artifact.getGroupId();
|
|
||||||
String version = artifact.getVersion();
|
|
||||||
String wantedVersion = new String(version);
|
|
||||||
|
|
||||||
// let's check out local repo first
|
|
||||||
String m2_path = System.getProperty("maven.repo.local");
|
|
||||||
String gid_path = groupId.replace(".", File.separator);
|
|
||||||
String art_path = m2_path + File.separator + gid_path + File.separator
|
|
||||||
+ artifactId + File.separator + version + File.separator
|
|
||||||
+ artifactId + "-" + version + "." + artifact.getExtension();
|
|
||||||
|
|
||||||
ret = new File(art_path);
|
|
||||||
if (ret.isFile()) {
|
|
||||||
MavenJPackageDepmap.debug("Returning " + art_path.toString());
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
// maven.repo.local does not have needed GAV (that's normal), so let's
|
|
||||||
// just continue with system packages
|
|
||||||
MavenJPackageDepmap.debug("Wanted GROUPID=" + groupId);
|
|
||||||
MavenJPackageDepmap.debug("Wanted ARTIFACTID=" + artifactId);
|
|
||||||
MavenJPackageDepmap.debug("Wanted VERSION=" + version);
|
|
||||||
ArrayList<Hashtable<String, String>> maps = new ArrayList<Hashtable<String, String>>();
|
|
||||||
|
|
||||||
if (!groupId.startsWith("JPP")) {
|
|
||||||
MavenJPackageDepmap map = MavenJPackageDepmap.getInstance();
|
|
||||||
// let's try to get exact GAV first
|
|
||||||
Hashtable<String, String> newInfo = map.getMappedInfo(groupId,
|
|
||||||
artifactId, version);
|
|
||||||
if (newInfo == null) {
|
|
||||||
// exact GAV does not exist in our mapping so let's just get all
|
|
||||||
// GAs and iterate until we find one that exists. Note that only
|
|
||||||
// one non-versioned jar/pom for given GA should exist in order
|
|
||||||
// to ensure reproducibility
|
|
||||||
|
|
||||||
maps = map.getUnversionedMappedInfo(groupId, artifactId,
|
|
||||||
version);
|
|
||||||
} else {
|
|
||||||
maps.add(newInfo);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
for (Hashtable<String, String> map : maps) {
|
|
||||||
groupId = map.get("group");
|
|
||||||
artifactId = map.get("artifact");
|
|
||||||
version = map.get("version");
|
|
||||||
|
|
||||||
MavenJPackageDepmap.debug("Resolved GROUPID=" + groupId);
|
|
||||||
MavenJPackageDepmap.debug("Resolved ARTIFACTID=" + artifactId);
|
|
||||||
MavenJPackageDepmap.debug("Resolved VERSION=" + version);
|
|
||||||
|
|
||||||
if (artifact.getExtension().equals("pom")) {
|
|
||||||
path = getPOMPath(groupId, artifactId, wantedVersion);
|
|
||||||
ret = new File(path.toString());
|
|
||||||
if (ret.isFile()) {
|
|
||||||
MavenJPackageDepmap.debug("Returning " + path.toString());
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
ArrayList<String> repos = new ArrayList<String>();
|
|
||||||
String custom_paths = System.getProperty(
|
|
||||||
"maven.local.jar.paths", null);
|
|
||||||
if (custom_paths != null) {
|
|
||||||
repos.addAll(Arrays.asList(custom_paths.split(":")));
|
|
||||||
}
|
|
||||||
repos.add("/usr/share/maven/repository/");
|
|
||||||
repos.add("/usr/share/maven/repository-java-jni/");
|
|
||||||
repos.add("/usr/share/maven/repository-jni/");
|
|
||||||
|
|
||||||
String verRelativeArtifactPath = groupId + "/" + artifactId
|
|
||||||
+ "-" + wantedVersion + "." + artifact.getExtension();
|
|
||||||
String relativeArtifactPath = groupId + "/" + artifactId + "."
|
|
||||||
+ artifact.getExtension();
|
|
||||||
for (String repo : repos) {
|
|
||||||
|
|
||||||
ret = new File(repo, verRelativeArtifactPath);
|
|
||||||
MavenJPackageDepmap.debug("Looking for " + ret.getPath());
|
|
||||||
if (ret.isFile()) {
|
|
||||||
MavenJPackageDepmap.debug("Returning " + ret.getPath());
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
ret = new File(repo, relativeArtifactPath);
|
|
||||||
MavenJPackageDepmap.debug("Looking for " + ret.getPath());
|
|
||||||
if (ret.isFile()) {
|
|
||||||
MavenJPackageDepmap.debug("Returning " + ret.getPath());
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
// if file doesn't exist return null to delegate to other
|
|
||||||
// resolvers (reactor/local repo)
|
|
||||||
MavenJPackageDepmap.debug("Returning null for gid:aid =>" + groupId
|
|
||||||
+ ":" + artifactId);
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<String> findVersions(Artifact artifact) {
|
|
||||||
List<String> ret = new LinkedList<String>();
|
|
||||||
ret.add("LATEST");
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
private StringBuffer getPOMPath(String groupId, String artifactId,
|
|
||||||
String version) {
|
|
||||||
String fName = groupId.replace(PATH_SEPARATOR, GROUP_SEPARATOR) + "-"
|
|
||||||
+ artifactId + ".pom";
|
|
||||||
String verfName = groupId.replace(PATH_SEPARATOR, GROUP_SEPARATOR)
|
|
||||||
+ "-" + artifactId + "-" + version + ".pom";
|
|
||||||
File f;
|
|
||||||
String custom_paths = System.getProperty("maven.local.pom.paths", null);
|
|
||||||
|
|
||||||
ArrayList<String> pomRepos = new ArrayList<String>();
|
|
||||||
if (custom_paths != null) {
|
|
||||||
pomRepos.addAll(Arrays.asList(custom_paths.split(":")));
|
|
||||||
}
|
|
||||||
pomRepos.add("/usr/share/maven2/poms/");
|
|
||||||
pomRepos.add("/usr/share/maven/poms/");
|
|
||||||
pomRepos.add("/usr/share/maven-poms/");
|
|
||||||
|
|
||||||
for (String pomRepo : pomRepos) {
|
|
||||||
f = new File(pomRepo, verfName);
|
|
||||||
MavenJPackageDepmap.debug("Looking for " + f.getPath());
|
|
||||||
if (f.exists()) {
|
|
||||||
return new StringBuffer(f.getPath());
|
|
||||||
}
|
|
||||||
|
|
||||||
f = new File(pomRepo, fName);
|
|
||||||
MavenJPackageDepmap.debug("Looking for " + f.getPath());
|
|
||||||
if (f.exists()) {
|
|
||||||
return new StringBuffer(f.getPath());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// final fallback to m2 default poms
|
|
||||||
return new StringBuffer("/usr/share/maven2/default_poms/" + fName);
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,313 +0,0 @@
|
|||||||
package org.apache.maven.artifact.repository;
|
|
||||||
|
|
||||||
import java.io.File;
|
|
||||||
import java.io.FileInputStream;
|
|
||||||
import java.io.FileNotFoundException;
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.io.InputStream;
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.Hashtable;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.StringTokenizer;
|
|
||||||
|
|
||||||
import javax.xml.parsers.DocumentBuilder;
|
|
||||||
import javax.xml.parsers.DocumentBuilderFactory;
|
|
||||||
import javax.xml.parsers.ParserConfigurationException;
|
|
||||||
|
|
||||||
import org.w3c.dom.Document;
|
|
||||||
import org.w3c.dom.Element;
|
|
||||||
import org.w3c.dom.NodeList;
|
|
||||||
import org.xml.sax.SAXException;
|
|
||||||
|
|
||||||
public class MavenJPackageDepmap {
|
|
||||||
|
|
||||||
private static class ArtifactDefinition {
|
|
||||||
String groupId = null;
|
|
||||||
String artifactId = null;
|
|
||||||
String version = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* @author Stanislav Ochotnicky <sochotnicky@redhat.com>
|
|
||||||
*
|
|
||||||
* This class is used to wrap around fragments that are mapping
|
|
||||||
* artifacts to jar files in our _javadir. These used to be
|
|
||||||
* processed in a macro after every package installation. Fragments
|
|
||||||
* themselves are not proper xml files (they have no root element)
|
|
||||||
* so we have to fix them by wrapping them in one root element.
|
|
||||||
*/
|
|
||||||
private static class WrapFragmentStream extends InputStream {
|
|
||||||
String startTag = "<deps>";
|
|
||||||
String endTag = "</deps>";
|
|
||||||
byte fragmentContent[];
|
|
||||||
int position;
|
|
||||||
|
|
||||||
WrapFragmentStream(String fragmentPath) throws IOException {
|
|
||||||
FileInputStream fin = new FileInputStream(fragmentPath);
|
|
||||||
int nBytes = fin.available();
|
|
||||||
byte tmpContent[] = new byte[nBytes];
|
|
||||||
fin.read(tmpContent);
|
|
||||||
fin.close();
|
|
||||||
byte startBytes[] = startTag.getBytes();
|
|
||||||
byte endBytes[] = endTag.getBytes();
|
|
||||||
fragmentContent = new byte[nBytes + startBytes.length
|
|
||||||
+ endBytes.length];
|
|
||||||
System.arraycopy(startBytes, 0, fragmentContent, 0,
|
|
||||||
startBytes.length);
|
|
||||||
System.arraycopy(tmpContent, 0, fragmentContent, startBytes.length,
|
|
||||||
tmpContent.length);
|
|
||||||
System.arraycopy(endBytes, 0, fragmentContent, startBytes.length
|
|
||||||
+ tmpContent.length, endBytes.length);
|
|
||||||
position = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int read() throws IOException {
|
|
||||||
if (position < fragmentContent.length) {
|
|
||||||
return fragmentContent[position++];
|
|
||||||
} else {
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private static MavenJPackageDepmap instance;
|
|
||||||
private static Hashtable<String, String> jppArtifactMap;
|
|
||||||
private static Hashtable<String, ArrayList<String>> jppUnversionedArtifactMap;
|
|
||||||
|
|
||||||
private MavenJPackageDepmap() {
|
|
||||||
jppArtifactMap = new Hashtable<String, String>();
|
|
||||||
jppUnversionedArtifactMap = new Hashtable<String, ArrayList<String>>();
|
|
||||||
buildJppArtifactMap();
|
|
||||||
}
|
|
||||||
|
|
||||||
public static MavenJPackageDepmap getInstance() {
|
|
||||||
if (instance == null) {
|
|
||||||
instance = new MavenJPackageDepmap();
|
|
||||||
}
|
|
||||||
|
|
||||||
return instance;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This function can be used to query exact version of an artifact.
|
|
||||||
*
|
|
||||||
* @param groupId
|
|
||||||
* @param artifactId
|
|
||||||
* @param version
|
|
||||||
* @return Hashtable mapping for groupId, artifactId and version or null if
|
|
||||||
* exact mapping not found
|
|
||||||
*/
|
|
||||||
public Hashtable<String, String> getMappedInfo(String groupId,
|
|
||||||
String artifactId, String version) {
|
|
||||||
|
|
||||||
Hashtable<String, String> jppDep;
|
|
||||||
String idToCheck, jppCombination;
|
|
||||||
|
|
||||||
idToCheck = groupId + "," + artifactId + "," + version;
|
|
||||||
|
|
||||||
jppCombination = (String) jppArtifactMap.get(idToCheck);
|
|
||||||
jppDep = null;
|
|
||||||
if (jppCombination != null && jppCombination != "") {
|
|
||||||
StringTokenizer st = new StringTokenizer(jppCombination, ",");
|
|
||||||
jppDep = new Hashtable<String, String>();
|
|
||||||
jppDep.put("group", st.nextToken());
|
|
||||||
jppDep.put("artifact", st.nextToken());
|
|
||||||
jppDep.put("version", st.nextToken());
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
return jppDep;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This function can be used to query for all possible artifact resolutions.
|
|
||||||
* It works with multiple duplicate gid:aid mappings, but only one should
|
|
||||||
* have unversioned files (default version) to work properly later
|
|
||||||
*
|
|
||||||
* @param groupId
|
|
||||||
* @param artifactId
|
|
||||||
* @param version
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
public ArrayList<Hashtable<String, String>> getUnversionedMappedInfo(
|
|
||||||
String groupId, String artifactId, String version) {
|
|
||||||
|
|
||||||
Hashtable<String, String> jppDep;
|
|
||||||
String idToCheck;
|
|
||||||
List<String> maps;
|
|
||||||
|
|
||||||
idToCheck = groupId + "," + artifactId;
|
|
||||||
|
|
||||||
maps = jppUnversionedArtifactMap.get(idToCheck);
|
|
||||||
ArrayList<Hashtable<String, String>> ret = new ArrayList<Hashtable<String, String>>();
|
|
||||||
if (maps != null) {
|
|
||||||
for (String jppPart : maps) {
|
|
||||||
jppDep = new Hashtable<String, String>();
|
|
||||||
StringTokenizer st = new StringTokenizer(jppPart, ",");
|
|
||||||
|
|
||||||
jppDep.put("group", st.nextToken());
|
|
||||||
jppDep.put("artifact", st.nextToken());
|
|
||||||
jppDep.put("version", st.nextToken());
|
|
||||||
|
|
||||||
// we add to index 0 to make it reversed order for compatibility
|
|
||||||
// with older code
|
|
||||||
ret.add(0, jppDep);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
private static void buildJppArtifactMap() {
|
|
||||||
|
|
||||||
if (new File("/etc/maven/maven2-versionless-depmap.xml").exists())
|
|
||||||
processDepmapFile("/etc/maven/maven2-versionless-depmap.xml");
|
|
||||||
|
|
||||||
// process fragments is usr. Once packages are rebuilt, we can skip
|
|
||||||
// fragments in /etc
|
|
||||||
File fragmentDir = new File("/usr/share/maven-fragments");
|
|
||||||
String[] flist = fragmentDir.list();
|
|
||||||
if (flist != null) {
|
|
||||||
java.util.Arrays.sort(flist);
|
|
||||||
for (String fragFilename : flist)
|
|
||||||
processDepmapFile("/usr/share/maven-fragments/" + fragFilename);
|
|
||||||
}
|
|
||||||
|
|
||||||
String customDepmapDir = System.getProperty("maven.local.depmap.dir",
|
|
||||||
null);
|
|
||||||
if (customDepmapDir != null) {
|
|
||||||
fragmentDir = new File(customDepmapDir);
|
|
||||||
flist = fragmentDir.list();
|
|
||||||
if (flist != null) {
|
|
||||||
java.util.Arrays.sort(flist);
|
|
||||||
for (String fragFilename : flist)
|
|
||||||
processDepmapFile(customDepmapDir + File.separator
|
|
||||||
+ fragFilename);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
String customFileName = System.getProperty("maven.local.depmap.file",
|
|
||||||
null);
|
|
||||||
if (customFileName != null) {
|
|
||||||
processDepmapFile(customFileName);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
private static void processDepmapFile(String fileName) {
|
|
||||||
|
|
||||||
Document mapDocument;
|
|
||||||
debug("Loading depmap file: " + fileName);
|
|
||||||
try {
|
|
||||||
DocumentBuilderFactory fact = DocumentBuilderFactory.newInstance();
|
|
||||||
fact.setNamespaceAware(true);
|
|
||||||
DocumentBuilder builder = fact.newDocumentBuilder();
|
|
||||||
// we can wrap even old depmaps, no harm done
|
|
||||||
WrapFragmentStream wfs = new WrapFragmentStream(fileName);
|
|
||||||
mapDocument = builder.parse(wfs);
|
|
||||||
wfs.close();
|
|
||||||
} catch (FileNotFoundException fnfe) {
|
|
||||||
System.err.println("ERROR: Unable to find map file: " + fileName);
|
|
||||||
fnfe.printStackTrace();
|
|
||||||
return;
|
|
||||||
} catch (IOException ioe) {
|
|
||||||
System.err
|
|
||||||
.println("ERROR: I/O exception occured when opening map file");
|
|
||||||
ioe.printStackTrace();
|
|
||||||
return;
|
|
||||||
} catch (ParserConfigurationException pce) {
|
|
||||||
System.err
|
|
||||||
.println("ERROR: Parsing of depmap file failed - configuration");
|
|
||||||
pce.printStackTrace();
|
|
||||||
return;
|
|
||||||
} catch (SAXException se) {
|
|
||||||
System.err.println("ERROR: Parsing of depmap file failed");
|
|
||||||
se.printStackTrace();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
NodeList depNodes = (NodeList) mapDocument
|
|
||||||
.getElementsByTagName("dependency");
|
|
||||||
|
|
||||||
for (int i = 0; i < depNodes.getLength(); i++) {
|
|
||||||
Element depNode = (Element) depNodes.item(i);
|
|
||||||
|
|
||||||
NodeList mavenNodeList = (NodeList) depNode
|
|
||||||
.getElementsByTagName("maven");
|
|
||||||
if (mavenNodeList.getLength() != 1) {
|
|
||||||
debug("Number of maven sub-elements is not 1. Bailing from depmap generation");
|
|
||||||
debug("Maven node: " + depNode.getTextContent());
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
ArtifactDefinition mavenAD = getArtifactDefinition((Element) mavenNodeList
|
|
||||||
.item(0));
|
|
||||||
|
|
||||||
ArtifactDefinition jppAD = null;
|
|
||||||
NodeList jppNodeList = (NodeList) depNode
|
|
||||||
.getElementsByTagName("jpp");
|
|
||||||
|
|
||||||
if (jppNodeList.getLength() == 1) {
|
|
||||||
jppAD = getArtifactDefinition((Element) jppNodeList.item(0));
|
|
||||||
debug("*** Adding: " + mavenAD.groupId + ","
|
|
||||||
+ mavenAD.artifactId + " => " + jppAD.groupId + ","
|
|
||||||
+ jppAD.artifactId + "," + jppAD.version + " to map...");
|
|
||||||
|
|
||||||
jppArtifactMap.put(mavenAD.groupId + "," + mavenAD.artifactId
|
|
||||||
+ "," + mavenAD.version, jppAD.groupId + ","
|
|
||||||
+ jppAD.artifactId + "," + jppAD.version);
|
|
||||||
ArrayList<String> maps = jppUnversionedArtifactMap
|
|
||||||
.get(mavenAD.groupId + "," + mavenAD.artifactId);
|
|
||||||
if (maps == null) {
|
|
||||||
maps = new ArrayList<String>();
|
|
||||||
}
|
|
||||||
|
|
||||||
maps.add(jppAD.groupId + "," + jppAD.artifactId + ","
|
|
||||||
+ jppAD.version);
|
|
||||||
|
|
||||||
jppUnversionedArtifactMap.put(mavenAD.groupId + ","
|
|
||||||
+ mavenAD.artifactId, maps);
|
|
||||||
} else {
|
|
||||||
debug("Number of jpp sub-elements is not 1. Dropping dependency for "
|
|
||||||
+ mavenAD.groupId + ":" + mavenAD.artifactId);
|
|
||||||
jppArtifactMap.put(mavenAD.groupId + "," + mavenAD.artifactId
|
|
||||||
+ "," + mavenAD.version, "JPP/maven,empty-dep,"
|
|
||||||
+ mavenAD.version);
|
|
||||||
ArrayList<String> maps = new ArrayList<String>();
|
|
||||||
maps.add("JPP/maven,empty-dep," + mavenAD.version);
|
|
||||||
jppUnversionedArtifactMap.put(mavenAD.groupId + ","
|
|
||||||
+ mavenAD.artifactId, maps);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private static ArtifactDefinition getArtifactDefinition(Element element) {
|
|
||||||
ArtifactDefinition ad = new ArtifactDefinition();
|
|
||||||
|
|
||||||
NodeList nodes = element.getElementsByTagName("groupId");
|
|
||||||
if (nodes.getLength() != 1) {
|
|
||||||
debug("groupId definition not found in depmap");
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
ad.groupId = nodes.item(0).getTextContent();
|
|
||||||
|
|
||||||
nodes = element.getElementsByTagName("artifactId");
|
|
||||||
if (nodes.getLength() != 1) {
|
|
||||||
debug("artifactId definition not found in depmap");
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
ad.artifactId = nodes.item(0).getTextContent();
|
|
||||||
|
|
||||||
nodes = element.getElementsByTagName("version");
|
|
||||||
if (nodes.getLength() != 1) {
|
|
||||||
ad.version = "DUMMY_VER";
|
|
||||||
} else {
|
|
||||||
ad.version = nodes.item(0).getTextContent();
|
|
||||||
}
|
|
||||||
return ad;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void debug(String msg) {
|
|
||||||
if (System.getProperty("maven.local.debug") != null)
|
|
||||||
System.err.println(msg);
|
|
||||||
}
|
|
||||||
}
|
|
@ -88,5 +88,3 @@ _m2_complete()
|
|||||||
}
|
}
|
||||||
|
|
||||||
complete -F _m2_complete -o filenames mvn
|
complete -F _m2_complete -o filenames mvn
|
||||||
complete -F _m2_complete -o filenames mvn-local
|
|
||||||
complete -F _m2_complete -o filenames mvn-rpmbuild
|
|
||||||
|
Binary file not shown.
@ -1,9 +0,0 @@
|
|||||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
|
||||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
|
|
||||||
<modelVersion>4.0.0</modelVersion>
|
|
||||||
<groupId>JPP/maven</groupId>
|
|
||||||
<artifactId>empty-dep</artifactId>
|
|
||||||
<version>2.0.4</version>
|
|
||||||
<name>Empty dependency</name>
|
|
||||||
<description>This is an empty dependency. For use in local mode when one or more dependencies need elimination.</description>
|
|
||||||
</project>
|
|
@ -1,47 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
if [ -f /usr/share/java-utils/java-functions ] ; then
|
|
||||||
. /usr/share/java-utils/java-functions
|
|
||||||
set_jvm
|
|
||||||
set_javacmd
|
|
||||||
fi
|
|
||||||
|
|
||||||
function help()
|
|
||||||
{
|
|
||||||
echo "mvn-local [options] [<goal(s)>] [<phase(s)>]"
|
|
||||||
echo
|
|
||||||
echo "mvn-local is custom Fedora maven used for building maven projects"
|
|
||||||
echo "using mix of jar files provided by system and remote maven repositories."
|
|
||||||
echo "You can modify its behaviour using several environment variables:"
|
|
||||||
echo
|
|
||||||
echo "-Dmaven.repo.local [default:$(pwd)/.m2] - custom location of maven repository"
|
|
||||||
echo "-Dmaven.local.depmap.file - file containing custom dependency mapping between"
|
|
||||||
echo " groupId:artifactId and jar file. File format see:"
|
|
||||||
echo " http://fedoraproject.org/wiki/Java/JPPMavenReadme"
|
|
||||||
echo "-Dmaven.local.debug - if set maven will print additional resolving information"
|
|
||||||
echo " that can be useful for debugging resolver problems"
|
|
||||||
}
|
|
||||||
|
|
||||||
function process_args()
|
|
||||||
{
|
|
||||||
while [ $# != 0 ]; do
|
|
||||||
flag="$1"
|
|
||||||
case "$flag" in
|
|
||||||
-h|--help)
|
|
||||||
help
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
shift
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
process_args "$@"
|
|
||||||
|
|
||||||
export M2_HOME=/usr/share/maven
|
|
||||||
echo $JAVA_HOME
|
|
||||||
export JAVA_HOME
|
|
||||||
# can't put it on command line due to
|
|
||||||
# http://jira.codehaus.org/browse/SUREFIRE-121
|
|
||||||
export MAVEN_OPTS="$MAVEN_OPTS -Dmaven.local.mode ${local_add}"
|
|
||||||
echo "Running mvn in local mode. Please report bugs to http://bugzilla.redhat.com"
|
|
||||||
|
|
||||||
$M2_HOME/bin/mvn "$@"
|
|
@ -1,93 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
if [ -f /usr/share/java-utils/java-functions ] ; then
|
|
||||||
. /usr/share/java-utils/java-functions
|
|
||||||
set_jvm
|
|
||||||
set_javacmd
|
|
||||||
fi
|
|
||||||
|
|
||||||
function install_metadata()
|
|
||||||
{
|
|
||||||
mkdir -p "$1"
|
|
||||||
tar xf /usr/share/maven/repo-metadata.tar.xz -C "$1"
|
|
||||||
}
|
|
||||||
|
|
||||||
function help()
|
|
||||||
{
|
|
||||||
echo "mvn-rpmbuild [options] [<goal(s)>] [<phase(s)>]"
|
|
||||||
echo
|
|
||||||
echo "mvn-rpmbuild is custom Fedora maven used for building maven projects"
|
|
||||||
echo "using only jar files provided by rpms installed on your system. It will"
|
|
||||||
echo "never download artifacts from remote repositories. You can modify its"
|
|
||||||
echo "behaviour using several environment variables:"
|
|
||||||
echo
|
|
||||||
echo "-Dmaven.repo.local [default:$(pwd)/.m2] - custom location of maven repository"
|
|
||||||
echo "-Dmaven.local.depmap.file - file containing custom dependency mapping between"
|
|
||||||
echo " groupId:artifactId and jar file. File format see:"
|
|
||||||
echo " http://fedoraproject.org/wiki/Java/JPPMavenReadme"
|
|
||||||
echo "-Dmaven.local.debug - if set maven will print additional resolving information"
|
|
||||||
echo " that can be useful for debugging resolver problems"
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
# add maven.repo.local if it's not defined already
|
|
||||||
local_add="-Dmaven.repo.local=$(pwd)/.m2/"
|
|
||||||
|
|
||||||
# Check whether we are ran in mock
|
|
||||||
# FIXME: is there a better way to do this?
|
|
||||||
mock=test
|
|
||||||
test "$HOME" = /builddir && mock=:
|
|
||||||
|
|
||||||
if $mock; then
|
|
||||||
log_file="$(umask 2 && mktemp -t mvn-rpmbuild.$$.XXXXXXXXXX)"
|
|
||||||
logfile_add="-Dmaven.resolver.logfile=$log_file"
|
|
||||||
fi
|
|
||||||
|
|
||||||
function process_args()
|
|
||||||
{
|
|
||||||
while [ $# != 0 ]; do
|
|
||||||
flag="$1"
|
|
||||||
case "$flag" in
|
|
||||||
-h|--help)
|
|
||||||
help
|
|
||||||
;;
|
|
||||||
*) ind=`expr match "$flag" -Dmaven.repo.local=`
|
|
||||||
if [[ $ind != 0 ]];then
|
|
||||||
install_metadata "${flag/-Dmaven.repo.local=/}/"
|
|
||||||
local_add=""
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
shift
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
process_args "$@"
|
|
||||||
|
|
||||||
if [ -n "$local_add" ];then
|
|
||||||
install_metadata "${local_add/-Dmaven.repo.local=/}/"
|
|
||||||
fi
|
|
||||||
|
|
||||||
export M2_HOME=/usr/share/maven
|
|
||||||
echo $JAVA_HOME
|
|
||||||
export JAVA_HOME
|
|
||||||
# can't put it on command line due to
|
|
||||||
# http://jira.codehaus.org/browse/SUREFIRE-121
|
|
||||||
export MAVEN_OPTS="$MAVEN_OPTS -Dmaven.local.mode ${local_add} ${logfile_add}"
|
|
||||||
|
|
||||||
$M2_HOME/bin/mvn -o "$@" || exit $?
|
|
||||||
$mock || exit 0
|
|
||||||
|
|
||||||
sanitize() {
|
|
||||||
for obj in $1; do
|
|
||||||
echo -n 'mvn-rpmbuild: possibly redundant dependency: '
|
|
||||||
rpm -qf "$(readlink -f $obj)" | sed 's/-[^-]*-[^-]*$//'
|
|
||||||
done | sort -u
|
|
||||||
}
|
|
||||||
|
|
||||||
installed=$(sanitize "$(rpm -ql `package-cleanup --all --leaves | xargs` | egrep '\.(jar|pom)$')")
|
|
||||||
used=$(sanitize "$(cat $log_file 2>/dev/null)")
|
|
||||||
|
|
||||||
diff - /dev/fd/3 <<<"$installed" 3<<<"$used" | grep '^< ' | sed s/..//
|
|
||||||
|
|
||||||
:
|
|
345
maven.spec
345
maven.spec
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
Name: maven
|
Name: maven
|
||||||
Version: 3.0.4
|
Version: 3.0.4
|
||||||
Release: 28%{?dist}
|
Release: 29%{?dist}
|
||||||
Summary: Java project management and project comprehension tool
|
Summary: Java project management and project comprehension tool
|
||||||
|
|
||||||
Group: Development/Tools
|
Group: Development/Tools
|
||||||
@ -10,39 +10,15 @@ License: ASL 2.0
|
|||||||
URL: http://maven.apache.org/
|
URL: http://maven.apache.org/
|
||||||
# Source URL is for testing only, final version will be in different place:
|
# Source URL is for testing only, final version will be in different place:
|
||||||
# http://www.apache.org/dyn/closer.cgi/maven/source/apache-%{name}-%{version}-src.tar.gz
|
# http://www.apache.org/dyn/closer.cgi/maven/source/apache-%{name}-%{version}-src.tar.gz
|
||||||
Source0: http://www.apache.org/dist//maven/source/apache-%{name}-%{version}-src.tar.gz
|
Source0: http://archive.apache.org/dist/maven/source/apache-%{name}-%{version}-src.tar.gz
|
||||||
Source1: maven-bash-completion
|
Source1: maven-bash-completion
|
||||||
Source2: mvn.1
|
Source2: mvn.1
|
||||||
|
|
||||||
# custom resolver java files
|
|
||||||
# source: git clone git://fedorapeople.org/~sochotni/maven-javadir-resolver/
|
|
||||||
Source100: JavadirWorkspaceReader.java
|
|
||||||
Source101: MavenJPackageDepmap.java
|
|
||||||
|
|
||||||
# empty files for resolving to nothing
|
|
||||||
Source104: %{name}-empty-dep.pom
|
|
||||||
Source105: %{name}-empty-dep.jar
|
|
||||||
|
|
||||||
# 2xx for created non-buildable sources
|
# 2xx for created non-buildable sources
|
||||||
Source200: %{name}-script
|
Source200: %{name}-script
|
||||||
Source201: %{name}-script-local
|
|
||||||
Source202: %{name}-script-rpmbuild
|
|
||||||
|
|
||||||
# Other included files
|
|
||||||
Source250: repo-metadata.tar.xz
|
|
||||||
|
|
||||||
# Patch1XX could be upstreamed probably
|
# Patch1XX could be upstreamed probably
|
||||||
Patch100: 0005-Use-generics-in-modello-generated-code.patch
|
Patch100: 0005-Use-generics-in-modello-generated-code.patch
|
||||||
Patch101: 0006-Make-compiler-plugin-default-to-source-1.5.patch
|
|
||||||
|
|
||||||
# Patch15X are already upstream
|
|
||||||
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
|
|
||||||
Patch202: 0001-Customize-compiler-plugin.patch
|
|
||||||
|
|
||||||
BuildArch: noarch
|
BuildArch: noarch
|
||||||
|
|
||||||
@ -76,33 +52,6 @@ BuildRequires: xmlunit
|
|||||||
BuildRequires: animal-sniffer >= 1.6-5
|
BuildRequires: animal-sniffer >= 1.6-5
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
Requires: aether >= 1.13.1
|
|
||||||
Requires: apache-commons-cli
|
|
||||||
Requires: apache-resource-bundles
|
|
||||||
Requires: async-http-client
|
|
||||||
Requires: atinject
|
|
||||||
Requires: google-guice >= 3.0
|
|
||||||
Requires: guava
|
|
||||||
Requires: hamcrest
|
|
||||||
Requires: hamcrest
|
|
||||||
Requires: java >= 1:1.6.0
|
|
||||||
Requires: maven-wagon
|
|
||||||
Requires: nekohtml
|
|
||||||
Requires: plexus-cipher
|
|
||||||
Requires: plexus-classworlds >= 2.4
|
|
||||||
Requires: plexus-containers-component-annotations
|
|
||||||
Requires: plexus-containers-container-default
|
|
||||||
Requires: plexus-interpolation
|
|
||||||
Requires: plexus-sec-dispatcher
|
|
||||||
Requires: plexus-utils
|
|
||||||
Requires: sisu >= 2.1.1-2
|
|
||||||
Requires: xbean
|
|
||||||
Requires: xerces-j2
|
|
||||||
Requires: yum-utils
|
|
||||||
%if 0%{?fedora}
|
|
||||||
Requires: animal-sniffer >= 1.6-5
|
|
||||||
%endif
|
|
||||||
|
|
||||||
# Require maven-local for now to allow a smooth transition from maven
|
# Require maven-local for now to allow a smooth transition from maven
|
||||||
# to maven-local. Once packages start requiring maven-local directly
|
# to maven-local. Once packages start requiring maven-local directly
|
||||||
# the Requires below should be removed.
|
# the Requires below should be removed.
|
||||||
@ -111,8 +60,7 @@ Requires: maven-local
|
|||||||
# for noarch->arch change
|
# for noarch->arch change
|
||||||
Obsoletes: %{name} < 0:%{version}-%{release}
|
Obsoletes: %{name} < 0:%{version}-%{release}
|
||||||
|
|
||||||
# maven2 bin package no longer exists. Replace it
|
# maven2 bin package no longer exists.
|
||||||
# these should be around until F20
|
|
||||||
Obsoletes: maven2 < 2.2.1-99
|
Obsoletes: maven2 < 2.2.1-99
|
||||||
Provides: maven2 = %{version}-%{release}
|
Provides: maven2 = %{version}-%{release}
|
||||||
|
|
||||||
@ -124,31 +72,13 @@ reporting and documentation from a central piece of information.
|
|||||||
%package javadoc
|
%package javadoc
|
||||||
Summary: API documentation for %{name}
|
Summary: API documentation for %{name}
|
||||||
Group: Documentation
|
Group: Documentation
|
||||||
Requires: jpackage-utils
|
|
||||||
BuildArch: noarch
|
|
||||||
|
|
||||||
%description javadoc
|
%description javadoc
|
||||||
%{summary}.
|
%{summary}.
|
||||||
|
|
||||||
%prep
|
%prep
|
||||||
%setup -q -n apache-%{name}-%{version}%{?ver_add}
|
%setup -q -n apache-%{name}-%{version}%{?ver_add}
|
||||||
%patch150 -p1
|
|
||||||
%patch151 -p1
|
|
||||||
%patch200 -p1
|
|
||||||
%patch201 -p1
|
|
||||||
%patch202 -p1
|
|
||||||
%patch100 -p1
|
%patch100 -p1
|
||||||
%patch101 -p1
|
|
||||||
|
|
||||||
# get custom resolver in place
|
|
||||||
mkdir -p maven-aether-provider/src/main/java/org/apache/maven/artifact/resolver \
|
|
||||||
maven-aether-provider/src/main/java/org/apache/maven/artifact/repository
|
|
||||||
|
|
||||||
cp %{SOURCE100} maven-aether-provider/src/main/java/org/apache/maven/artifact/resolver
|
|
||||||
cp %{SOURCE101} maven-aether-provider/src/main/java/org/apache/maven/artifact/repository
|
|
||||||
|
|
||||||
# by adding our things this has become compile dep
|
|
||||||
sed -i 's:<scope>runtime</scope>::' maven-core/pom.xml
|
|
||||||
|
|
||||||
# not really used during build, but a precaution
|
# not really used during build, but a precaution
|
||||||
rm maven-ant-tasks-*.jar
|
rm maven-ant-tasks-*.jar
|
||||||
@ -159,14 +89,12 @@ sed -i 's:\r::' *.txt
|
|||||||
# fix for animal-sniffer (we don't generate 1.5 signatures)
|
# fix for animal-sniffer (we don't generate 1.5 signatures)
|
||||||
sed -i 's:check-java-1.5-compat:check-java-1.6-compat:' pom.xml
|
sed -i 's:check-java-1.5-compat:check-java-1.6-compat:' pom.xml
|
||||||
|
|
||||||
pushd apache-maven
|
rm -f apache-maven/src/bin/*.bat
|
||||||
rm src/bin/*bat
|
sed -i 's:\r::' apache-maven/src/conf/settings.xml
|
||||||
sed -i 's:\r::' src/conf/settings.xml
|
|
||||||
|
|
||||||
# Update shell scripts to use unversioned classworlds
|
# Update shell scripts to use unversioned classworlds
|
||||||
sed -i -e s:'-classpath "${M2_HOME}"/boot/plexus-classworlds-\*.jar':'-classpath "${M2_HOME}"/boot/plexus-classworlds.jar':g \
|
sed -i -e s:'-classpath "${M2_HOME}"/boot/plexus-classworlds-\*.jar':'-classpath "${M2_HOME}"/boot/plexus-classworlds.jar':g \
|
||||||
src/bin/mvn*
|
apache-maven/src/bin/mvn*
|
||||||
popd
|
|
||||||
|
|
||||||
# Disable animal-sniffer on RHEL
|
# Disable animal-sniffer on RHEL
|
||||||
# Temporarily disabled for fedora to solve asm & asm4 clashing on classpath
|
# Temporarily disabled for fedora to solve asm & asm4 clashing on classpath
|
||||||
@ -174,226 +102,103 @@ popd
|
|||||||
%pom_remove_plugin :animal-sniffer-maven-plugin
|
%pom_remove_plugin :animal-sniffer-maven-plugin
|
||||||
#fi
|
#fi
|
||||||
|
|
||||||
|
%pom_add_dep org.codehaus.plexus:plexus-container-default maven-plugin-api
|
||||||
|
# Test dependencies
|
||||||
%pom_add_dep aopalliance:aopalliance:any:test maven-model-builder
|
%pom_add_dep aopalliance:aopalliance:any:test maven-model-builder
|
||||||
%pom_add_dep cglib:cglib:any:test maven-model-builder
|
%pom_add_dep cglib:cglib:any:test maven-model-builder
|
||||||
|
|
||||||
%build
|
%build
|
||||||
mvn-rpmbuild -e install javadoc:aggregate
|
# Put all JARs in standard location, but create symlinks in Maven lib
|
||||||
|
# directory so that Plexus Classworlds can find them.
|
||||||
|
%mvn_file ":{*}" %{name}/@1 %{_datadir}/%{name}/lib/@1
|
||||||
|
|
||||||
|
%mvn_build -- -Dproject.build.sourceEncoding=UTF-8
|
||||||
|
|
||||||
mkdir m2home
|
mkdir m2home
|
||||||
(cd m2home
|
(cd m2home
|
||||||
tar --delay-directory-restore -xvf ../apache-maven/target/*tar.gz
|
tar --delay-directory-restore -xvf ../apache-maven/target/*tar.gz
|
||||||
chmod -R +rwX apache-%{name}-%{version}%{?ver_add}
|
chmod -R +rwX apache-%{name}-%{version}%{?ver_add}
|
||||||
chmod -x apache-%{name}-%{version}%{?ver_add}/conf/settings.xml
|
chmod -x apache-%{name}-%{version}%{?ver_add}/conf/settings.xml
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
%install
|
%install
|
||||||
|
%mvn_install
|
||||||
|
|
||||||
export M2_HOME=$(pwd)/m2home/apache-maven-%{version}%{?ver_add}
|
export M2_HOME=$(pwd)/m2home/apache-maven-%{version}%{?ver_add}
|
||||||
|
|
||||||
# maven2 directory in /usr/share/java
|
install -d -m 755 %{buildroot}%{_datadir}/%{name}/bin
|
||||||
install -dm 755 $RPM_BUILD_ROOT%{_javadir}/%{name}
|
install -d -m 755 %{buildroot}%{_datadir}/%{name}/conf
|
||||||
|
install -d -m 755 %{buildroot}%{_datadir}/%{name}/boot
|
||||||
|
install -d -m 755 %{buildroot}%{_datadir}/%{name}/lib
|
||||||
|
install -d -m 755 %{buildroot}%{_datadir}/%{name}/ext
|
||||||
|
install -d -m 755 %{buildroot}%{_bindir}
|
||||||
|
install -d -m 755 %{buildroot}%{_sysconfdir}/bash_completion.d
|
||||||
|
install -d -m 755 %{buildroot}%{_mandir}/man1
|
||||||
|
|
||||||
# put global m2 config into /etc and symlink it later
|
install -p -m 755 %{SOURCE200} %{buildroot}%{_bindir}/mvn
|
||||||
install -dm 755 $RPM_BUILD_ROOT%{_sysconfdir}
|
install -p -m 644 %{SOURCE2} %{buildroot}%{_mandir}/man1
|
||||||
mv $M2_HOME/bin/m2.conf $RPM_BUILD_ROOT%{_sysconfdir}/
|
install -p -m 644 %{SOURCE1} %{buildroot}%{_sysconfdir}/bash_completion.d/%{name}
|
||||||
|
mv $M2_HOME/bin/m2.conf %{buildroot}%{_sysconfdir}
|
||||||
|
ln -sf %{_sysconfdir}/m2.conf %{buildroot}%{_datadir}/%{name}/bin/m2.conf
|
||||||
|
|
||||||
###########
|
cp -a $M2_HOME/bin/* %{buildroot}%{_datadir}/%{name}/bin
|
||||||
# M2_HOME #
|
cp -a $M2_HOME/conf/* %{buildroot}%{_datadir}/%{name}/conf
|
||||||
###########
|
|
||||||
install -dm 755 $RPM_BUILD_ROOT%{_datadir}/%{name}
|
|
||||||
|
|
||||||
#################
|
ln -sf $(build-classpath plexus/classworlds) \
|
||||||
# Repo metadata #
|
%{buildroot}%{_datadir}/%{name}/boot/plexus-classworlds.jar
|
||||||
#################
|
|
||||||
install -m 755 %{SOURCE250} $RPM_BUILD_ROOT%{_datadir}/%{name}/
|
|
||||||
|
|
||||||
|
(cd %{buildroot}%{_datadir}/%{name}/lib
|
||||||
###############
|
build-jar-repository -s -p . \
|
||||||
# M2_HOME/bin #
|
aether/api \
|
||||||
###############
|
aether/connector-wagon \
|
||||||
install -dm 755 $RPM_BUILD_ROOT%{_datadir}/%{name}/bin
|
aether/impl \
|
||||||
cp -a $M2_HOME/bin/* $RPM_BUILD_ROOT%{_datadir}/%{name}/bin
|
aether/spi \
|
||||||
|
aether/util \
|
||||||
ln -sf %{_sysconfdir}/m2.conf $RPM_BUILD_ROOT%{_datadir}/%{name}/bin/m2.conf
|
aopalliance \
|
||||||
|
atinject \
|
||||||
# Fallback scripts
|
cglib \
|
||||||
cp -af %{SOURCE201} $RPM_BUILD_ROOT%{_datadir}/%{name}/bin/mvn-local
|
commons-cli \
|
||||||
cp -af %{SOURCE202} $RPM_BUILD_ROOT%{_datadir}/%{name}/bin/mvn-rpmbuild
|
google-guice \
|
||||||
|
guava \
|
||||||
|
maven-wagon/file \
|
||||||
################
|
maven-wagon/http-lightweight \
|
||||||
# M2_HOME/boot #
|
maven-wagon/http-shared \
|
||||||
################
|
maven-wagon/provider-api \
|
||||||
install -dm 755 $RPM_BUILD_ROOT%{_datadir}/%{name}/boot
|
nekohtml \
|
||||||
|
objectweb-asm \
|
||||||
# this dangling symlink will be filled in by Requires
|
plexus/containers-component-annotations \
|
||||||
(cd $RPM_BUILD_ROOT%{_datadir}/%{name}/boot
|
plexus/interpolation \
|
||||||
ln -sf `build-classpath plexus/classworlds` plexus-classworlds.jar
|
plexus/plexus-cipher \
|
||||||
|
plexus/plexus-sec-dispatcher \
|
||||||
|
plexus/utils \
|
||||||
|
sisu/sisu-inject-bean \
|
||||||
|
sisu/sisu-inject-plexus \
|
||||||
|
slf4j/api \
|
||||||
|
slf4j/nop \
|
||||||
|
xbean/xbean-reflect \
|
||||||
|
xerces-j2 \
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
################
|
%files -f .mfiles
|
||||||
# M2_HOME/conf #
|
|
||||||
################
|
|
||||||
install -dm 755 $RPM_BUILD_ROOT%{_datadir}/%{name}/conf
|
|
||||||
cp -a $M2_HOME/conf/* $RPM_BUILD_ROOT%{_datadir}/%{name}/conf/
|
|
||||||
|
|
||||||
###############
|
|
||||||
# M2_HOME/lib #
|
|
||||||
###############
|
|
||||||
install -dm 755 $RPM_BUILD_ROOT%{_datadir}/%{name}/lib
|
|
||||||
|
|
||||||
# jdom is needed for our custom resolving code only
|
|
||||||
(cd $RPM_BUILD_ROOT%{_datadir}/%{name}/lib
|
|
||||||
|
|
||||||
build-jar-repository -s -p . aether/api aether/connector-wagon aether/impl aether/spi aether/util \
|
|
||||||
commons-cli guava google-guice nekohtml plexus/plexus-cipher \
|
|
||||||
plexus/containers-component-annotations \
|
|
||||||
plexus/interpolation plexus/plexus-sec-dispatcher plexus/utils \
|
|
||||||
sisu/sisu-inject-bean sisu/sisu-inject-plexus maven-wagon/file \
|
|
||||||
maven-wagon/http-lightweight maven-wagon/http-shared maven-wagon/provider-api \
|
|
||||||
xbean/xbean-reflect xerces-j2 atinject aopalliance cglib \
|
|
||||||
slf4j/api slf4j/nop objectweb-asm
|
|
||||||
# dependency of our resolver
|
|
||||||
mkdir ext/
|
|
||||||
build-jar-repository -s -p ext/ xml-commons-apis
|
|
||||||
)
|
|
||||||
|
|
||||||
################
|
|
||||||
# M2_HOME/poms #
|
|
||||||
#*##############
|
|
||||||
install -dm 755 $RPM_BUILD_ROOT%{_datadir}/%{name}/poms
|
|
||||||
|
|
||||||
########################
|
|
||||||
# /etc/maven/fragments #
|
|
||||||
########################
|
|
||||||
install -dm 755 $RPM_BUILD_ROOT/%{_sysconfdir}/maven/fragments
|
|
||||||
|
|
||||||
##############################
|
|
||||||
# /usr/share/java repository #
|
|
||||||
##############################
|
|
||||||
install -dm 755 $RPM_BUILD_ROOT%{_datadir}/%{name}/repository
|
|
||||||
ln -s %{_javadir} $RPM_BUILD_ROOT%{_datadir}/%{name}/repository/JPP
|
|
||||||
|
|
||||||
##############################
|
|
||||||
# /usr/share/java-jni repository #
|
|
||||||
##############################
|
|
||||||
install -dm 755 $RPM_BUILD_ROOT%{_datadir}/%{name}/repository-java-jni
|
|
||||||
ln -s %{_javajnidir} $RPM_BUILD_ROOT%{_datadir}/%{name}/repository-java-jni/JPP
|
|
||||||
|
|
||||||
##############################
|
|
||||||
# _libdir/java repository #
|
|
||||||
##############################
|
|
||||||
install -dm 755 $RPM_BUILD_ROOT%{_datadir}/%{name}/repository-jni
|
|
||||||
# create symlink in post, remove in preun so we can stay noarch
|
|
||||||
|
|
||||||
##################
|
|
||||||
# javadir/maven #
|
|
||||||
#*################
|
|
||||||
install -dm 755 $RPM_BUILD_ROOT%{_javadir}/%{name}
|
|
||||||
|
|
||||||
#######################
|
|
||||||
# javadir/maven/poms #
|
|
||||||
#*#####################
|
|
||||||
ln -s %{_datadir}/%{name}/poms $RPM_BUILD_ROOT%{_javadir}/%{name}/poms
|
|
||||||
|
|
||||||
# for our custom resolver to remove dependencies we need empty jar and
|
|
||||||
# pom file
|
|
||||||
install -m 644 %{SOURCE104} $RPM_BUILD_ROOT%{_datadir}/%{name}/poms/JPP.maven-empty-dep.pom
|
|
||||||
install -m 644 %{SOURCE105} $RPM_BUILD_ROOT%{_javadir}/%{name}/empty-dep.jar
|
|
||||||
|
|
||||||
# Dependencies that should be ignored.
|
|
||||||
%add_to_maven_depmap javax.activation activation any JPP/%{name} empty-dep
|
|
||||||
%add_to_maven_depmap org.eclipse.jetty.orbit javax.activation any JPP/%{name} empty-dep
|
|
||||||
%add_to_maven_depmap org.apache.maven.wagon wagon-webdav any JPP/%{name} empty-dep
|
|
||||||
%add_to_maven_depmap org.apache.maven.wagon wagon-webdav-jackrabbit any JPP/%{name} empty-dep
|
|
||||||
|
|
||||||
############
|
|
||||||
# /usr/bin #
|
|
||||||
############
|
|
||||||
install -dm 755 $RPM_BUILD_ROOT%{_bindir}
|
|
||||||
|
|
||||||
# Wrapper
|
|
||||||
cp -af %{SOURCE200} $RPM_BUILD_ROOT%{_bindir}/mvn
|
|
||||||
|
|
||||||
###################
|
|
||||||
# Individual jars #
|
|
||||||
###################
|
|
||||||
|
|
||||||
for module in maven-aether-provider maven-artifact maven-compat \
|
|
||||||
maven-core maven-embedder maven-model \
|
|
||||||
maven-model-builder maven-plugin-api \
|
|
||||||
maven-repository-metadata maven-settings \
|
|
||||||
maven-settings-builder;do
|
|
||||||
|
|
||||||
pushd $module
|
|
||||||
install -m 644 target/$module-%{version}%{?ver_add}.jar $RPM_BUILD_ROOT%{_javadir}/%{name}/$module.jar
|
|
||||||
ln -s %{_javadir}/%{name}/$module.jar $RPM_BUILD_ROOT%{_datadir}/%{name}/lib/$module.jar
|
|
||||||
install -m 644 pom.xml $RPM_BUILD_ROOT%{_datadir}/%{name}/poms/JPP.%{name}-$module.pom
|
|
||||||
%add_to_maven_depmap org.apache.maven $module %{version} JPP/%{name} $module
|
|
||||||
popd
|
|
||||||
done
|
|
||||||
|
|
||||||
# maven pom
|
|
||||||
install -m 644 pom.xml $RPM_BUILD_ROOT%{_datadir}/%{name}/poms/JPP.%{name}-maven.pom
|
|
||||||
%add_to_maven_depmap org.apache.maven maven %{version} JPP/%{name} maven
|
|
||||||
|
|
||||||
# javadocs
|
|
||||||
install -d -m 755 $RPM_BUILD_ROOT%{_javadocdir}/%{name}
|
|
||||||
cp -pr target/site/apidocs/* $RPM_BUILD_ROOT%{_javadocdir}/%{name}
|
|
||||||
|
|
||||||
# Install bash-completion
|
|
||||||
install -Dm 644 %{SOURCE1} %{buildroot}%{_sysconfdir}/bash_completion.d/%{name}
|
|
||||||
|
|
||||||
# Manual page
|
|
||||||
install -dm 755 $RPM_BUILD_ROOT%{_mandir}/man1
|
|
||||||
install -pm 644 %{SOURCE2} $RPM_BUILD_ROOT%{_mandir}/man1
|
|
||||||
gzip -9 $RPM_BUILD_ROOT%{_mandir}/man1/*
|
|
||||||
|
|
||||||
|
|
||||||
%preun
|
|
||||||
if [ $1 -eq 0 ] ; then
|
|
||||||
if [ -h %{_datadir}/%{name}/repository-jni/JPP ];then
|
|
||||||
rm %{_datadir}/%{name}/repository-jni/JPP
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
%posttrans
|
|
||||||
# ugly as hell
|
|
||||||
ln -sf `rpm --eval '%%{_jnidir}'` %{_datadir}/%{name}/repository-jni/JPP
|
|
||||||
|
|
||||||
%files
|
|
||||||
%doc LICENSE.txt NOTICE.txt README.txt
|
%doc LICENSE.txt NOTICE.txt README.txt
|
||||||
%attr(0755,root,root) %{_bindir}/mvn
|
%{_datadir}/%{name}
|
||||||
%dir %{_datadir}/%{name}
|
%{_bindir}/mvn
|
||||||
%dir %{_datadir}/%{name}/bin
|
%dir %{_javadir}/%{name}
|
||||||
%attr(0755,root,root) %{_datadir}/%{name}/bin/mvn
|
|
||||||
%attr(0755,root,root) %{_datadir}/%{name}/bin/mvnyjp
|
|
||||||
%attr(0755,root,root) %{_datadir}/%{name}/bin/mvnDebug
|
|
||||||
%attr(0755,root,root) %{_datadir}/%{name}/bin/mvn-local
|
|
||||||
%attr(0755,root,root) %{_datadir}/%{name}/bin/mvn-rpmbuild
|
|
||||||
%{_datadir}/%{name}/bin/*.conf
|
|
||||||
%config(noreplace) %{_sysconfdir}/m2.conf
|
%config(noreplace) %{_sysconfdir}/m2.conf
|
||||||
%{_datadir}/%{name}/boot
|
|
||||||
%{_datadir}/%{name}/conf
|
|
||||||
%{_datadir}/%{name}/lib
|
|
||||||
%{_datadir}/%{name}/poms
|
|
||||||
%{_datadir}/%{name}/repository
|
|
||||||
%{_datadir}/%{name}/repository-jni
|
|
||||||
%{_datadir}/%{name}/repository-java-jni
|
|
||||||
%{_mavendepmapfragdir}/%{name}
|
|
||||||
%{_javadir}/%{name}
|
|
||||||
%{_datadir}/%{name}/repo-metadata.tar.xz
|
|
||||||
%config(noreplace) %{_sysconfdir}/bash_completion.d/%{name}
|
%config(noreplace) %{_sysconfdir}/bash_completion.d/%{name}
|
||||||
%{_mandir}/man1/mvn.1.gz
|
%{_mandir}/man1/mvn.1.gz
|
||||||
|
|
||||||
%files javadoc
|
%files javadoc -f .mfiles-javadoc
|
||||||
%doc LICENSE.txt NOTICE.txt
|
%doc LICENSE.txt NOTICE.txt
|
||||||
%{_javadocdir}/%{name}
|
|
||||||
|
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Fri Jan 25 2013 Mikolaj Izdebski <mizdebsk@redhat.com> - 3.0.4-29
|
||||||
|
- Drop support for local mode
|
||||||
|
- Build with xmvn, rely on auto-requires
|
||||||
|
|
||||||
* Wed Jan 23 2013 Mikolaj Izdebski <mizdebsk@redhat.com> - 3.0.4-28
|
* Wed Jan 23 2013 Mikolaj Izdebski <mizdebsk@redhat.com> - 3.0.4-28
|
||||||
- Move mvn-local and mvn-rpmbuild out of %_bindir
|
- Move mvn-local and mvn-rpmbuild out of %_bindir
|
||||||
|
|
||||||
|
Binary file not shown.
Loading…
Reference in New Issue
Block a user