Update to upstream version 3.1.0

This commit is contained in:
Mikolaj Izdebski 2019-06-14 13:09:46 +02:00
parent 5060d60cc3
commit 92bb6d7e3e
13 changed files with 7 additions and 2326 deletions

1
.gitignore vendored
View File

@ -42,3 +42,4 @@
/xmvn-2.4.0.tar.xz
/xmvn-2.5.0.tar.xz
/xmvn-3.0.0.tar.xz
/xmvn-3.1.0.tar.xz

View File

@ -1,58 +0,0 @@
From 336cbdc97f3c7055ebdf858141bfc160fd4d412b Mon Sep 17 00:00:00 2001
From: Mikolaj Izdebski <mizdebsk@redhat.com>
Date: Fri, 8 Dec 2017 18:00:54 +0100
Subject: [PATCH] Don't use JAXB for converting bytes to hex string
---
.../java/org/fedoraproject/xmvn/resolver/impl/CacheManager.java | 8 ++------
1 file changed, 2 insertions(+), 6 deletions(-)
diff --git a/xmvn-core/src/main/java/org/fedoraproject/xmvn/resolver/impl/CacheManager.java b/xmvn-core/src/main/java/org/fedoraproject/xmvn/resolver/impl/CacheManager.java
index 1d6c193b..0902aa88 100644
--- a/xmvn-core/src/main/java/org/fedoraproject/xmvn/resolver/impl/CacheManager.java
+++ b/xmvn-core/src/main/java/org/fedoraproject/xmvn/resolver/impl/CacheManager.java
@@ -16,14 +16,13 @@
package org.fedoraproject.xmvn.resolver.impl;
import java.io.IOException;
+import java.math.BigInteger;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
-import javax.xml.bind.annotation.adapters.HexBinaryAdapter;
-
/**
* @author Mikolaj Izdebski
*/
@@ -31,8 +30,6 @@ class CacheManager
{
private static final String DIGEST_ALGORITHM = "SHA-1";
- private final HexBinaryAdapter hexAdapter;
-
private final MessageDigest digest;
private static volatile Path cacheHome;
@@ -41,7 +38,6 @@ class CacheManager
{
try
{
- hexAdapter = new HexBinaryAdapter();
digest = MessageDigest.getInstance( DIGEST_ALGORITHM );
}
catch ( NoSuchAlgorithmException e )
@@ -53,7 +49,7 @@ class CacheManager
private String hash( Path path )
throws IOException
{
- return hexAdapter.marshal( digest.digest( Files.readAllBytes( path ) ) );
+ return new BigInteger( 1, digest.digest( Files.readAllBytes( path ) ) ).setBit( 160 ).toString( 16 ).substring( 1 ).toUpperCase();
}
private static Path getPathDefault( String key, Object defaultValue )
--
2.14.3

View File

@ -1,76 +0,0 @@
From 46ad87218f0be4a4b7e292a1c8b5d5dbce48ae63 Mon Sep 17 00:00:00 2001
From: Mikolaj Izdebski <mizdebsk@redhat.com>
Date: Fri, 16 Mar 2018 11:10:35 +0100
Subject: [PATCH] Fix configuration of aliased plugins
Normally Maven tries to look up plugin configuration using plugin
coordinates taken from plugin descriptor. This works with pure Maven
as plugin descriptor always matches <plugin> reference in POM.
However in XMvn they can differ when plugin artifact is resolved
throug artifact alias, so XMvn should force use of coordinates
specified in <plugin> in POM.
---
.../aether/XMvnMojoExecutionConfigurator.java | 51 ++++++++++++++++++++++
1 file changed, 51 insertions(+)
create mode 100644 xmvn-connector-aether/src/main/java/org/fedoraproject/xmvn/connector/aether/XMvnMojoExecutionConfigurator.java
diff --git a/xmvn-connector-aether/src/main/java/org/fedoraproject/xmvn/connector/aether/XMvnMojoExecutionConfigurator.java b/xmvn-connector-aether/src/main/java/org/fedoraproject/xmvn/connector/aether/XMvnMojoExecutionConfigurator.java
new file mode 100644
index 00000000..72e38b37
--- /dev/null
+++ b/xmvn-connector-aether/src/main/java/org/fedoraproject/xmvn/connector/aether/XMvnMojoExecutionConfigurator.java
@@ -0,0 +1,51 @@
+/*-
+ * Copyright (c) 2018 Red Hat, Inc.
+ *
+ * Licensed 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 org.fedoraproject.xmvn.connector.aether;
+
+import org.apache.maven.lifecycle.MojoExecutionConfigurator;
+import org.apache.maven.lifecycle.internal.DefaultMojoExecutionConfigurator;
+import org.apache.maven.plugin.MojoExecution;
+import org.apache.maven.plugin.descriptor.PluginDescriptor;
+import org.apache.maven.project.MavenProject;
+import org.codehaus.plexus.component.annotations.Component;
+
+/**
+ * @author Mikolaj Izdebski
+ */
+@Component( role = MojoExecutionConfigurator.class )
+public class XMvnMojoExecutionConfigurator
+ extends DefaultMojoExecutionConfigurator
+{
+ @Override
+ public void configure( MavenProject project, MojoExecution execution, boolean allowPluginLevelConfig )
+ {
+ PluginDescriptor originalPluginDescriptor = execution.getMojoDescriptor().getPluginDescriptor();
+
+ PluginDescriptor aliasedPluginDescriptor = originalPluginDescriptor.clone();
+ aliasedPluginDescriptor.setGroupId( execution.getPlugin().getGroupId() );
+ aliasedPluginDescriptor.setArtifactId( execution.getPlugin().getArtifactId() );
+
+ try
+ {
+ execution.getMojoDescriptor().setPluginDescriptor( aliasedPluginDescriptor );
+ super.configure( project, execution, allowPluginLevelConfig );
+ }
+ finally
+ {
+ execution.getMojoDescriptor().setPluginDescriptor( originalPluginDescriptor );
+ }
+ }
+}
--
2.14.3

View File

@ -1,403 +0,0 @@
From 0fd7b0d19bd96456292585e883e3ba2ebbaf579b Mon Sep 17 00:00:00 2001
From: Mikolaj Izdebski <mizdebsk@redhat.com>
Date: Wed, 21 Jun 2017 10:21:10 +0200
Subject: [PATCH] Fix installer plugin loading
---
.../install/impl/ArtifactInstallerFactory.java | 97 ++++++--
.../tools/install/impl/IsolatedClassRealm.java | 245 +++++++++++++++++++++
2 files changed, 320 insertions(+), 22 deletions(-)
create mode 100644 xmvn-tools/xmvn-install/src/main/java/org/fedoraproject/xmvn/tools/install/impl/IsolatedClassRealm.java
diff --git a/xmvn-tools/xmvn-install/src/main/java/org/fedoraproject/xmvn/tools/install/impl/ArtifactInstallerFactory.java b/xmvn-tools/xmvn-install/src/main/java/org/fedoraproject/xmvn/tools/install/impl/ArtifactInstallerFactory.java
index 7a80571..e6a9a2d 100644
--- a/xmvn-tools/xmvn-install/src/main/java/org/fedoraproject/xmvn/tools/install/impl/ArtifactInstallerFactory.java
+++ b/xmvn-tools/xmvn-install/src/main/java/org/fedoraproject/xmvn/tools/install/impl/ArtifactInstallerFactory.java
@@ -15,8 +15,17 @@
*/
package org.fedoraproject.xmvn.tools.install.impl;
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
import java.util.Arrays;
-import java.util.Collection;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
import java.util.Properties;
import org.slf4j.Logger;
@@ -35,49 +44,93 @@ class ArtifactInstallerFactory
private final ArtifactInstaller defaultArtifactInstaller;
- private final ArtifactInstaller eclipseArtifactInstaller;
+ private final IsolatedClassRealm pluginRealm;
- private static ArtifactInstaller loadPlugin( String className )
+ private final Map<String, ArtifactInstaller> cachedPluginsByType = new LinkedHashMap<>();
+
+ private final Map<String, ArtifactInstaller> cachedPluginsByImplClass = new LinkedHashMap<>();
+
+ private ArtifactInstaller tryLoadPlugin( String type )
{
+ if ( cachedPluginsByType.containsKey( type ) )
+ return cachedPluginsByType.get( type );
+
try
{
- return (ArtifactInstaller) ArtifactInstallerFactory.class.getClassLoader().loadClass( className ).newInstance();
+ String resourceName = ArtifactInstaller.class.getCanonicalName() + "/" + type;
+ InputStream resourceStream = pluginRealm != null ? pluginRealm.getResourceAsStream( resourceName ) : null;
+ if ( resourceStream == null )
+ {
+ logger.debug( "No XMvn Installer plugin found for packaging type {}", type );
+ cachedPluginsByType.put( type, null );
+ return null;
+ }
+
+ String pluginImplClass;
+ try ( BufferedReader resourceReader = new BufferedReader( new InputStreamReader( resourceStream ) ) )
+ {
+ pluginImplClass = resourceReader.readLine();
+ }
+
+ ArtifactInstaller pluggedInInstaller = cachedPluginsByImplClass.get( pluginImplClass );
+ if ( pluggedInInstaller == null )
+ {
+ pluggedInInstaller = (ArtifactInstaller) pluginRealm.loadClass( pluginImplClass ).newInstance();
+ cachedPluginsByImplClass.put( pluginImplClass, pluggedInInstaller );
+ }
+
+ cachedPluginsByType.put( type, pluggedInInstaller );
+ return pluggedInInstaller;
}
- catch ( ReflectiveOperationException e )
+ catch ( IOException | ReflectiveOperationException e )
{
- return null;
+ throw new RuntimeException( "Unable to load XMvn Installer plugin for packaging type " + type, e );
}
}
public ArtifactInstallerFactory( Configurator configurator )
{
defaultArtifactInstaller = new DefaultArtifactInstaller( configurator );
- // FIXME Don't hardcode plugin class name
- eclipseArtifactInstaller = loadPlugin( "org.fedoraproject.p2.xmvn.EclipseArtifactInstaller" );
+
+ Path pluginDir = Paths.get( "/usr/share/xmvn/lib/installer" );
+ if ( Files.isDirectory( pluginDir ) )
+ {
+ ClassLoader parentClassLoader = ArtifactInstallerFactory.class.getClassLoader();
+ pluginRealm = new IsolatedClassRealm( parentClassLoader );
+ pluginRealm.addJarDirectory( pluginDir );
+ PLUGIN_IMPORTS.forEach( pluginRealm::importPackage );
+ }
+ else
+ {
+ pluginRealm = null;
+ }
}
/**
- * List of Tycho pacgkaging types.
+ * List of packages imported from XMvn Installer class loader to plug-in realms.
*/
- private static final Collection<String> ECLIPSE_PACKAGING_TYPES = Arrays.asList( "eclipse-plugin", //
- "eclipse-test-plugin", //
- "eclipse-feature", //
- "eclipse-repository", //
- "eclipse-application", //
- "eclipse-update-site", //
- "eclipse-target-definition" );
+ private static final List<String> PLUGIN_IMPORTS = Arrays.asList( // XMvn API
+ "org.fedoraproject.xmvn.artifact", //
+ "org.fedoraproject.xmvn.config", //
+ "org.fedoraproject.xmvn.deployer", //
+ "org.fedoraproject.xmvn.locator", //
+ "org.fedoraproject.xmvn.metadata", //
+ "org.fedoraproject.xmvn.resolver", //
+ // XMvn Installer SPI
+ "org.fedoraproject.xmvn.tools.install", //
+ // SLF4J API
+ "org.slf4j" //
+ );
@SuppressWarnings( "unused" )
public ArtifactInstaller getInstallerFor( Artifact artifact, Properties properties )
{
String type = properties.getProperty( "type" );
- if ( type != null && ECLIPSE_PACKAGING_TYPES.contains( type ) )
+ if ( type != null )
{
- if ( eclipseArtifactInstaller != null )
- return eclipseArtifactInstaller;
-
- logger.error( "Unable to load XMvn P2 plugin, Eclipse artifact installation will be impossible" );
- throw new RuntimeException( "Unable to load XMvn P2 plugin" );
+ ArtifactInstaller pluggedInInstaller = tryLoadPlugin( type );
+ if ( pluggedInInstaller != null )
+ return pluggedInInstaller;
}
return defaultArtifactInstaller;
diff --git a/xmvn-tools/xmvn-install/src/main/java/org/fedoraproject/xmvn/tools/install/impl/IsolatedClassRealm.java b/xmvn-tools/xmvn-install/src/main/java/org/fedoraproject/xmvn/tools/install/impl/IsolatedClassRealm.java
new file mode 100644
index 0000000..3324604
--- /dev/null
+++ b/xmvn-tools/xmvn-install/src/main/java/org/fedoraproject/xmvn/tools/install/impl/IsolatedClassRealm.java
@@ -0,0 +1,245 @@
+/*-
+ * Copyright (c) 2014-2017 Red Hat, Inc.
+ *
+ * Licensed 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 org.fedoraproject.xmvn.tools.install.impl;
+
+import java.io.IOException;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.net.URLClassLoader;
+import java.nio.file.DirectoryStream;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Enumeration;
+import java.util.HashSet;
+import java.util.LinkedHashSet;
+import java.util.Set;
+
+/**
+ * A generic, isolated class loader.
+ * <p>
+ * This class loader has its own classpath, separate from the primary Java classpath. It has a parent class loader, to
+ * which it delegates loading a set of imported classes. All other classes are loaded from its own classpath.
+ *
+ * @author Mikolaj Izdebski
+ */
+class IsolatedClassRealm
+ extends URLClassLoader
+{
+ static
+ {
+ registerAsParallelCapable();
+ }
+
+ private final ClassLoader parent;
+
+ private final Set<String> imports = new HashSet<>();
+
+ private final Set<String> importsAll = new HashSet<>();
+
+ public IsolatedClassRealm( ClassLoader parent )
+ {
+ super( new URL[0], null );
+ this.parent = parent;
+ }
+
+ public void addJar( Path jar )
+ {
+ try
+ {
+ addURL( jar.toUri().toURL() );
+ }
+ catch ( MalformedURLException e )
+ {
+ throw new RuntimeException( e );
+ }
+ }
+
+ public void addJarDirectory( Path dir )
+ {
+ try ( DirectoryStream<Path> stream = Files.newDirectoryStream( dir, "*.jar" ) )
+ {
+ for ( Path path : stream )
+ {
+ addJar( path );
+ }
+ }
+ catch ( IOException e )
+ {
+ throw new RuntimeException( e );
+ }
+ }
+
+ public void importPackage( String packageName )
+ {
+ imports.add( packageName );
+ }
+
+ public void importAllPackages( String packageName )
+ {
+ importsAll.add( packageName );
+ }
+
+ boolean isImported( String name )
+ {
+ int index = name.lastIndexOf( '/' );
+
+ if ( index >= 0 )
+ {
+ name = name.replace( '/', '.' );
+ }
+ else
+ {
+ index = Math.max( name.lastIndexOf( '.' ), 0 );
+ }
+
+ String namespace = name.substring( 0, index );
+
+ if ( imports.contains( namespace ) )
+ return true;
+
+ while ( !namespace.isEmpty() )
+ {
+ if ( importsAll.contains( namespace ) )
+ return true;
+
+ namespace = namespace.substring( 0, Math.max( namespace.lastIndexOf( '.' ), 0 ) );
+ }
+
+ return false;
+ }
+
+ @Override
+ public Class<?> loadClass( String name )
+ throws ClassNotFoundException
+ {
+ return loadClass( name, false );
+ }
+
+ @Override
+ protected Class<?> loadClass( String name, boolean resolve )
+ throws ClassNotFoundException
+ {
+ if ( isImported( name ) )
+ {
+ try
+ {
+ return parent.loadClass( name );
+ }
+ catch ( ClassNotFoundException e )
+ {
+ }
+ }
+
+ try
+ {
+ return super.loadClass( name, resolve );
+ }
+ catch ( ClassNotFoundException e )
+ {
+ }
+
+ synchronized ( getClassLoadingLock( name ) )
+ {
+ Class<?> clazz = findLoadedClass( name );
+ if ( clazz != null )
+ {
+ return clazz;
+ }
+
+ try
+ {
+ return super.findClass( name );
+ }
+ catch ( ClassNotFoundException e )
+ {
+ }
+ }
+
+ throw new ClassNotFoundException( name );
+ }
+
+ @Override
+ protected Class<?> findClass( String name )
+ throws ClassNotFoundException
+ {
+ throw new ClassNotFoundException( name );
+ }
+
+ @Override
+ public URL getResource( String name )
+ {
+ if ( isImported( name ) )
+ {
+ URL resource = parent.getResource( name );
+ if ( resource != null )
+ {
+ return resource;
+ }
+ }
+
+ URL resource = super.getResource( name );
+ if ( resource != null )
+ {
+ return resource;
+ }
+
+ resource = super.findResource( name );
+ if ( resource != null )
+ {
+ return resource;
+ }
+
+ return null;
+ }
+
+ @Override
+ public Enumeration<URL> getResources( String name )
+ throws IOException
+ {
+ Collection<URL> resources = new LinkedHashSet<>();
+
+ if ( isImported( name ) )
+ {
+ try
+ {
+ resources.addAll( Collections.list( parent.getResources( name ) ) );
+ }
+ catch ( IOException e )
+ {
+ }
+ }
+
+ try
+ {
+ resources.addAll( Collections.list( super.getResources( name ) ) );
+ }
+ catch ( IOException e )
+ {
+ }
+
+ try
+ {
+ resources.addAll( Collections.list( super.findResources( name ) ) );
+ }
+ catch ( IOException e )
+ {
+ }
+
+ return Collections.enumeration( resources );
+ }
+}
--
2.9.3

View File

@ -1,568 +0,0 @@
From 34b37637bd469621bb3eadfdf5fb856a806722df Mon Sep 17 00:00:00 2001
From: Michael Simacek <msimacek@redhat.com>
Date: Mon, 2 Oct 2017 12:01:09 +0300
Subject: [PATCH] Port to Gradle 4.2
---
libs/gradle-core-api/pom.xml | 32 ++++++
libs/gradle-logging/pom.xml | 32 ++++++
libs/gradle-model-core/pom.xml | 32 ++++++
libs/pom.xml | 3 +
xmvn-connector-gradle/pom.xml | 15 +++
.../xmvn/connector/gradle/GradleResolver.java | 119 ++++++++++++++-------
.../xmvn/connector/gradle/XMvnGradlePlugin.java | 16 +--
.../xmvn/connector/gradle/XMvnInstallTask.java | 22 +++-
xmvn-parent/pom.xml | 17 ++-
9 files changed, 235 insertions(+), 53 deletions(-)
create mode 100644 libs/gradle-core-api/pom.xml
create mode 100644 libs/gradle-logging/pom.xml
create mode 100644 libs/gradle-model-core/pom.xml
diff --git a/libs/gradle-core-api/pom.xml b/libs/gradle-core-api/pom.xml
new file mode 100644
index 00000000..7b3d68d5
--- /dev/null
+++ b/libs/gradle-core-api/pom.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="US-ASCII"?>
+<!--
+ ! Copyright (c) 2016-2017 Red Hat, Inc.
+ !
+ ! Licensed 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.
+ `-->
+<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/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.fedoraproject.xmvn</groupId>
+ <artifactId>libs</artifactId>
+ <version>3.0.0</version>
+ <relativePath>..</relativePath>
+ </parent>
+ <groupId>org.gradle</groupId>
+ <artifactId>gradle-core-api</artifactId>
+ <version>${gradleVersion}</version>
+ <name>Gradle core API module</name>
+</project>
diff --git a/libs/gradle-logging/pom.xml b/libs/gradle-logging/pom.xml
new file mode 100644
index 00000000..d2dec7c1
--- /dev/null
+++ b/libs/gradle-logging/pom.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="US-ASCII"?>
+<!--
+ ! Copyright (c) 2016-2017 Red Hat, Inc.
+ !
+ ! Licensed 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.
+ `-->
+<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/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.fedoraproject.xmvn</groupId>
+ <artifactId>libs</artifactId>
+ <version>3.0.0</version>
+ <relativePath>..</relativePath>
+ </parent>
+ <groupId>org.gradle</groupId>
+ <artifactId>gradle-logging</artifactId>
+ <version>${gradleVersion}</version>
+ <name>Gradle logging module</name>
+</project>
diff --git a/libs/gradle-model-core/pom.xml b/libs/gradle-model-core/pom.xml
new file mode 100644
index 00000000..f841b960
--- /dev/null
+++ b/libs/gradle-model-core/pom.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="US-ASCII"?>
+<!--
+ ! Copyright (c) 2016-2017 Red Hat, Inc.
+ !
+ ! Licensed 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.
+ `-->
+<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/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.fedoraproject.xmvn</groupId>
+ <artifactId>libs</artifactId>
+ <version>3.0.0</version>
+ <relativePath>..</relativePath>
+ </parent>
+ <groupId>org.gradle</groupId>
+ <artifactId>gradle-model-core</artifactId>
+ <version>${gradleVersion}</version>
+ <name>Gradle model-core module</name>
+</project>
diff --git a/libs/pom.xml b/libs/pom.xml
index 2b31c5d0..fc29e359 100644
--- a/libs/pom.xml
+++ b/libs/pom.xml
@@ -37,8 +37,11 @@
<module>gradle-base-services</module>
<module>gradle-base-services-groovy</module>
<module>gradle-core</module>
+ <module>gradle-core-api</module>
+ <module>gradle-model-core</module>
<module>gradle-dependency-management</module>
<module>gradle-resources</module>
+ <module>gradle-logging</module>
</modules>
<dependencies>
<dependency>
diff --git a/xmvn-connector-gradle/pom.xml b/xmvn-connector-gradle/pom.xml
index b433e5dd..f18a285e 100644
--- a/xmvn-connector-gradle/pom.xml
+++ b/xmvn-connector-gradle/pom.xml
@@ -54,11 +54,21 @@
</dependency>
<dependency>
<groupId>org.gradle</groupId>
+ <artifactId>gradle-core-api</artifactId>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.gradle</groupId>
<artifactId>gradle-core</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.gradle</groupId>
+ <artifactId>gradle-model-core</artifactId>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.gradle</groupId>
<artifactId>gradle-dependency-management</artifactId>
<scope>provided</scope>
</dependency>
@@ -68,6 +78,11 @@
<scope>provided</scope>
</dependency>
<dependency>
+ <groupId>org.gradle</groupId>
+ <artifactId>gradle-logging</artifactId>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
<groupId>org.apache.ivy</groupId>
<artifactId>ivy</artifactId>
<scope>provided</scope>
diff --git a/xmvn-connector-gradle/src/main/java/org/fedoraproject/xmvn/connector/gradle/GradleResolver.java b/xmvn-connector-gradle/src/main/java/org/fedoraproject/xmvn/connector/gradle/GradleResolver.java
index a81c5bc0..6305aa86 100644
--- a/xmvn-connector-gradle/src/main/java/org/fedoraproject/xmvn/connector/gradle/GradleResolver.java
+++ b/xmvn-connector-gradle/src/main/java/org/fedoraproject/xmvn/connector/gradle/GradleResolver.java
@@ -18,41 +18,47 @@ package org.fedoraproject.xmvn.connector.gradle;
import java.nio.file.Path;
import java.util.Collections;
import java.util.LinkedHashSet;
+import java.util.Map;
import java.util.Set;
+import org.gradle.api.artifacts.ComponentMetadataSupplier;
import org.gradle.api.artifacts.ModuleVersionIdentifier;
+import org.gradle.api.artifacts.component.ComponentArtifactIdentifier;
import org.gradle.api.artifacts.component.ModuleComponentIdentifier;
+import org.gradle.api.internal.artifacts.ImmutableModuleIdentifierFactory;
import org.gradle.api.internal.artifacts.ivyservice.ivyresolve.ConfiguredModuleComponentRepository;
import org.gradle.api.internal.artifacts.ivyservice.ivyresolve.ModuleComponentRepositoryAccess;
import org.gradle.api.internal.artifacts.ivyservice.ivyresolve.parser.DescriptorParseContext;
-import org.gradle.api.internal.artifacts.ivyservice.ivyresolve.parser.GradlePomModuleDescriptorParser;
import org.gradle.api.internal.artifacts.ivyservice.ivyresolve.parser.MetaDataParser;
-import org.gradle.api.internal.artifacts.ivyservice.ivyresolve.strategy.DefaultVersionComparator;
-import org.gradle.api.internal.artifacts.ivyservice.ivyresolve.strategy.DefaultVersionSelectorScheme;
+import org.gradle.api.internal.artifacts.ivyservice.resolveengine.artifact.ResolvableArtifact;
import org.gradle.api.internal.artifacts.repositories.AbstractArtifactRepository;
import org.gradle.api.internal.artifacts.repositories.ResolutionAwareRepository;
+import org.gradle.api.internal.artifacts.repositories.resolver.MetadataFetchingCost;
import org.gradle.api.internal.component.ArtifactType;
-import org.gradle.internal.component.external.model.DefaultMavenModuleResolveMetaData;
-import org.gradle.internal.component.external.model.DefaultModuleComponentArtifactMetaData;
-import org.gradle.internal.component.external.model.ModuleComponentResolveMetaData;
-import org.gradle.internal.component.external.model.MutableModuleComponentResolveMetaData;
-import org.gradle.internal.component.model.ComponentArtifactMetaData;
+import org.gradle.internal.component.external.model.DefaultModuleComponentArtifactMetadata;
+import org.gradle.internal.component.external.model.DefaultMutableMavenModuleResolveMetadata;
+import org.gradle.internal.component.external.model.FixedComponentArtifacts;
+import org.gradle.internal.component.external.model.ModuleComponentArtifactMetadata;
+import org.gradle.internal.component.external.model.ModuleComponentResolveMetadata;
+import org.gradle.internal.component.external.model.MutableMavenModuleResolveMetadata;
+import org.gradle.internal.component.external.model.MutableModuleComponentResolveMetadata;
+import org.gradle.internal.component.model.ComponentArtifactMetadata;
import org.gradle.internal.component.model.ComponentOverrideMetadata;
-import org.gradle.internal.component.model.ComponentResolveMetaData;
-import org.gradle.internal.component.model.ComponentUsage;
+import org.gradle.internal.component.model.ComponentResolveMetadata;
import org.gradle.internal.component.model.DefaultIvyArtifactName;
-import org.gradle.internal.component.model.DependencyMetaData;
+import org.gradle.internal.component.model.DependencyMetadata;
import org.gradle.internal.component.model.IvyArtifactName;
import org.gradle.internal.component.model.ModuleSource;
import org.gradle.internal.resolve.ArtifactResolveException;
import org.gradle.internal.resolve.ModuleVersionResolveException;
import org.gradle.internal.resolve.result.BuildableArtifactResolveResult;
import org.gradle.internal.resolve.result.BuildableArtifactSetResolveResult;
+import org.gradle.internal.resolve.result.BuildableComponentArtifactsResolveResult;
import org.gradle.internal.resolve.result.BuildableModuleComponentMetaDataResolveResult;
import org.gradle.internal.resolve.result.BuildableModuleVersionListingResolveResult;
-import org.gradle.internal.resource.local.DefaultLocallyAvailableExternalResource;
-import org.gradle.internal.resource.local.DefaultLocallyAvailableResource;
+import org.gradle.internal.resource.local.FileResourceRepository;
import org.gradle.internal.resource.local.LocallyAvailableExternalResource;
+import org.gradle.internal.resource.metadata.DefaultExternalResourceMetaData;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -72,6 +78,21 @@ public class GradleResolver
implements ResolutionAwareRepository, ConfiguredModuleComponentRepository, ModuleComponentRepositoryAccess,
DescriptorParseContext
{
+ public GradleResolver( MetaDataParser<MutableMavenModuleResolveMetadata> pomParser,
+ ImmutableModuleIdentifierFactory moduleIdentifierFactory,
+ FileResourceRepository fileRepository )
+ {
+ this.pomParser = pomParser;
+ this.moduleIdentifierFactory = moduleIdentifierFactory;
+ this.fileRepository = fileRepository;
+ }
+
+ private MetaDataParser<MutableMavenModuleResolveMetadata> pomParser;
+
+ private ImmutableModuleIdentifierFactory moduleIdentifierFactory;
+
+ private FileResourceRepository fileRepository;
+
private final Logger logger = LoggerFactory.getLogger( GradleResolver.class );
static class LazyLocatorProvider
@@ -135,17 +156,17 @@ public class GradleResolver
}
@Override
- public void listModuleVersions( DependencyMetaData arg0, BuildableModuleVersionListingResolveResult arg1 )
+ public void listModuleVersions( DependencyMetadata arg0, BuildableModuleVersionListingResolveResult arg1 )
{
logger.debug( "listModuleVersions() called, but it is NOT IMPLEMENTED" );
}
@Override
- public void resolveArtifact( ComponentArtifactMetaData artifact, ModuleSource module,
+ public void resolveArtifact( ComponentArtifactMetadata artifact, ModuleSource module,
BuildableArtifactResolveResult result )
{
ModuleVersionIdentifier moduleId =
- ( (DefaultModuleComponentArtifactMetaData) artifact ).toArtifactIdentifier().getModuleVersionIdentifier();
+ ( (DefaultModuleComponentArtifactMetadata) artifact ).toArtifactIdentifier().getModuleVersionIdentifier();
String groupId = moduleId.getGroup();
String artifactId = artifact.getName().getName();
String extension = artifact.getName().getExtension();
@@ -180,11 +201,9 @@ public class GradleResolver
{
logger.debug( "Found Maven POM: {}", pomPath );
- MetaDataParser<DefaultMavenModuleResolveMetaData> parser =
- new GradlePomModuleDescriptorParser( new DefaultVersionSelectorScheme( new DefaultVersionComparator() ) );
- MutableModuleComponentResolveMetaData metaData = parser.parseMetaData( this, pomPath.toFile() );
+ MutableModuleComponentResolveMetadata metaData = pomParser.parseMetaData( this, pomPath.toFile() );
- result.resolved( metaData );
+ result.resolved( metaData.asImmutable() );
return;
}
else
@@ -204,9 +223,11 @@ public class GradleResolver
if ( path != null )
{
logger.debug( "Artifact {} found, returning minimal model", artifact3 );
- MutableModuleComponentResolveMetaData metaData =
- new DefaultMavenModuleResolveMetaData( id, request.getArtifacts() );
- result.resolved( metaData );
+ ModuleVersionIdentifier mvi =
+ moduleIdentifierFactory.moduleWithVersion( id.getGroup(), id.getModule(), id.getVersion() );
+ MutableModuleComponentResolveMetadata metaData =
+ new DefaultMutableMavenModuleResolveMetadata( mvi, id, request.getArtifacts() );
+ result.resolved( metaData.asImmutable() );
return;
}
}
@@ -224,24 +245,15 @@ public class GradleResolver
if ( artifactSet.isEmpty() )
{
- artifactSet.add( new DefaultIvyArtifactName( id.getModule(), "jar", "jar",
- Collections.<String, String>emptyMap() ) );
+ artifactSet.add( new DefaultIvyArtifactName( id.getModule(), "jar", "jar", null ) );
}
return artifactSet;
}
@Override
- public void resolveModuleArtifacts( ComponentResolveMetaData component, ComponentUsage usage,
- BuildableArtifactSetResolveResult result )
- {
- result.resolved( Collections.singleton( ( (ModuleComponentResolveMetaData) component ).artifact( "jar", "jar",
- null ) ) );
- }
-
- @Override
- public void resolveModuleArtifacts( ComponentResolveMetaData component, ArtifactType type,
- BuildableArtifactSetResolveResult result )
+ public void resolveArtifactsWithType( ComponentResolveMetadata component, ArtifactType type,
+ BuildableArtifactSetResolveResult result )
{
if ( type != ArtifactType.MAVEN_POM )
{
@@ -250,15 +262,22 @@ public class GradleResolver
return;
}
- ModuleComponentResolveMetaData metaData = (ModuleComponentResolveMetaData) component;
- ModuleComponentIdentifier id = metaData.getComponentId();
+ ModuleComponentIdentifier id = (ModuleComponentIdentifier) component.getComponentId();
DefaultIvyArtifactName name = new DefaultIvyArtifactName( id.getModule(), "pom", "pom" );
- DefaultModuleComponentArtifactMetaData resolvedMetaData =
- new DefaultModuleComponentArtifactMetaData( id, name );
+ DefaultModuleComponentArtifactMetadata resolvedMetaData =
+ new DefaultModuleComponentArtifactMetadata( id, name );
result.resolved( Collections.singleton( resolvedMetaData ) );
}
@Override
+ public void resolveArtifacts( ComponentResolveMetadata component, BuildableComponentArtifactsResolveResult result )
+ {
+ ModuleComponentArtifactMetadata artifact =
+ ( (ModuleComponentResolveMetadata) component ).artifact( "jar", "jar", null );
+ result.resolved( new FixedComponentArtifacts( Collections.singleton( artifact ) ) );
+ }
+
+ @Override
public LocallyAvailableExternalResource getMetaDataArtifact( ModuleComponentIdentifier id, ArtifactType type )
{
Path pomPath = resolve( new DefaultArtifact( id.getGroup(), id.getModule(), "pom", id.getVersion() ) );
@@ -266,7 +285,25 @@ public class GradleResolver
if ( pomPath == null )
return null;
- return new DefaultLocallyAvailableExternalResource( pomPath.toUri(),
- new DefaultLocallyAvailableResource( pomPath.toFile() ) );
+ DefaultExternalResourceMetaData metadata = new DefaultExternalResourceMetaData( pomPath.toUri(), 0, 0 );
+ return fileRepository.resource( pomPath.toFile(), pomPath.toUri(), metadata );
+ }
+
+ @Override
+ public ComponentMetadataSupplier createMetadataSupplier()
+ {
+ return null;
+ }
+
+ @Override
+ public Map<ComponentArtifactIdentifier, ResolvableArtifact> getArtifactCache()
+ {
+ return Collections.emptyMap();
+ }
+
+ @Override
+ public MetadataFetchingCost estimateMetadataFetchingCost( ModuleComponentIdentifier arg0 )
+ {
+ return MetadataFetchingCost.CHEAP;
}
}
diff --git a/xmvn-connector-gradle/src/main/java/org/fedoraproject/xmvn/connector/gradle/XMvnGradlePlugin.java b/xmvn-connector-gradle/src/main/java/org/fedoraproject/xmvn/connector/gradle/XMvnGradlePlugin.java
index 2646f098..c3250e3c 100644
--- a/xmvn-connector-gradle/src/main/java/org/fedoraproject/xmvn/connector/gradle/XMvnGradlePlugin.java
+++ b/xmvn-connector-gradle/src/main/java/org/fedoraproject/xmvn/connector/gradle/XMvnGradlePlugin.java
@@ -15,9 +15,11 @@
*/
package org.fedoraproject.xmvn.connector.gradle;
+import groovy.lang.Closure;
+import groovy.lang.GroovyShell;
import org.gradle.api.Plugin;
import org.gradle.api.Task;
-import org.gradle.api.artifacts.repositories.ArtifactRepository;
+import org.gradle.api.artifacts.dsl.RepositoryHandler;
import org.gradle.api.invocation.Gradle;
/**
@@ -26,15 +28,17 @@ import org.gradle.api.invocation.Gradle;
public class XMvnGradlePlugin
implements Plugin<Gradle>
{
+ private void configureRepositories( RepositoryHandler repositories )
+ {
+ repositories.configure( (Closure<?>) new GroovyShell().evaluate( "{ it -> xmvn() }" ) );
+ }
+
@Override
public void apply( Gradle gradle )
{
- ArtifactRepository repo = new GradleResolver();
- repo.setName( "xmvn" );
-
gradle.allprojects( project -> {
- project.getRepositories().addFirst( repo );
- project.getBuildscript().getRepositories().addFirst( repo );
+ configureRepositories( project.getRepositories() );
+ configureRepositories( project.getBuildscript().getRepositories() );
Task upload = project.getTasks().create( "xmvnInstall", XMvnInstallTask.class );
upload.setDescription( "Installs all artifacts through XMvn" );
diff --git a/xmvn-connector-gradle/src/main/java/org/fedoraproject/xmvn/connector/gradle/XMvnInstallTask.java b/xmvn-connector-gradle/src/main/java/org/fedoraproject/xmvn/connector/gradle/XMvnInstallTask.java
index 196f4a5b..07905f1f 100644
--- a/xmvn-connector-gradle/src/main/java/org/fedoraproject/xmvn/connector/gradle/XMvnInstallTask.java
+++ b/xmvn-connector-gradle/src/main/java/org/fedoraproject/xmvn/connector/gradle/XMvnInstallTask.java
@@ -17,6 +17,7 @@ package org.fedoraproject.xmvn.connector.gradle;
import java.nio.file.Files;
import java.util.Collections;
+import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
@@ -32,7 +33,7 @@ import org.gradle.api.artifacts.PublishArtifact;
import org.gradle.api.artifacts.PublishException;
import org.gradle.api.component.SoftwareComponent;
import org.gradle.api.internal.component.SoftwareComponentInternal;
-import org.gradle.api.internal.component.Usage;
+import org.gradle.api.internal.component.UsageContext;
import org.gradle.api.tasks.TaskAction;
import org.fedoraproject.xmvn.artifact.Artifact;
@@ -83,7 +84,7 @@ class XMvnInstallTask
Project dependencyProject = projectDependency.getDependencyProject();
Stream<SoftwareComponent> components = dependencyProject.getComponents().stream();
Stream<SoftwareComponentInternal> internalComponents = components.map( c -> (SoftwareComponentInternal) c );
- Stream<Usage> usages = internalComponents.flatMap( ic -> ic.getUsages().stream() );
+ Stream<UsageContext> usages = internalComponents.flatMap( ic -> ic.getUsages().stream() );
Stream<PublishArtifact> publishArtifacts = usages.flatMap( usage -> usage.getArtifacts().stream() );
Stream<Artifact> artifacts = publishArtifacts.map( pa -> getPublishArtifact( dependencyProject, pa ) );
return artifacts.collect( Collectors.toList() );
@@ -144,7 +145,13 @@ class XMvnInstallTask
}
}
- DeploymentResult result = getDeployer().deploy( request );
+ DeploymentResult result;
+
+ // prevent parallel access to installation plan
+ synchronized ( XMvnInstallTask.class )
+ {
+ result = getDeployer().deploy( request );
+ }
if ( result.getException() != null )
{
@@ -155,17 +162,22 @@ class XMvnInstallTask
@TaskAction
protected void deployProject()
{
+ Set<PublishArtifact> seenArtifacts = new HashSet<>();
+
for ( SoftwareComponent component : getProject().getComponents() )
{
SoftwareComponentInternal internalComponent = (SoftwareComponentInternal) component;
- for ( Usage usage : internalComponent.getUsages() )
+ for ( UsageContext usage : internalComponent.getUsages() )
{
Set<ModuleDependency> dependencies = usage.getDependencies();
for ( PublishArtifact artifact : usage.getArtifacts() )
{
- deploy( artifact, dependencies );
+ if ( seenArtifacts.add( artifact ) )
+ {
+ deploy( artifact, dependencies );
+ }
}
}
}
diff --git a/xmvn-parent/pom.xml b/xmvn-parent/pom.xml
index 661cc24d..7e7a6d94 100644
--- a/xmvn-parent/pom.xml
+++ b/xmvn-parent/pom.xml
@@ -84,7 +84,7 @@
<atinjectVersion>1</atinjectVersion>
<ivyVersion>2.4.0</ivyVersion>
<jcommanderVersion>1.64</jcommanderVersion>
- <gradleVersion>2.13-rc-1</gradleVersion>
+ <gradleVersion>4.2.1</gradleVersion>
<groovyVersion>2.4.10</groovyVersion>
<mavenInvokerVersion>2.2</mavenInvokerVersion>
<mavenResolverVersion>1.0.3</mavenResolverVersion>
@@ -278,11 +278,21 @@
</dependency>
<dependency>
<groupId>org.gradle</groupId>
+ <artifactId>gradle-core-api</artifactId>
+ <version>${gradleVersion}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.gradle</groupId>
<artifactId>gradle-core</artifactId>
<version>${gradleVersion}</version>
</dependency>
<dependency>
<groupId>org.gradle</groupId>
+ <artifactId>gradle-model-core</artifactId>
+ <version>${gradleVersion}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.gradle</groupId>
<artifactId>gradle-dependency-management</artifactId>
<version>${gradleVersion}</version>
</dependency>
@@ -292,6 +302,11 @@
<version>${gradleVersion}</version>
</dependency>
<dependency>
+ <groupId>org.gradle</groupId>
+ <artifactId>gradle-logging</artifactId>
+ <version>${gradleVersion}</version>
+ </dependency>
+ <dependency>
<groupId>org.codehaus.groovy</groupId>
<artifactId>groovy-all</artifactId>
<version>${groovyVersion}</version>
--
2.13.6

View File

@ -1,62 +0,0 @@
From cd6cf796f7c2230c940f95f46dc905a25152c486 Mon Sep 17 00:00:00 2001
From: Michael Simacek <msimacek@redhat.com>
Date: Fri, 10 Nov 2017 15:13:45 +0200
Subject: [PATCH] Port to Gradle 4.3.1
---
.../java/org/fedoraproject/xmvn/connector/gradle/GradleResolver.java | 2 +-
.../java/org/fedoraproject/xmvn/connector/gradle/XMvnInstallTask.java | 4 ++--
xmvn-parent/pom.xml | 2 +-
3 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/xmvn-connector-gradle/src/main/java/org/fedoraproject/xmvn/connector/gradle/GradleResolver.java b/xmvn-connector-gradle/src/main/java/org/fedoraproject/xmvn/connector/gradle/GradleResolver.java
index 6305aa86..9e1a247a 100644
--- a/xmvn-connector-gradle/src/main/java/org/fedoraproject/xmvn/connector/gradle/GradleResolver.java
+++ b/xmvn-connector-gradle/src/main/java/org/fedoraproject/xmvn/connector/gradle/GradleResolver.java
@@ -226,7 +226,7 @@ public class GradleResolver
ModuleVersionIdentifier mvi =
moduleIdentifierFactory.moduleWithVersion( id.getGroup(), id.getModule(), id.getVersion() );
MutableModuleComponentResolveMetadata metaData =
- new DefaultMutableMavenModuleResolveMetadata( mvi, id, request.getArtifacts() );
+ DefaultMutableMavenModuleResolveMetadata.missing( mvi, id );
result.resolved( metaData.asImmutable() );
return;
}
diff --git a/xmvn-connector-gradle/src/main/java/org/fedoraproject/xmvn/connector/gradle/XMvnInstallTask.java b/xmvn-connector-gradle/src/main/java/org/fedoraproject/xmvn/connector/gradle/XMvnInstallTask.java
index 07905f1f..d220e266 100644
--- a/xmvn-connector-gradle/src/main/java/org/fedoraproject/xmvn/connector/gradle/XMvnInstallTask.java
+++ b/xmvn-connector-gradle/src/main/java/org/fedoraproject/xmvn/connector/gradle/XMvnInstallTask.java
@@ -116,7 +116,7 @@ class XMvnInstallTask
} ).collect( Collectors.toList() );
}
- private void deploy( PublishArtifact gradleArtifact, Set<ModuleDependency> dependencies )
+ private void deploy( PublishArtifact gradleArtifact, Set<? extends ModuleDependency> dependencies )
{
DeploymentRequest request = new DeploymentRequest();
@@ -170,7 +170,7 @@ class XMvnInstallTask
for ( UsageContext usage : internalComponent.getUsages() )
{
- Set<ModuleDependency> dependencies = usage.getDependencies();
+ Set<? extends ModuleDependency> dependencies = usage.getDependencies();
for ( PublishArtifact artifact : usage.getArtifacts() )
{
diff --git a/xmvn-parent/pom.xml b/xmvn-parent/pom.xml
index 7e7a6d94..910e27b6 100644
--- a/xmvn-parent/pom.xml
+++ b/xmvn-parent/pom.xml
@@ -84,7 +84,7 @@
<atinjectVersion>1</atinjectVersion>
<ivyVersion>2.4.0</ivyVersion>
<jcommanderVersion>1.64</jcommanderVersion>
- <gradleVersion>4.2.1</gradleVersion>
+ <gradleVersion>4.3.1</gradleVersion>
<groovyVersion>2.4.10</groovyVersion>
<mavenInvokerVersion>2.2</mavenInvokerVersion>
<mavenResolverVersion>1.0.3</mavenResolverVersion>
--
2.13.6

View File

@ -1,86 +0,0 @@
From 7049d71ed85851fb5ca25b88c5e33b51cf3a5dac Mon Sep 17 00:00:00 2001
From: Marian Koncek <mkoncek@redhat.com>
Date: Fri, 19 Apr 2019 09:32:40 +0200
Subject: [PATCH] Port to Xmlunit 2.6.2
---
xmvn-parent/pom.xml | 10 +++++-----
.../xmvn/tools/install/impl/InstallerTest.java | 6 ++----
2 files changed, 7 insertions(+), 9 deletions(-)
diff --git a/xmvn-parent/pom.xml b/xmvn-parent/pom.xml
index d4f9dda..5c21cfa 100644
--- a/xmvn-parent/pom.xml
+++ b/xmvn-parent/pom.xml
@@ -122,7 +122,7 @@
<sitePluginVersion>3.6</sitePluginVersion>
<sourcePluginVersion>3.0.1</sourcePluginVersion>
<surefireVersion>2.19.1</surefireVersion>
- <xmlunitVersion>1.6</xmlunitVersion>
+ <xmlunitVersion>2.6.2</xmlunitVersion>
</properties>
<dependencyManagement>
@@ -228,8 +228,8 @@
<version>${junitVersion}</version>
</dependency>
<dependency>
- <groupId>xmlunit</groupId>
- <artifactId>xmlunit</artifactId>
+ <groupId>org.xmlunit</groupId>
+ <artifactId>xmlunit-assertj</artifactId>
<version>${xmlunitVersion}</version>
</dependency>
<dependency>
@@ -336,8 +336,8 @@
<scope>test</scope>
</dependency>
<dependency>
- <groupId>xmlunit</groupId>
- <artifactId>xmlunit</artifactId>
+ <groupId>org.xmlunit</groupId>
+ <artifactId>xmlunit-assertj</artifactId>
<scope>test</scope>
</dependency>
<dependency>
diff --git a/xmvn-tools/xmvn-install/src/test/java/org/fedoraproject/xmvn/tools/install/impl/InstallerTest.java b/xmvn-tools/xmvn-install/src/test/java/org/fedoraproject/xmvn/tools/install/impl/InstallerTest.java
index 9fb7d90..bece0b2 100644
--- a/xmvn-tools/xmvn-install/src/test/java/org/fedoraproject/xmvn/tools/install/impl/InstallerTest.java
+++ b/xmvn-tools/xmvn-install/src/test/java/org/fedoraproject/xmvn/tools/install/impl/InstallerTest.java
@@ -15,8 +15,6 @@
*/
package org.fedoraproject.xmvn.tools.install.impl;
-import static org.custommonkey.xmlunit.XMLAssert.assertXMLEqual;
-import static org.custommonkey.xmlunit.XMLUnit.setIgnoreWhitespace;
import static org.easymock.EasyMock.expect;
import static org.easymock.EasyMock.replay;
import static org.easymock.EasyMock.verify;
@@ -40,6 +38,7 @@ import org.junit.runner.RunWith;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
+import org.xmlunit.assertj.XmlAssert;
import org.fedoraproject.xmvn.artifact.DefaultArtifact;
import org.fedoraproject.xmvn.config.Artifact;
@@ -188,7 +187,6 @@ public class InstallerTest
protected void assertMetadataEqual( Path expected, Path actual )
throws Exception
{
- setIgnoreWhitespace( true );
assertTrue( Files.isRegularFile( actual ) );
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
@@ -208,7 +206,7 @@ public class InstallerTest
unifyUuids( expectedXml.getElementsByTagName( "uuid" ) );
unifyUuids( actualXml.getElementsByTagName( "uuid" ) );
- assertXMLEqual( expectedXml, actualXml );
+ XmlAssert.assertThat( expectedXml ).and( actualXml ).ignoreWhitespace().areSimilar();
}
@Test
--
2.20.1

View File

@ -1,30 +0,0 @@
From 9aa9c66be355d95e2c532bbdfdc98bdbba9b6606 Mon Sep 17 00:00:00 2001
From: Michael Simacek <msimacek@redhat.com>
Date: Thu, 7 Dec 2017 15:50:52 +0200
Subject: [PATCH] Support setting "-Xdoclint:none" in m-javadoc-p >= 3.0.0
maven-javadoc-plugin 3.0.0 replaced `additionalparam` string property
with `additionalOptions` list property.
See: https://issues.apache.org/jira/browse/MJAVADOC-368
---
.../fedoraproject/xmvn/connector/aether/XMvnMojoExecutionListener.java | 3 +++
1 file changed, 3 insertions(+)
diff --git a/xmvn-connector-aether/src/main/java/org/fedoraproject/xmvn/connector/aether/XMvnMojoExecutionListener.java b/xmvn-connector-aether/src/main/java/org/fedoraproject/xmvn/connector/aether/XMvnMojoExecutionListener.java
index 5f9b5dd4..bb066638 100644
--- a/xmvn-connector-aether/src/main/java/org/fedoraproject/xmvn/connector/aether/XMvnMojoExecutionListener.java
+++ b/xmvn-connector-aether/src/main/java/org/fedoraproject/xmvn/connector/aether/XMvnMojoExecutionListener.java
@@ -267,7 +267,10 @@ public class XMvnMojoExecutionListener
// Disable doclint
if ( JAVADOC_AGGREGATE.equals( execution ) )
{
+ // maven-javadoc-plugin < 3.0.0
trySetBeanProperty( mojo, "additionalparam", "-Xdoclint:none" );
+ // maven-javadoc-plugin >= 3.0.0
+ trySetBeanProperty( mojo, "additionalOptions", new String[] { "-Xdoclint:none" } );
}
else if ( XMVN_BUILDDEP.equals( execution ) )
{
--
2.14.3

View File

@ -1,115 +0,0 @@
From 5d8219051b8419aeb33f15f6a5e38084f1782572 Mon Sep 17 00:00:00 2001
From: Marian Koncek <mkoncek@redhat.com>
Date: Wed, 29 May 2019 16:55:20 +0200
Subject: [PATCH] Update maven-invoker to version 3.0.1
---
xmvn-parent/pom.xml | 2 +-
xmvn-tools/xmvn-bisect/pom.xml | 4 ++
.../xmvn/tools/bisect/BisectCliRequest.java | 38 ++++++++++++++++---
3 files changed, 37 insertions(+), 7 deletions(-)
diff --git a/xmvn-parent/pom.xml b/xmvn-parent/pom.xml
index 5c21cfa..edf6cbd 100644
--- a/xmvn-parent/pom.xml
+++ b/xmvn-parent/pom.xml
@@ -86,7 +86,7 @@
<jcommanderVersion>1.64</jcommanderVersion>
<gradleVersion>4.3.1</gradleVersion>
<groovyVersion>2.4.10</groovyVersion>
- <mavenInvokerVersion>2.2</mavenInvokerVersion>
+ <mavenInvokerVersion>3.0.1</mavenInvokerVersion>
<mavenResolverVersion>1.0.3</mavenResolverVersion>
<mavenVersion>3.5.0</mavenVersion>
<plexusUtilsVersion>3.0.24</plexusUtilsVersion>
diff --git a/xmvn-tools/xmvn-bisect/pom.xml b/xmvn-tools/xmvn-bisect/pom.xml
index ce592ad..1410022 100644
--- a/xmvn-tools/xmvn-bisect/pom.xml
+++ b/xmvn-tools/xmvn-bisect/pom.xml
@@ -49,5 +49,9 @@
</exclusion>
</exclusions>
</dependency>
+ <dependency>
+ <groupId>org.codehaus.plexus</groupId>
+ <artifactId>plexus-utils</artifactId>
+ </dependency>
</dependencies>
</project>
diff --git a/xmvn-tools/xmvn-bisect/src/main/java/org/fedoraproject/xmvn/tools/bisect/BisectCliRequest.java b/xmvn-tools/xmvn-bisect/src/main/java/org/fedoraproject/xmvn/tools/bisect/BisectCliRequest.java
index 795bfd9..1f0fcf5 100644
--- a/xmvn-tools/xmvn-bisect/src/main/java/org/fedoraproject/xmvn/tools/bisect/BisectCliRequest.java
+++ b/xmvn-tools/xmvn-bisect/src/main/java/org/fedoraproject/xmvn/tools/bisect/BisectCliRequest.java
@@ -29,6 +29,8 @@ import com.beust.jcommander.Parameter;
import com.beust.jcommander.ParameterException;
import org.apache.maven.shared.invoker.DefaultInvocationRequest;
import org.apache.maven.shared.invoker.InvocationRequest;
+import org.apache.maven.shared.invoker.InvocationRequest.CheckSumPolicy;
+import org.apache.maven.shared.invoker.InvocationRequest.ReactorFailureBehavior;
import org.codehaus.plexus.util.StringUtils;
/**
@@ -178,6 +180,30 @@ public class BisectCliRequest
return null;
}
+ private static CheckSumPolicy stringToCheckSumPolicy( String policy )
+ {
+ if ( policy == null )
+ return null;
+ if ( policy.equals( "fail" ) )
+ return CheckSumPolicy.Fail;
+ if ( policy.equals( "warn" ) )
+ return CheckSumPolicy.Warn;
+
+ throw new IllegalArgumentException( "Invalid checksum policy selected" );
+ }
+
+ private static String checkSumPolicyToString( CheckSumPolicy policy )
+ {
+ if ( policy == null )
+ return null;
+ if ( policy.equals( CheckSumPolicy.Fail ) )
+ return "fail";
+ if ( policy.equals( CheckSumPolicy.Warn ) )
+ return "warn";
+
+ throw new IllegalArgumentException( "Invalid checksum policy selected" );
+ }
+
private void setDefaultValues()
{
String userHome = System.getProperty( "user.home" );
@@ -193,11 +219,11 @@ public class BisectCliRequest
alsoMake = request.isAlsoMake();
alsoMakeDependents = request.isAlsoMakeDependents();
debug = request.isDebug();
- failureBehavior = request.getFailureBehavior();
- globalChecksumPolicy = request.getGlobalChecksumPolicy();
+ failureBehavior = request.getReactorFailureBehavior().getLongOption();
+ globalChecksumPolicy = checkSumPolicyToString( request.getGlobalChecksumPolicy() );
globalSettings = StringUtils.defaultString( request.getGlobalSettingsFile() );
goals = request.getGoals();
- batchMode = !request.isInteractive();
+ batchMode = request.isBatchMode();
javaHome = fileToString( request.getJavaHome() );
localRepository = fileToString( request.getLocalRepositoryDirectory( null ) );
mavenOpts = request.getMavenOpts();
@@ -222,11 +248,11 @@ public class BisectCliRequest
request.setAlsoMake( alsoMake );
request.setAlsoMakeDependents( alsoMakeDependents );
request.setDebug( debug );
- request.setFailureBehavior( failureBehavior );
- request.setGlobalChecksumPolicy( globalChecksumPolicy );
+ request.setReactorFailureBehavior( ReactorFailureBehavior.valueOfByLongOption( failureBehavior ) );
+ request.setGlobalChecksumPolicy( stringToCheckSumPolicy( globalChecksumPolicy ) );
request.setGlobalSettingsFile( stringToFile( globalSettings ) );
request.setGoals( goals );
- request.setInteractive( !batchMode );
+ request.setBatchMode( batchMode );
request.setJavaHome( stringToFile( javaHome ) );
request.setLocalRepositoryDirectory( stringToFile( localRepository ) );
request.setMavenOpts( mavenOpts );
--
2.20.1

View File

@ -1,593 +0,0 @@
From 4e1e7377d6318d2bd7dd8620269e172a704650e2 Mon Sep 17 00:00:00 2001
From: Michael Simacek <msimacek@redhat.com>
Date: Mon, 16 Apr 2018 15:29:50 +0200
Subject: [PATCH] Use apache-commons-compress for manifest injection and native
code detection
---
xmvn-parent/pom.xml | 8 +-
xmvn-tools/xmvn-install/pom.xml | 4 +
.../fedoraproject/xmvn/tools/install/JarUtils.java | 176 +++++++++------------
.../xmvn/tools/install/impl/JarUtilsTest.java | 55 +++++++
.../src/test/resources/recompression-size.jar | Bin 0 -> 4376 bytes
xmvn.spec | 3 +-
6 files changed, 140 insertions(+), 106 deletions(-)
create mode 100644 xmvn-tools/xmvn-install/src/test/resources/recompression-size.jar
diff --git a/xmvn-parent/pom.xml b/xmvn-parent/pom.xml
index df6af7fb..f6465d90 100644
--- a/xmvn-parent/pom.xml
+++ b/xmvn-parent/pom.xml
@@ -92,6 +92,7 @@
<plexusUtilsVersion>3.0.24</plexusUtilsVersion>
<pluginToolsVersion>3.5</pluginToolsVersion>
<slf4jVersion>1.7.25</slf4jVersion>
+ <commonsCompressVersion>1.16.1</commonsCompressVersion>
<!-- Build dependencies -->
<apivizVersion>1.3.2.GA</apivizVersion>
@@ -102,7 +103,7 @@
<compilerPluginVersion>3.6.1</compilerPluginVersion>
<dependencyPluginVersion>3.0.0</dependencyPluginVersion>
<deployPluginVersion>2.8.2</deployPluginVersion>
- <easymockVersion>3.4</easymockVersion>
+ <easymockVersion>3.5</easymockVersion>
<gpgPluginVersion>1.6</gpgPluginVersion>
<installPluginVersion>2.5.2</installPluginVersion>
<jacocoVersion>0.7.9</jacocoVersion>
@@ -321,6 +322,11 @@
<artifactId>plexus-container-default</artifactId>
<version>${plexusVersion}</version>
</dependency>
+ <dependency>
+ <groupId>org.apache.commons</groupId>
+ <artifactId>commons-compress</artifactId>
+ <version>${commonsCompressVersion}</version>
+ </dependency>
</dependencies>
</dependencyManagement>
<dependencies>
diff --git a/xmvn-tools/xmvn-install/pom.xml b/xmvn-tools/xmvn-install/pom.xml
index 66ac01d7..fbb36a68 100644
--- a/xmvn-tools/xmvn-install/pom.xml
+++ b/xmvn-tools/xmvn-install/pom.xml
@@ -61,5 +61,9 @@
<groupId>org.ow2.asm</groupId>
<artifactId>asm</artifactId>
</dependency>
+ <dependency>
+ <groupId>org.apache.commons</groupId>
+ <artifactId>commons-compress</artifactId>
+ </dependency>
</dependencies>
</project>
diff --git a/xmvn-tools/xmvn-install/src/main/java/org/fedoraproject/xmvn/tools/install/JarUtils.java b/xmvn-tools/xmvn-install/src/main/java/org/fedoraproject/xmvn/tools/install/JarUtils.java
index 98d3a57e..5cb62b0f 100644
--- a/xmvn-tools/xmvn-install/src/main/java/org/fedoraproject/xmvn/tools/install/JarUtils.java
+++ b/xmvn-tools/xmvn-install/src/main/java/org/fedoraproject/xmvn/tools/install/JarUtils.java
@@ -16,19 +16,16 @@
package org.fedoraproject.xmvn.tools.install;
import java.io.IOException;
-import java.lang.reflect.Field;
+import java.io.InputStream;
import java.nio.file.Files;
import java.nio.file.Path;
-import java.util.Collection;
+import java.util.Enumeration;
import java.util.jar.Attributes;
-import java.util.jar.JarEntry;
-import java.util.jar.JarInputStream;
-import java.util.jar.JarOutputStream;
import java.util.jar.Manifest;
-import java.util.zip.ZipEntry;
-import java.util.zip.ZipInputStream;
-import java.util.zip.ZipOutputStream;
+import org.apache.commons.compress.archivers.zip.ZipArchiveEntry;
+import org.apache.commons.compress.archivers.zip.ZipArchiveOutputStream;
+import org.apache.commons.compress.archivers.zip.ZipFile;
import org.objectweb.asm.ClassReader;
import org.objectweb.asm.ClassVisitor;
import org.objectweb.asm.MethodVisitor;
@@ -43,6 +40,8 @@ import org.fedoraproject.xmvn.artifact.Artifact;
*/
public final class JarUtils
{
+ private static final String MANIFEST_PATH = "META-INF/MANIFEST.MF";
+
private static final Logger LOGGER = LoggerFactory.getLogger( JarUtils.class );
// From /usr/include/linux/elf.h
@@ -67,28 +66,33 @@ public final class JarUtils
*
* @return {@code true} if native code was found inside given JAR
*/
- public static boolean containsNativeCode( Path jar )
+ public static boolean containsNativeCode( Path jarPath )
{
- try ( ZipInputStream jis = new ZipInputStream( Files.newInputStream( jar ) ) )
+ try ( ZipFile jar = new ZipFile( jarPath.toFile() ) )
{
- ZipEntry ent;
- while ( ( ent = jis.getNextEntry() ) != null )
+ Enumeration<ZipArchiveEntry> entries = jar.getEntries();
+ while ( entries.hasMoreElements() )
{
- if ( ent.isDirectory() )
+ ZipArchiveEntry entry = entries.nextElement();
+ if ( entry.isDirectory() )
continue;
- if ( jis.read() == ELFMAG0 && jis.read() == ELFMAG1 && jis.read() == ELFMAG2 && jis.read() == ELFMAG3 )
+ try ( InputStream jis = jar.getInputStream( entry ) )
{
- LOGGER.debug( "Native code found inside {}: {}", jar, ent.getName() );
- return true;
+ if ( jis.read() == ELFMAG0 && jis.read() == ELFMAG1 && jis.read() == ELFMAG2
+ && jis.read() == ELFMAG3 )
+ {
+ LOGGER.debug( "Native code found inside {}: {}", jarPath, entry.getName() );
+ return true;
+ }
}
}
- LOGGER.trace( "Native code not found inside {}", jar );
+ LOGGER.trace( "Native code not found inside {}", jarPath );
return false;
}
catch ( IOException e )
{
- LOGGER.debug( "I/O exception caught when trying to determine whether JAR contains native code: {}", jar,
+ LOGGER.debug( "I/O exception caught when trying to determine whether JAR contains native code: {}", jarPath,
e );
return false;
}
@@ -122,40 +126,47 @@ public final class JarUtils
*
* @return {@code true} given JAR as found inside to use native code
*/
- public static boolean usesNativeCode( Path jar )
+ public static boolean usesNativeCode( Path jarPath )
{
- try ( ZipInputStream jis = new ZipInputStream( Files.newInputStream( jar ) ) )
+ try ( ZipFile jar = new ZipFile( jarPath.toFile() ) )
{
- ZipEntry ent;
- while ( ( ent = jis.getNextEntry() ) != null )
+ Enumeration<ZipArchiveEntry> entries = jar.getEntries();
+ while ( entries.hasMoreElements() )
{
- final String entryName = ent.getName();
- if ( ent.isDirectory() || !entryName.endsWith( ".class" ) )
+ ZipArchiveEntry entry = entries.nextElement();
+ final String entryName = entry.getName();
+ if ( entry.isDirectory() || !entryName.endsWith( ".class" ) )
continue;
- new ClassReader( jis ).accept( new ClassVisitor( Opcodes.ASM4 )
+ try ( InputStream jis = jar.getInputStream( entry ) )
{
- @Override
- public MethodVisitor visitMethod( int flags, String name, String desc, String sig, String[] exc )
+ new ClassReader( jis ).accept( new ClassVisitor( Opcodes.ASM4 )
{
- if ( ( flags & Opcodes.ACC_NATIVE ) != 0 )
- throw new NativeMethodFound( entryName, name, sig );
+ @Override
+ public MethodVisitor visitMethod( int flags, String name, String desc, String sig,
+ String[] exc )
+ {
+ if ( ( flags & Opcodes.ACC_NATIVE ) != 0 )
+ throw new NativeMethodFound( entryName, name, sig );
- return super.visitMethod( flags, name, desc, sig, exc );
- }
- }, ClassReader.SKIP_CODE );
+ return super.visitMethod( flags, name, desc, sig, exc );
+ }
+ }, ClassReader.SKIP_CODE );
+ }
}
return false;
}
catch ( NativeMethodFound e )
{
- LOGGER.debug( "Native method {}({}) found in {}: {}", e.methodName, e.methodSignature, jar, e.className );
+ LOGGER.debug( "Native method {}({}) found in {}: {}", e.methodName, e.methodSignature, jarPath,
+ e.className );
return true;
}
catch ( IOException e )
{
- LOGGER.debug( "I/O exception caught when trying to determine whether JAR uses native code: {}", jar, e );
+ LOGGER.debug( "I/O exception caught when trying to determine whether JAR uses native code: {}", jarPath,
+ e );
return false;
}
catch ( RuntimeException e )
@@ -178,29 +189,13 @@ public final class JarUtils
}
}
- /**
- * OpenJDK has a sanity check that prevents adding duplicate entries to ZIP streams. The problem is that some of
- * JARs we try to inject manifests to (especially the ones created by Gradle) already contain duplicate entries, so
- * manifest injection would always fail for them with "ZipException: duplicate entry".
- * <p>
- * This function tries to work around this OpenJDK sanity check, effectively allowing creating ZIP files with
- * duplicated entries. It should be called on particular ZIP output stream before adding each duplicate entry.
- *
- * @param zipOutputStream ZIP stream to hack
- */
- private static void openJdkAvoidDuplicateEntryHack( ZipOutputStream zipOutputStream )
+ private static void updateManifest( Artifact artifact, Manifest mf )
{
- try
- {
- Field namesField = ZipOutputStream.class.getDeclaredField( "names" );
- namesField.setAccessible( true );
- Collection<?> names = (Collection<?>) namesField.get( zipOutputStream );
- names.clear();
- }
- catch ( ReflectiveOperationException e )
- {
- // This hack relies on OpenJDK internals and therefore is not guaranteed to work. Ignore failures.
- }
+ putAttribute( mf, Artifact.MF_KEY_GROUPID, artifact.getGroupId(), null );
+ putAttribute( mf, Artifact.MF_KEY_ARTIFACTID, artifact.getArtifactId(), null );
+ putAttribute( mf, Artifact.MF_KEY_EXTENSION, artifact.getExtension(), Artifact.DEFAULT_EXTENSION );
+ putAttribute( mf, Artifact.MF_KEY_CLASSIFIER, artifact.getClassifier(), "" );
+ putAttribute( mf, Artifact.MF_KEY_VERSION, artifact.getVersion(), Artifact.DEFAULT_VERSION );
}
/**
@@ -213,65 +208,38 @@ public final class JarUtils
public static void injectManifest( Path targetJar, Artifact artifact )
{
LOGGER.trace( "Trying to inject manifest to {}", artifact );
- Manifest mf = null;
try
{
- try ( JarInputStream jis = new JarInputStream( Files.newInputStream( targetJar ) ) )
+ try ( ZipFile jar = new ZipFile( targetJar.toFile() ) )
{
- mf = jis.getManifest();
- if ( mf == null )
+ ZipArchiveEntry manifestEntry = jar.getEntry( MANIFEST_PATH );
+ if ( manifestEntry != null )
{
- // getManifest sometimes doesn't find the manifest, try finding it as plain entry
- ZipEntry ent;
- while ( ( ent = jis.getNextEntry() ) != null )
+ Manifest mf = new Manifest( jar.getInputStream( manifestEntry ) );
+ updateManifest( artifact, mf );
+ Files.delete( targetJar );
+ try ( ZipArchiveOutputStream os = new ZipArchiveOutputStream( targetJar.toFile() ) )
{
- if ( ent.getName().equalsIgnoreCase( "META-INF/MANIFEST.MF" ) )
- {
- mf = new Manifest( jis );
- break;
- }
+ // write manifest
+ ZipArchiveEntry newManifestEntry = new ZipArchiveEntry( MANIFEST_PATH );
+ os.putArchiveEntry( newManifestEntry );
+ mf.write( os );
+ os.closeArchiveEntry();
+ // copy the rest of content
+ jar.copyRawEntries( os, entry -> !entry.equals( manifestEntry ) );
}
- }
- }
-
- if ( mf == null )
- {
- LOGGER.trace( "Manifest injection skipped: no pre-existing manifest found to update" );
- return;
- }
-
- putAttribute( mf, Artifact.MF_KEY_GROUPID, artifact.getGroupId(), null );
- putAttribute( mf, Artifact.MF_KEY_ARTIFACTID, artifact.getArtifactId(), null );
- putAttribute( mf, Artifact.MF_KEY_EXTENSION, artifact.getExtension(), Artifact.DEFAULT_EXTENSION );
- putAttribute( mf, Artifact.MF_KEY_CLASSIFIER, artifact.getClassifier(), "" );
- putAttribute( mf, Artifact.MF_KEY_VERSION, artifact.getVersion(), Artifact.DEFAULT_VERSION );
-
- try ( JarInputStream jis = new JarInputStream( Files.newInputStream( targetJar ) ) )
- {
-
- targetJar = targetJar.toRealPath();
- Files.delete( targetJar );
- try ( JarOutputStream jos = new JarOutputStream( Files.newOutputStream( targetJar ), mf ) )
- {
- byte[] buf = new byte[512];
- JarEntry entry;
- while ( ( entry = jis.getNextJarEntry() ) != null )
+ catch ( IOException e )
{
- openJdkAvoidDuplicateEntryHack( jos );
- jos.putNextEntry( entry );
-
- int sz;
- while ( ( sz = jis.read( buf ) ) > 0 )
- jos.write( buf, 0, sz );
+ // Re-throw exceptions that occur when processing JAR file after reading header and manifest.
+ throw new RuntimeException( e );
}
+ LOGGER.trace( "Manifest injected successfully" );
}
- catch ( IOException e )
+ else
{
- // Re-throw exceptions that occur when processing JAR file after reading header and manifest.
- throw new RuntimeException( e );
+ LOGGER.trace( "Manifest injection skipped: no pre-existing manifest found to update" );
+ return;
}
-
- LOGGER.trace( "Manifest injected successfully" );
}
}
catch ( IOException e )
diff --git a/xmvn-tools/xmvn-install/src/test/java/org/fedoraproject/xmvn/tools/install/impl/JarUtilsTest.java b/xmvn-tools/xmvn-install/src/test/java/org/fedoraproject/xmvn/tools/install/impl/JarUtilsTest.java
index 3ec10cfa..98945a64 100644
--- a/xmvn-tools/xmvn-install/src/test/java/org/fedoraproject/xmvn/tools/install/impl/JarUtilsTest.java
+++ b/xmvn-tools/xmvn-install/src/test/java/org/fedoraproject/xmvn/tools/install/impl/JarUtilsTest.java
@@ -19,11 +19,13 @@ import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
+import static org.junit.Assume.assumeTrue;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.StandardCopyOption;
+import java.nio.file.attribute.PosixFilePermission;
import java.util.Arrays;
import java.util.jar.Attributes;
import java.util.jar.JarInputStream;
@@ -116,6 +118,38 @@ public class JarUtilsTest
}
}
+ /**
+ * Regression test for a jar which contains an entry that can recompress with a different size, which caused a
+ * mismatch in sizes.
+ *
+ * @throws Exception
+ */
+ @Test
+ public void testManifestInjectionRecompressionCausesSizeMismatch()
+ throws Exception
+ {
+ Path testResource = Paths.get( "src/test/resources/recompression-size.jar" );
+ Path testJar = workDir.resolve( "manifest.jar" );
+ Files.copy( testResource, testJar, StandardCopyOption.COPY_ATTRIBUTES, StandardCopyOption.REPLACE_EXISTING );
+
+ Artifact artifact =
+ new DefaultArtifact( "org.eclipse.osgi", "osgi.compatibility.state", "1.1.0.v20180409-1212" );
+ JarUtils.injectManifest( testJar, artifact );
+
+ try ( JarInputStream jis = new JarInputStream( Files.newInputStream( testJar ) ) )
+ {
+ Manifest mf = jis.getManifest();
+ assertNotNull( mf );
+
+ Attributes attr = mf.getMainAttributes();
+ assertNotNull( attr );
+
+ assertEquals( "org.eclipse.osgi", attr.getValue( "JavaPackages-GroupId" ) );
+ assertEquals( "osgi.compatibility.state", attr.getValue( "JavaPackages-ArtifactId" ) );
+ assertEquals( "1.1.0.v20180409-1212", attr.getValue( "JavaPackages-Version" ) );
+ }
+ }
+
/**
* Test JAR if manifest injection works as expected when some artifact fields have default values.
*
@@ -148,6 +182,27 @@ public class JarUtilsTest
}
}
+ /**
+ * Test JAR if manifest injection preserves sane file perms.
+ *
+ * @throws Exception
+ */
+ @Test
+ public void testManifestInjectionSanePermissions()
+ throws Exception
+ {
+ Path testResource = Paths.get( "src/test/resources/example.jar" );
+ Path testJar = workDir.resolve( "manifest.jar" );
+ Files.copy( testResource, testJar, StandardCopyOption.COPY_ATTRIBUTES, StandardCopyOption.REPLACE_EXISTING );
+
+ assumeTrue( "sane umask", Files.getPosixFilePermissions( testJar ).contains( PosixFilePermission.OTHERS_READ ) );
+
+ Artifact artifact = new DefaultArtifact( "org.apache.maven", "maven-model", "xsd", "model", "2.2.1" );
+ JarUtils.injectManifest( testJar, artifact );
+
+ assertTrue( Files.getPosixFilePermissions( testJar ).contains( PosixFilePermission.OTHERS_READ ) );
+ }
+
/**
* Test if native code detection works as expected.
*
diff --git a/xmvn-tools/xmvn-install/src/test/resources/recompression-size.jar b/xmvn-tools/xmvn-install/src/test/resources/recompression-size.jar
new file mode 100644
index 00000000..976481ea
--- /dev/null
+++ b/xmvn-tools/xmvn-install/src/test/resources/recompression-size.jar
@@ -0,0 +1,145 @@
+PK
+ûL“L²îMETA-INF/MANIFEST.MFUT ÉGØZ;HØZux ³H³HManifest-Version: 1.0
+
+PK®L“Lõ^]±¦» dir/fileUT 7GØZ8GØZux ³H³HíÒáÃ0†áÿ½ËÓ«èÉÕ' ùQJ %äa6m¾çu®,%<25>8£=úÓx}¼yýðû“?ûí<C3BB>WÛ³ TxPáíÔPáA…·TxP{@…ÔPáAíTxP{@…µTxPáAíÔPj¨= ÂƒÚê„·ÔPPáíÞP{@A…·Tx{@íÞPPáA…·Tx{@A…ÞPPáíTxáAA…µTxP{„ÔPáAíµTxP{@…µÔPáAíÔP{@…µTx{@íÔPPáíµTx{@A…·Ô…<C394>
+o(¨ðö€º0PPáíÔáAA…·TxP{„ÞPPáAíTxP{@…µGxPPáAíÔP*<¨= ÂƒÚêÂ@…µTxP{@]¨ð ö€‚
+o¨ ÔPPáíua ÂƒÚ
+*¼= . Tx{@A…·TxPáíÔPáA…·TxP{@…ÞPPáAíTxP{@…µTxPáAíÔPj¨= ÂƒÚê„·ÔPáAíÞP{@A…·Tx{@íÞPPáíµTx{@A…ÞPPáíTxáAA…µTxP{„ÔPáAíTxP{@…µÔPáAíÔP{@…µTx{@íÔPPáíµTxP{@A…·Ô…<C394>
+o(¨ðö€º0PPáíÞP
+*¼=  ÂƒÚ#<(¨ðö€‚
+j<>ð  ÂƒÚ*<¨=ƒ‚
+j¨ð ö€
+*<¨= ÂƒÚêÂ@…µTxP{@]¨ð ö€
+j¨ ÔPPáíua ÂƒÚ
+*¼= . Tx{@A…·TxPáíÞPPáA…·TxP{@…ÞPPáAíTxP{@…µTxPáAíÔPáAíµTxP{@]˜ðö€Ú*<¨=  ÂÛj¨ð ö€‚
+o¨=  ÂÛ
+*¼= ö€‚
+o(¨ð ÂÛ
+*¼=  Âƒ
+/<(¨ðö€‚
+j<>ð  ÂƒÚ*<¨=ƒ‚
+j¨ð ö
+*<¨= ÂƒÚj¨ð ö€
+j¨= ÂƒÚ
+*¼= ö€
+j(¨ðö€º0PáAíÞP
+*¼=  ÂÛêÂ@A…·TxP{„ÞPPáAíTx{@A…µGxPPáAíÔPáA…µTxP{@…ÔPáAíua ÂƒÚ*<¨= . TxP{@A…·Ô…<C394>
+j(¨ðö€º0P{@íÞPPáA…·Tx{@A…ÞPPáAíTx{@A…µTxPáíÔPáA…µTxP{@…µÔPáAíÔP{@…µTx{@íÔPPáíµTx{@A…·ÔPPáíÞP{@A…·TxPá…ÞPPáAíTx{@A…µGxPPáAíÔáAA…µTxP{@íÔPáAíµTxP{@…µÔPáAíÞP*<¨=  ÂÛêÂ@A…·Tx{@](¨ðö€‚
+o¨ ÞPPáAíTx{@A…µGxPPáíÔPáA…µTxP{@…ÔPáAíua ÂƒÚ*<¨= . TxP{@…µÔ…<C394>
+j(¨ðö€º0P{@íÞPPáA…·Tx{@A…ÞPPáíTx{@A…µTxPáíÔPáA…·TxP{@…µÔPáAíÔP{@…µTx{@íÔPPáíµTxP{@A…·ÔPPáíÞP{@A…·Tx{@](¨ðö€‚
+j<>ð  ÂÛ
+*<¨=ƒ‚
+j¨ð ö
+*<¨= ÂƒÚ#<(¨ð ö€
+j¨= ÂƒÚ*<¨= ö€
+j(¨ðö€º0PáAíÞP*<¨=  ÂÛêÂ@A…·Tx{@](¨ðö€‚
+o¨ ÞPPáAíTx{@A…µTxPáAíÔPáA…µTxP{@…ÔPáAíua ÂƒÚ*<¨= . TxP{@…µÔ…<C394>Új(¨ðö€‚
+o¨=  ÂÛ
+*<¨ðö€‚
+o(¨ð ÂÛ
+*¼=  Âƒ
+o(¨ð ö€
+*¼=  ÂƒÚ*<¨= ö€
+j¨ð ö€Ú*<¨= ÂƒÚj¨ð ö€‚
+o¨= ÂƒÚ
+*¼= ö€
+j(¨ðö€Ú
+*¼=  ÂÛêÂ@A…·TxP{„ÞPPáAíTx{@A…µGxPPáAíÔáAA…µTxP{@íÔPáAíµTxP{@…µÔ…<C394>
+j(¨ðö€º0PáAíÞP*<¨=  ÂÛêÂ@A…·Tx{@](¨ðö€‚
+j<>ð  ÂÛ
+*<¨= Âƒ
+o(¨ð ö€
+*<¨= ÂƒÚ*<¨ð ö€
+j¨ð ÂƒÚ*<¨= . TxP{@…µÔ…<C394>Új(¨ðö€‚
+o¨=  ÂÛ
+*¼= ö€‚
+o(¨ð ÂÛ
+*¼=  Âƒ
+o(¨ð ö€
+*¼=  ÂƒÚ*<¨=ƒ‚
+j¨ð ö€Ú*<¨= ÂƒÚj¨ð ö€
+j¨= ÂƒÚ
+*¼= ö€
+j(¨ðö€Ú
+*¼=  ÂÛêÂ@A…·Tx{@](¨ðö€‚
+j<>ð  ÂÛ
+*<¨=ƒ‚
+o(¨ð ö
+*<¨= ÂƒÚ#<(¨ð ö€
+j¨= ÂƒÚ*<¨= . TxP{@…µÔ…<C394>
+j(¨ðö€º0PáAíÞP
+*¼=  ÂÛêÂ@A…·Tx{@](¨ðö€‚
+j¨ð ÂÛ
+*<¨= Âƒ
+o(¨ð ö€
+*<¨= ÂƒÚ*<¨ð ö€
+j¨ ÔPáAíua ö€Ú*<¨=  ÂÛj(¨ðö€‚
+o¨=  ÂÛ
+*<¨ðö€‚
+o(¨ð ÂÛ
+*¼=  Âƒ
+o(¨ð ö€
+j<>ð  ÂƒÚ*<¨=ƒ‚
+j¨ð ö€Ú*<¨= ÂƒÚj¨ð ö€‚
+o¨= ÂƒÚ
+*¼= ö€
+j(¨ðö€º0PPáíÞP
+*¼=  ÂÛêÂ@A…·TxP{„ÞPPáAíTxP{@…µGxPPáAíÔáAA…µTxP{@]¨ð ö€
+j¨ ÔPPáíua ÂƒÚ
+*¼= . TxP{@A…·Ô…<C394>
+o(¨ðö€º0PPáíÞPPáA…·TxP{@…ÞPPáAíTxP{@…µTxPáAíÔPáA…µTxP{@]¨= ö€
+j(¨ðö€Ú
+*¼=  ÂÛj(¨ðö€‚
+o¨=  ÂÛ
+*<¨ðö€‚
+o(¨ð ÂÛ
+*¼=  ÂƒÚ#<(¨ð ö€
+j<>ð  ÂƒÚ*<¨= ö€
+j¨ð ö€Ú*<¨= ÂƒÚj¨ð ö€‚
+o¨= ÂƒÚ
+*¼= . TxP{@A…·Ô…<C394>
+o(¨ðö€º0PPáíÔáAA…·TxP{„ÞPPáAíTxP{@…µGxPPáAíÔP*<¨= ÂƒÚêÂ@…µTxP{@]¨ð ö€‚
+o¨ ÔPPáíua ÂƒÚ
+*¼= . Tx{@A…·TxPáíÔPáA…·TxP{@…ÞPPáAíTxP{@…µTxPáAíÔPáAíµTxP{@A…·ÔPáAíÞP{@A…·Tx{@íÞPPáíµTx{@A…ÞPPáíÔáAA…µTxP{„ÔPáAíTxP{@…µÔPáAíÔP{@…µTxP{@íÔPPáíua ÂƒÚ
+*¼= . Tx{@A…·Ô…<C394>
+o(¨ðö€º0PPáíÔáAA…·TxP{„ÔPáAíTxP{@…µTxPáAíÔP*<¨= ÂƒÚêÂ@…µTxP{@]¨ð ö€‚
+o¨ ÔPPáíua  ÂÛ
+*¼=  Âƒ
+o(¨ðö€‚
+*¼=  ÂƒÚ*<¨ðö€‚
+j¨ð ÂÛ
+*<¨= Âƒ
+j¨ð ö€
+j¨= ÂƒÚ
+*¼= ö€
+j(¨ðö€Ú*<¨=  ÂÛj(¨ðö€‚
+o¨=  ÂÛ
+*<¨ðö€‚
+o(¨ð ö
+*¼=  ÂƒÚ#<(¨ð ö€
+j<>ð  ÂƒÚ*<¨=ƒ‚
+j¨ð ö€Ú*<¨= ÂƒÚj¨ð ö€‚
+o¨ ÔPPáíua ÂƒÚ
+*¼= . Tx{@A…·Ô…<C394>
+o(¨ð ö
+*¼=  ÂƒÚ#<(¨ðö€‚
+j<>ð  ÂƒÚ*<¨= Âƒ
+j¨ð ö€
+*<¨= ÂƒÚêÂ@…µTxP{@]¨ð ö€‚
+o¨ ÔPPáíua ö€Ú
+*¼=  Âƒ
+o(¨ðö€‚
+*¼=  ÂÛ
+*<¨ðö€‚
+j¨ð ÂÛ
+*<¨= Âƒ
+j¨ð ö€
+j¨= ÂƒÚ*<¨= ö€
+j(¨ðö€Ú*<¨=  ÂÛj(¨ðö€‚
+o¨=  ÂÛ
+*¼= ö€‚
+o(¨ð ö
+*¼=  ÂƒÚ#<(¨ðö€‚
+j<>ð  ÂƒÚ*<¨=ƒ‚
+j¨ð ö€Ú*<¨= ÂƒÚj¨ð öÜOPK
+ûL“L²î´<>META-INF/MANIFEST.MFUTÉGØZux ³H³HPK®L“Lõ^]±¦» ´<>gdir/fileUT7GØZux ³H³HPK¨Z
\ No newline at end of file
diff --git a/xmvn.spec b/xmvn.spec
index 8764b63d..0775d4a2 100644
--- a/xmvn.spec
+++ b/xmvn.spec
@@ -196,6 +196,7 @@ artifact repository.
%package install
Summary: XMvn Install
+Requires: apache-commons-compress
%description install
This package provides XMvn Install, which is a command-line interface
@@ -284,7 +285,7 @@ done
# helper scripts
%jpackage_script org.fedoraproject.xmvn.tools.bisect.BisectCli "" "-Dxmvn.home=%{_datadir}/%{name}" xmvn/xmvn-bisect:beust-jcommander:maven-invoker:plexus/utils xmvn-bisect
-%jpackage_script org.fedoraproject.xmvn.tools.install.cli.InstallerCli "" "" xmvn/xmvn-install:xmvn/xmvn-api:xmvn/xmvn-core:beust-jcommander:slf4j/api:slf4j/simple:objectweb-asm/asm xmvn-install
+%jpackage_script org.fedoraproject.xmvn.tools.install.cli.InstallerCli "" "" xmvn/xmvn-install:xmvn/xmvn-api:xmvn/xmvn-core:beust-jcommander:slf4j/api:slf4j/simple:objectweb-asm/asm:objenesis/objenesis:commons-compress xmvn-install
%jpackage_script org.fedoraproject.xmvn.tools.resolve.ResolverCli "" "" xmvn/xmvn-resolve:xmvn/xmvn-api:xmvn/xmvn-core:beust-jcommander xmvn-resolve
%jpackage_script org.fedoraproject.xmvn.tools.subst.SubstCli "" "" xmvn/xmvn-subst:xmvn/xmvn-api:xmvn/xmvn-core:beust-jcommander xmvn-subst
--
2.14.3

View File

@ -1,311 +0,0 @@
From c35be2b2b90741aa4f7c260fa4954cd5d3c2e6a8 Mon Sep 17 00:00:00 2001
From: Mikolaj Izdebski <mizdebsk@redhat.com>
Date: Wed, 17 Apr 2019 16:12:22 +0200
Subject: [PATCH] [test] Fix XML namespace in installer test resources
---
xmvn-tools/xmvn-install/src/test/resources/alias.xml | 2 +-
xmvn-tools/xmvn-install/src/test/resources/compat.xml | 2 +-
xmvn-tools/xmvn-install/src/test/resources/metadata-uuid.xml | 2 +-
xmvn-tools/xmvn-install/src/test/resources/namespace-dep.xml | 2 +-
xmvn-tools/xmvn-install/src/test/resources/namespace.xml | 2 +-
xmvn-tools/xmvn-install/src/test/resources/no-aid-dep.xml | 2 +-
xmvn-tools/xmvn-install/src/test/resources/no-aid-excl.xml | 2 +-
xmvn-tools/xmvn-install/src/test/resources/no-aid.xml | 2 +-
xmvn-tools/xmvn-install/src/test/resources/no-file.xml | 2 +-
xmvn-tools/xmvn-install/src/test/resources/no-gid-dep.xml | 2 +-
xmvn-tools/xmvn-install/src/test/resources/no-gid-excl.xml | 2 +-
xmvn-tools/xmvn-install/src/test/resources/no-gid.xml | 2 +-
xmvn-tools/xmvn-install/src/test/resources/no-version-dep.xml | 2 +-
xmvn-tools/xmvn-install/src/test/resources/no-version.xml | 2 +-
xmvn-tools/xmvn-install/src/test/resources/nonexistent-file.xml | 2 +-
xmvn-tools/xmvn-install/src/test/resources/nonreadable-file.xml | 2 +-
xmvn-tools/xmvn-install/src/test/resources/nonregular-file.xml | 2 +-
xmvn-tools/xmvn-install/src/test/resources/resolved-version.xml | 2 +-
xmvn-tools/xmvn-install/src/test/resources/skipped.xml | 2 +-
xmvn-tools/xmvn-install/src/test/resources/test-pkg-main.xml | 2 +-
.../xmvn-install/src/test/resources/test-pkg-resolved.xml | 2 +-
xmvn-tools/xmvn-install/src/test/resources/test-pkg-sub.xml | 2 +-
xmvn-tools/xmvn-install/src/test/resources/test-pkg.xml | 2 +-
xmvn-tools/xmvn-install/src/test/resources/uuid.xml | 2 +-
xmvn-tools/xmvn-install/src/test/resources/valid.xml | 2 +-
27 files changed, 27 insertions(+), 27 deletions(-)
diff --git a/xmvn-tools/xmvn-install/src/test/resources/alias.xml b/xmvn-tools/xmvn-install/src/test/resources/alias.xml
index 6e33a2a0..a86d73e9 100644
--- a/xmvn-tools/xmvn-install/src/test/resources/alias.xml
+++ b/xmvn-tools/xmvn-install/src/test/resources/alias.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<metadata xmlns="http://fedorahosted.org/xmvn/CONFIG/2.0.0">
+<metadata xmlns="http://fedorahosted.org/xmvn/METADATA/3.0.0">
<artifacts>
<artifact>
<groupId>com.example</groupId>
diff --git a/xmvn-tools/xmvn-install/src/test/resources/compat.xml b/xmvn-tools/xmvn-install/src/test/resources/compat.xml
index 1cd57df9..428177cb 100644
--- a/xmvn-tools/xmvn-install/src/test/resources/compat.xml
+++ b/xmvn-tools/xmvn-install/src/test/resources/compat.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<metadata xmlns="http://fedorahosted.org/xmvn/CONFIG/2.0.0">
+<metadata xmlns="http://fedorahosted.org/xmvn/METADATA/3.0.0">
<artifacts>
<artifact>
<groupId>com.example</groupId>
diff --git a/xmvn-tools/xmvn-install/src/test/resources/metadata-uuid.xml b/xmvn-tools/xmvn-install/src/test/resources/metadata-uuid.xml
index cb3fae4e..8f0898c6 100644
--- a/xmvn-tools/xmvn-install/src/test/resources/metadata-uuid.xml
+++ b/xmvn-tools/xmvn-install/src/test/resources/metadata-uuid.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<metadata xmlns="http://fedorahosted.org/xmvn/CONFIG/2.0.0">
+<metadata xmlns="http://fedorahosted.org/xmvn/METADATA/3.0.0">
<uuid>test-uuid</uuid>
<artifacts>
<artifact>
diff --git a/xmvn-tools/xmvn-install/src/test/resources/namespace-dep.xml b/xmvn-tools/xmvn-install/src/test/resources/namespace-dep.xml
index d80cf352..59e6767b 100644
--- a/xmvn-tools/xmvn-install/src/test/resources/namespace-dep.xml
+++ b/xmvn-tools/xmvn-install/src/test/resources/namespace-dep.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<metadata xmlns="http://fedorahosted.org/xmvn/CONFIG/2.0.0">
+<metadata xmlns="http://fedorahosted.org/xmvn/METADATA/3.0.0">
<artifacts>
<artifact>
<groupId>com.example</groupId>
diff --git a/xmvn-tools/xmvn-install/src/test/resources/namespace.xml b/xmvn-tools/xmvn-install/src/test/resources/namespace.xml
index 7b0b7ada..d4a62f68 100644
--- a/xmvn-tools/xmvn-install/src/test/resources/namespace.xml
+++ b/xmvn-tools/xmvn-install/src/test/resources/namespace.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<metadata xmlns="http://fedorahosted.org/xmvn/CONFIG/2.0.0">
+<metadata xmlns="http://fedorahosted.org/xmvn/METADATA/3.0.0">
<artifacts>
<artifact>
<groupId>com.example</groupId>
diff --git a/xmvn-tools/xmvn-install/src/test/resources/no-aid-dep.xml b/xmvn-tools/xmvn-install/src/test/resources/no-aid-dep.xml
index 36548f94..44ec6a89 100644
--- a/xmvn-tools/xmvn-install/src/test/resources/no-aid-dep.xml
+++ b/xmvn-tools/xmvn-install/src/test/resources/no-aid-dep.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<metadata xmlns="http://fedorahosted.org/xmvn/CONFIG/2.0.0">
+<metadata xmlns="http://fedorahosted.org/xmvn/METADATA/3.0.0">
<artifacts>
<artifact>
<groupId>com.example</groupId>
diff --git a/xmvn-tools/xmvn-install/src/test/resources/no-aid-excl.xml b/xmvn-tools/xmvn-install/src/test/resources/no-aid-excl.xml
index 5b1c77f1..9aec70fb 100644
--- a/xmvn-tools/xmvn-install/src/test/resources/no-aid-excl.xml
+++ b/xmvn-tools/xmvn-install/src/test/resources/no-aid-excl.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<metadata xmlns="http://fedorahosted.org/xmvn/CONFIG/2.0.0">
+<metadata xmlns="http://fedorahosted.org/xmvn/METADATA/3.0.0">
<artifacts>
<artifact>
<groupId>com.example</groupId>
diff --git a/xmvn-tools/xmvn-install/src/test/resources/no-aid.xml b/xmvn-tools/xmvn-install/src/test/resources/no-aid.xml
index b8b33a99..9dd5b97f 100644
--- a/xmvn-tools/xmvn-install/src/test/resources/no-aid.xml
+++ b/xmvn-tools/xmvn-install/src/test/resources/no-aid.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<metadata xmlns="http://fedorahosted.org/xmvn/CONFIG/2.0.0">
+<metadata xmlns="http://fedorahosted.org/xmvn/METADATA/3.0.0">
<artifacts>
<artifact>
<groupId>com.example</groupId>
diff --git a/xmvn-tools/xmvn-install/src/test/resources/no-file.xml b/xmvn-tools/xmvn-install/src/test/resources/no-file.xml
index 710567ee..a77dd6cc 100644
--- a/xmvn-tools/xmvn-install/src/test/resources/no-file.xml
+++ b/xmvn-tools/xmvn-install/src/test/resources/no-file.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<metadata xmlns="http://fedorahosted.org/xmvn/CONFIG/2.0.0">
+<metadata xmlns="http://fedorahosted.org/xmvn/METADATA/3.0.0">
<artifacts>
<artifact>
<groupId>com.example</groupId>
diff --git a/xmvn-tools/xmvn-install/src/test/resources/no-gid-dep.xml b/xmvn-tools/xmvn-install/src/test/resources/no-gid-dep.xml
index 0fdfec96..53b829ad 100644
--- a/xmvn-tools/xmvn-install/src/test/resources/no-gid-dep.xml
+++ b/xmvn-tools/xmvn-install/src/test/resources/no-gid-dep.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<metadata xmlns="http://fedorahosted.org/xmvn/CONFIG/2.0.0">
+<metadata xmlns="http://fedorahosted.org/xmvn/METADATA/3.0.0">
<artifacts>
<artifact>
<groupId>com.example</groupId>
diff --git a/xmvn-tools/xmvn-install/src/test/resources/no-gid-excl.xml b/xmvn-tools/xmvn-install/src/test/resources/no-gid-excl.xml
index 3c135126..c8e3e6c8 100644
--- a/xmvn-tools/xmvn-install/src/test/resources/no-gid-excl.xml
+++ b/xmvn-tools/xmvn-install/src/test/resources/no-gid-excl.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<metadata xmlns="http://fedorahosted.org/xmvn/CONFIG/2.0.0">
+<metadata xmlns="http://fedorahosted.org/xmvn/METADATA/3.0.0">
<artifacts>
<artifact>
<groupId>com.example</groupId>
diff --git a/xmvn-tools/xmvn-install/src/test/resources/no-gid.xml b/xmvn-tools/xmvn-install/src/test/resources/no-gid.xml
index 40386690..ba36e50e 100644
--- a/xmvn-tools/xmvn-install/src/test/resources/no-gid.xml
+++ b/xmvn-tools/xmvn-install/src/test/resources/no-gid.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<metadata xmlns="http://fedorahosted.org/xmvn/CONFIG/2.0.0">
+<metadata xmlns="http://fedorahosted.org/xmvn/METADATA/3.0.0">
<artifacts>
<artifact>
<groupId>com.example</groupId>
diff --git a/xmvn-tools/xmvn-install/src/test/resources/no-version-dep.xml b/xmvn-tools/xmvn-install/src/test/resources/no-version-dep.xml
index 08587264..49fe2922 100644
--- a/xmvn-tools/xmvn-install/src/test/resources/no-version-dep.xml
+++ b/xmvn-tools/xmvn-install/src/test/resources/no-version-dep.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<metadata xmlns="http://fedorahosted.org/xmvn/CONFIG/2.0.0">
+<metadata xmlns="http://fedorahosted.org/xmvn/METADATA/3.0.0">
<artifacts>
<artifact>
<groupId>com.example</groupId>
diff --git a/xmvn-tools/xmvn-install/src/test/resources/no-version.xml b/xmvn-tools/xmvn-install/src/test/resources/no-version.xml
index 480bc8e4..2a8322ab 100644
--- a/xmvn-tools/xmvn-install/src/test/resources/no-version.xml
+++ b/xmvn-tools/xmvn-install/src/test/resources/no-version.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<metadata xmlns="http://fedorahosted.org/xmvn/CONFIG/2.0.0">
+<metadata xmlns="http://fedorahosted.org/xmvn/METADATA/3.0.0">
<artifacts>
<artifact>
<groupId>com.example</groupId>
diff --git a/xmvn-tools/xmvn-install/src/test/resources/nonexistent-file.xml b/xmvn-tools/xmvn-install/src/test/resources/nonexistent-file.xml
index 385822b6..400bf234 100644
--- a/xmvn-tools/xmvn-install/src/test/resources/nonexistent-file.xml
+++ b/xmvn-tools/xmvn-install/src/test/resources/nonexistent-file.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<metadata xmlns="http://fedorahosted.org/xmvn/CONFIG/2.0.0">
+<metadata xmlns="http://fedorahosted.org/xmvn/METADATA/3.0.0">
<artifacts>
<artifact>
<groupId>com.example</groupId>
diff --git a/xmvn-tools/xmvn-install/src/test/resources/nonreadable-file.xml b/xmvn-tools/xmvn-install/src/test/resources/nonreadable-file.xml
index eb23aba7..cff22643 100644
--- a/xmvn-tools/xmvn-install/src/test/resources/nonreadable-file.xml
+++ b/xmvn-tools/xmvn-install/src/test/resources/nonreadable-file.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<metadata xmlns="http://fedorahosted.org/xmvn/CONFIG/2.0.0">
+<metadata xmlns="http://fedorahosted.org/xmvn/METADATA/3.0.0">
<artifacts>
<artifact>
<groupId>com.example</groupId>
diff --git a/xmvn-tools/xmvn-install/src/test/resources/nonregular-file.xml b/xmvn-tools/xmvn-install/src/test/resources/nonregular-file.xml
index 3cd66465..76c34bc9 100644
--- a/xmvn-tools/xmvn-install/src/test/resources/nonregular-file.xml
+++ b/xmvn-tools/xmvn-install/src/test/resources/nonregular-file.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<metadata xmlns="http://fedorahosted.org/xmvn/CONFIG/2.0.0">
+<metadata xmlns="http://fedorahosted.org/xmvn/METADATA/3.0.0">
<artifacts>
<artifact>
<groupId>com.example</groupId>
diff --git a/xmvn-tools/xmvn-install/src/test/resources/resolved-version.xml b/xmvn-tools/xmvn-install/src/test/resources/resolved-version.xml
index 9099ec28..9279d896 100644
--- a/xmvn-tools/xmvn-install/src/test/resources/resolved-version.xml
+++ b/xmvn-tools/xmvn-install/src/test/resources/resolved-version.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<metadata xmlns="http://fedorahosted.org/xmvn/CONFIG/2.0.0">
+<metadata xmlns="http://fedorahosted.org/xmvn/METADATA/3.0.0">
<artifacts>
<artifact>
<groupId>com.example</groupId>
diff --git a/xmvn-tools/xmvn-install/src/test/resources/skipped.xml b/xmvn-tools/xmvn-install/src/test/resources/skipped.xml
index 66bef3d8..b08836a1 100644
--- a/xmvn-tools/xmvn-install/src/test/resources/skipped.xml
+++ b/xmvn-tools/xmvn-install/src/test/resources/skipped.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<metadata xmlns="http://fedorahosted.org/xmvn/CONFIG/2.0.0">
+<metadata xmlns="http://fedorahosted.org/xmvn/METADATA/3.0.0">
<artifacts>
<artifact>
<groupId>com.example</groupId>
diff --git a/xmvn-tools/xmvn-install/src/test/resources/test-pkg-main.xml b/xmvn-tools/xmvn-install/src/test/resources/test-pkg-main.xml
index 0bcdce1d..0bd964fc 100644
--- a/xmvn-tools/xmvn-install/src/test/resources/test-pkg-main.xml
+++ b/xmvn-tools/xmvn-install/src/test/resources/test-pkg-main.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<metadata xmlns="http://fedorahosted.org/xmvn/CONFIG/2.0.0">
+<metadata xmlns="http://fedorahosted.org/xmvn/METADATA/3.0.0">
<uuid>1e5b4990-c4e3-42b4-9145-5b7783ab91a2</uuid>
<artifacts>
<artifact>
diff --git a/xmvn-tools/xmvn-install/src/test/resources/test-pkg-resolved.xml b/xmvn-tools/xmvn-install/src/test/resources/test-pkg-resolved.xml
index c9053bbd..9d3bbb67 100644
--- a/xmvn-tools/xmvn-install/src/test/resources/test-pkg-resolved.xml
+++ b/xmvn-tools/xmvn-install/src/test/resources/test-pkg-resolved.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<metadata xmlns="http://fedorahosted.org/xmvn/CONFIG/2.0.0">
+<metadata xmlns="http://fedorahosted.org/xmvn/METADATA/3.0.0">
<uuid>1e5b4990-c4e3-42b4-9145-5b7783ab91a2</uuid>
<artifacts>
<artifact>
diff --git a/xmvn-tools/xmvn-install/src/test/resources/test-pkg-sub.xml b/xmvn-tools/xmvn-install/src/test/resources/test-pkg-sub.xml
index 32e72e63..068f17f6 100644
--- a/xmvn-tools/xmvn-install/src/test/resources/test-pkg-sub.xml
+++ b/xmvn-tools/xmvn-install/src/test/resources/test-pkg-sub.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<metadata xmlns="http://fedorahosted.org/xmvn/CONFIG/2.0.0">
+<metadata xmlns="http://fedorahosted.org/xmvn/METADATA/3.0.0">
<uuid>1e5b4990-c4e3-42b4-9145-5b7783ab91a2</uuid>
<artifacts>
<artifact>
diff --git a/xmvn-tools/xmvn-install/src/test/resources/test-pkg.xml b/xmvn-tools/xmvn-install/src/test/resources/test-pkg.xml
index 3364d985..8b0d6223 100644
--- a/xmvn-tools/xmvn-install/src/test/resources/test-pkg.xml
+++ b/xmvn-tools/xmvn-install/src/test/resources/test-pkg.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<metadata xmlns="http://fedorahosted.org/xmvn/CONFIG/2.0.0">
+<metadata xmlns="http://fedorahosted.org/xmvn/METADATA/3.0.0">
<uuid>1e5b4990-c4e3-42b4-9145-5b7783ab91a2</uuid>
<artifacts>
<artifact>
diff --git a/xmvn-tools/xmvn-install/src/test/resources/uuid.xml b/xmvn-tools/xmvn-install/src/test/resources/uuid.xml
index 9bf862fa..b57b9584 100644
--- a/xmvn-tools/xmvn-install/src/test/resources/uuid.xml
+++ b/xmvn-tools/xmvn-install/src/test/resources/uuid.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<metadata xmlns="http://fedorahosted.org/xmvn/CONFIG/2.0.0">
+<metadata xmlns="http://fedorahosted.org/xmvn/METADATA/3.0.0">
<artifacts>
<artifact>
<groupId>com.example</groupId>
diff --git a/xmvn-tools/xmvn-install/src/test/resources/valid.xml b/xmvn-tools/xmvn-install/src/test/resources/valid.xml
index c9a2be8d..f2fa0c24 100644
--- a/xmvn-tools/xmvn-install/src/test/resources/valid.xml
+++ b/xmvn-tools/xmvn-install/src/test/resources/valid.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<metadata xmlns="http://fedorahosted.org/xmvn/CONFIG/2.0.0">
+<metadata xmlns="http://fedorahosted.org/xmvn/METADATA/3.0.0">
<artifacts>
<artifact>
<groupId>com.example</groupId>
--
2.20.1

View File

@ -1 +1 @@
SHA512 (xmvn-3.0.0.tar.xz) = 00cb77a9eaf3521c1aaaa615a8dba258c6993e3c308659213c5dbee953bf6bab1832654e94fc5eee471e8c6fbfe5ec10f7b8755d89a59c864fb5061ed251a1ef
SHA512 (xmvn-3.1.0.tar.xz) = 3351f00c81039cc2f856ac59562bcd6f6bcef44b86e9e1b31eec9828ee1ade227b36ef29e2a4981193e7c69e8cea07b7f9616b678ac150dfaccc688e465f7478

View File

@ -4,8 +4,8 @@
Name: xmvn
Version: 3.0.0
Release: 25%{?dist}
Version: 3.1.0
Release: 1%{?dist}
Summary: Local Extensions for Apache Maven
License: ASL 2.0
URL: https://fedora-java.github.io/xmvn/
@ -13,17 +13,6 @@ BuildArch: noarch
Source0: https://github.com/fedora-java/xmvn/releases/download/%{version}/xmvn-%{version}.tar.xz
Patch0: 0001-Fix-installer-plugin-loading.patch
Patch1: 0001-Port-to-Gradle-4.2.patch
Patch2: 0001-Port-to-Gradle-4.3.1.patch
Patch3: 0001-Support-setting-Xdoclint-none-in-m-javadoc-p-3.0.0.patch
Patch4: 0001-Fix-configuration-of-aliased-plugins.patch
Patch5: 0001-Don-t-use-JAXB-for-converting-bytes-to-hex-string.patch
Patch6: 0001-Use-apache-commons-compress-for-manifest-injection-a.patch
Patch7: 0001-test-Fix-XML-namespace-in-installer-test-resources.patch
Patch8: 0001-Port-to-Xmlunit-2.6.2.patch
Patch9: 0001-Update-maven-invoker-to-version-3.0.1.patch
BuildRequires: maven >= 3.5.0
BuildRequires: maven-local
BuildRequires: apache-commons-compress
@ -193,16 +182,6 @@ This package provides %{summary}.
%prep
%setup -q
%patch0 -p1
%patch1 -p1
%patch2 -p1
%patch3 -p1
%patch4 -p1
%patch5 -p1
%patch6 -p1
%patch7 -p1
%patch8 -p1
%patch9 -p1
# Bisect IT has no chances of working in local, offline mode, without
# network access - it needs to access remote repositories.
@ -343,6 +322,9 @@ cp -P ${maven_home}/bin/m2.conf %{buildroot}%{_datadir}/%{name}/bin/
%doc LICENSE NOTICE
%changelog
* Fri Jun 14 2019 Mikolaj Izdebski <mizdebsk@redhat.com> - 3.1.0-1
- Update to upstream version 3.1.0
* Thu May 30 2019 Marian Koncek <mkoncek@redhat.com> - 3.0.0-25
- Update maven-invoker to version 3.0.1