diff --git a/0001-Port-to-current-maven-dependency-tree.patch b/0001-Port-to-current-maven-dependency-tree.patch new file mode 100644 index 0000000..82e45b8 --- /dev/null +++ b/0001-Port-to-current-maven-dependency-tree.patch @@ -0,0 +1,255 @@ +From ac9f85cd5fdab1d51defa363b31235c45560c7f6 Mon Sep 17 00:00:00 2001 +From: Michael Simacek +Date: Fri, 12 Feb 2016 09:45:20 +0100 +Subject: [PATCH 1/4] Port to current maven-dependency-tree + +--- + pom.xml | 2 +- + .../apache/felix/bundleplugin/BundleAllPlugin.java | 54 ++++++++++++---------- + .../apache/felix/bundleplugin/BundlePlugin.java | 30 ++++++------ + 3 files changed, 46 insertions(+), 40 deletions(-) + +diff --git a/pom.xml b/pom.xml +index dfbf237..46b2ba6 100644 +--- a/pom.xml ++++ b/pom.xml +@@ -189,7 +189,7 @@ + + org.apache.maven.shared + maven-dependency-tree +- 2.1 ++ 3.0 + + + org.codehaus.plexus +diff --git a/src/main/java/org/apache/felix/bundleplugin/BundleAllPlugin.java b/src/main/java/org/apache/felix/bundleplugin/BundleAllPlugin.java +index f3b5509..6591923 100644 +--- a/src/main/java/org/apache/felix/bundleplugin/BundleAllPlugin.java ++++ b/src/main/java/org/apache/felix/bundleplugin/BundleAllPlugin.java +@@ -21,8 +21,10 @@ package org.apache.felix.bundleplugin; + + import java.io.File; + import java.io.FilenameFilter; ++import java.util.ArrayDeque; + import java.util.Arrays; + import java.util.Collection; ++import java.util.Deque; + import java.util.HashSet; + import java.util.Iterator; + import java.util.LinkedHashMap; +@@ -38,7 +40,6 @@ import org.apache.maven.artifact.Artifact; + import org.apache.maven.artifact.factory.ArtifactFactory; + import org.apache.maven.artifact.metadata.ArtifactMetadataSource; + import org.apache.maven.artifact.repository.ArtifactRepository; +-import org.apache.maven.artifact.resolver.ArtifactCollector; + import org.apache.maven.artifact.resolver.ArtifactNotFoundException; + import org.apache.maven.artifact.resolver.ArtifactResolutionException; + import org.apache.maven.artifact.resolver.ArtifactResolver; +@@ -49,13 +50,14 @@ import org.apache.maven.plugins.annotations.LifecyclePhase; + import org.apache.maven.plugins.annotations.Mojo; + import org.apache.maven.plugins.annotations.Parameter; + import org.apache.maven.plugins.annotations.ResolutionScope; ++import org.apache.maven.project.DefaultProjectBuildingRequest; + import org.apache.maven.project.MavenProject; + import org.apache.maven.project.MavenProjectBuilder; + import org.apache.maven.project.ProjectBuildingException; ++import org.apache.maven.project.ProjectBuildingRequest; + import org.apache.maven.project.artifact.InvalidDependencyVersionException; +-import org.apache.maven.shared.dependency.tree.DependencyNode; +-import org.apache.maven.shared.dependency.tree.DependencyTreeBuilder; +-import org.apache.maven.shared.dependency.tree.DependencyTreeBuilderException; ++import org.apache.maven.shared.dependency.graph.DependencyGraphBuilderException; ++import org.apache.maven.shared.dependency.graph.DependencyNode; + import org.codehaus.plexus.util.FileUtils; + + import aQute.bnd.osgi.Analyzer; +@@ -92,24 +94,18 @@ public class BundleAllPlugin extends ManifestPlugin + */ + @Parameter( property = "wrapImportPackage", defaultValue = "*" ) + private String wrapImportPackage; +- + @Component + private ArtifactFactory m_factory; + + @Component + private ArtifactMetadataSource m_artifactMetadataSource; + +- @Component +- private ArtifactCollector m_collector; +- + /** + * Artifact resolver, needed to download jars. + */ + @Component + private ArtifactResolver m_artifactResolver; + +- @Component +- private DependencyTreeBuilder m_dependencyTreeBuilder; + + @Component + private MavenProjectBuilder m_mavenProjectBuilder; +@@ -180,17 +176,19 @@ public class BundleAllPlugin extends ManifestPlugin + + try + { +- dependencyTree = m_dependencyTreeBuilder.buildDependencyTree( project, localRepository, m_factory, +- m_artifactMetadataSource, null, m_collector ); ++ ProjectBuildingRequest request = new DefaultProjectBuildingRequest(); ++ request.setProject(getProject()); ++ request.setRepositorySession(session.getRepositorySession()); ++ dependencyTree = m_dependencyGraphBuilder.buildDependencyGraph(request, null); + } +- catch ( DependencyTreeBuilderException e ) ++ catch ( DependencyGraphBuilderException e ) + { + throw new MojoExecutionException( "Unable to build dependency tree", e ); + } + + BundleInfo bundleInfo = new BundleInfo(); + +- if ( !dependencyTree.hasChildren() ) ++ if ( dependencyTree.getChildren().isEmpty()) + { + /* no need to traverse the tree */ + return bundleRoot( project, bundleInfo ); +@@ -198,20 +196,27 @@ public class BundleAllPlugin extends ManifestPlugin + + getLog().debug( "Will bundle the following dependency tree" + LS + dependencyTree ); + +- for ( Iterator it = dependencyTree.inverseIterator(); it.hasNext(); ) ++ Deque stack = new ArrayDeque(); ++ stack.push(dependencyTree); ++ Set visited = new HashSet(); ++ while (!stack.isEmpty()) + { +- DependencyNode node = ( DependencyNode ) it.next(); +- if ( !it.hasNext() ) ++ DependencyNode node = stack.pop(); ++ if (visited.contains(node)) + { +- /* this is the root, current project */ +- break; ++ continue; + } +- +- if ( node.getState() != DependencyNode.INCLUDED ) ++ visited.add(node); ++ if (node.getChildren() != null) + { +- continue; ++ stack.addAll(node.getChildren()); + } + ++ //if ( node.getState() != DependencyNode.INCLUDED ) ++ //{ ++ // continue; ++ //} ++ + if ( Artifact.SCOPE_SYSTEM.equals( node.getArtifact().getScope() ) ) + { + getLog().debug( "Ignoring system scoped artifact " + node.getArtifact() ); +@@ -235,12 +240,11 @@ public class BundleAllPlugin extends ManifestPlugin + + node.getArtifact().setFile( artifact.getFile() ); + +- int nodeDepth = node.getDepth(); +- if ( nodeDepth > maxDepth ) ++ if ( stack.size() > maxDepth ) + { + /* node is deeper than we want */ + getLog().debug( +- "Ignoring " + node.getArtifact() + ", depth is " + nodeDepth + ", bigger than " + maxDepth ); ++ "Ignoring " + node.getArtifact() + ", depth is " + stack.size() + ", bigger than " + maxDepth ); + continue; + } + +diff --git a/src/main/java/org/apache/felix/bundleplugin/BundlePlugin.java b/src/main/java/org/apache/felix/bundleplugin/BundlePlugin.java +index 1dcf1c1..3e4384e 100644 +--- a/src/main/java/org/apache/felix/bundleplugin/BundlePlugin.java ++++ b/src/main/java/org/apache/felix/bundleplugin/BundlePlugin.java +@@ -72,15 +72,15 @@ import org.apache.maven.plugins.annotations.LifecyclePhase; + import org.apache.maven.plugins.annotations.Mojo; + import org.apache.maven.plugins.annotations.Parameter; + import org.apache.maven.plugins.annotations.ResolutionScope; ++import org.apache.maven.project.DefaultProjectBuildingRequest; + import org.apache.maven.project.MavenProject; + import org.apache.maven.project.MavenProjectBuilder; + import org.apache.maven.project.MavenProjectHelper; + import org.apache.maven.project.ProjectBuildingException; ++import org.apache.maven.project.ProjectBuildingRequest; + import org.apache.maven.shared.dependency.graph.DependencyGraphBuilder; + import org.apache.maven.shared.dependency.graph.DependencyGraphBuilderException; + import org.apache.maven.shared.dependency.graph.DependencyNode; +-import org.apache.maven.shared.dependency.tree.DependencyTreeBuilder; +-import org.apache.maven.shared.dependency.tree.DependencyTreeBuilderException; + import org.apache.maven.shared.osgi.DefaultMaven2OsgiConverter; + import org.apache.maven.shared.osgi.Maven2OsgiConverter; + import org.codehaus.plexus.archiver.UnArchiver; +@@ -225,9 +225,6 @@ public class BundlePlugin extends AbstractMojo + @Component + protected MavenProjectBuilder mavenProjectBuilder; + +- @Component +- private DependencyTreeBuilder dependencyTreeBuilder; +- + /** + * The dependency graph builder to use. + */ +@@ -347,7 +344,10 @@ public class BundlePlugin extends AbstractMojo + DependencyNode dependencyGraph; + try + { +- dependencyGraph = m_dependencyGraphBuilder.buildDependencyGraph( mavenProject, null ); ++ ProjectBuildingRequest request = new DefaultProjectBuildingRequest(); ++ request.setProject(mavenProject); ++ request.setRepositorySession(session.getRepositorySession()); ++ dependencyGraph = m_dependencyGraphBuilder.buildDependencyGraph( request, null ); + } + catch ( DependencyGraphBuilderException e ) + { +@@ -758,7 +758,7 @@ public class BundlePlugin extends AbstractMojo + // We need to find the direct dependencies that have been included in the uber JAR so that we can modify the + // POM accordingly. + private void createDependencyReducedPom( Set artifactsToRemove ) +- throws IOException, DependencyTreeBuilderException, ProjectBuildingException ++ throws IOException, DependencyGraphBuilderException, ProjectBuildingException + { + Model model = project.getOriginalModel(); + List dependencies = new ArrayList(); +@@ -901,24 +901,26 @@ public class BundlePlugin extends AbstractMojo + } + + public boolean updateExcludesInDeps( MavenProject project, List dependencies, List transitiveDeps ) +- throws DependencyTreeBuilderException ++ throws DependencyGraphBuilderException + { +- org.apache.maven.shared.dependency.tree.DependencyNode node = dependencyTreeBuilder.buildDependencyTree(project, localRepository, artifactFactory, +- artifactMetadataSource, null, +- artifactCollector); ++ ProjectBuildingRequest request = new DefaultProjectBuildingRequest(); ++ request.setProject(project); ++ request.setRepositorySession(session.getRepositorySession()); ++ DependencyNode node = dependencyGraphBuilder.buildDependencyGraph(request, null); + boolean modified = false; + Iterator it = node.getChildren().listIterator(); + while ( it.hasNext() ) + { +- org.apache.maven.shared.dependency.tree.DependencyNode n2 = (org.apache.maven.shared.dependency.tree.DependencyNode) it.next(); ++ DependencyNode n2 = (DependencyNode) it.next(); + Iterator it2 = n2.getChildren().listIterator(); + while ( it2.hasNext() ) + { +- org.apache.maven.shared.dependency.tree.DependencyNode n3 = (org.apache.maven.shared.dependency.tree.DependencyNode) it2.next(); ++ DependencyNode n3 = (DependencyNode) it2.next(); + //anything two levels deep that is marked "included" + //is stuff that was excluded by the original poms, make sure it + //remains excluded IF promoting transitives. +- if ( n3.getState() == org.apache.maven.shared.dependency.tree.DependencyNode.INCLUDED ) ++ //if ( n3.getState() == org.apache.maven.shared.dependency.tree.DependencyNode.INCLUDED ) ++ if (true) + { + //check if it really isn't in the list of original dependencies. Maven + //prior to 2.0.8 may grab versions from transients instead of +-- +2.14.3 + diff --git a/0002-Fix-for-new-maven-archiver.patch b/0002-Fix-for-new-maven-archiver.patch new file mode 100644 index 0000000..5fca0de --- /dev/null +++ b/0002-Fix-for-new-maven-archiver.patch @@ -0,0 +1,25 @@ +From 17a505c7c7924540f9636e3cd2700cc25a59447e Mon Sep 17 00:00:00 2001 +From: Mat Booth +Date: Thu, 14 Apr 2016 17:00:23 +0100 +Subject: [PATCH 2/4] Fix for new maven archiver + +--- + src/main/java/org/apache/felix/bundleplugin/BundlePlugin.java | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/main/java/org/apache/felix/bundleplugin/BundlePlugin.java b/src/main/java/org/apache/felix/bundleplugin/BundlePlugin.java +index 3e4384e..a42d6ef 100644 +--- a/src/main/java/org/apache/felix/bundleplugin/BundlePlugin.java ++++ b/src/main/java/org/apache/felix/bundleplugin/BundlePlugin.java +@@ -1101,7 +1101,7 @@ public class BundlePlugin extends AbstractMojo + * Grab customized manifest entries from the maven-jar-plugin configuration + */ + MavenArchiveConfiguration archiveConfig = JarPluginConfiguration.getArchiveConfiguration( currentProject ); +- String mavenManifestText = new MavenArchiver().getManifest( currentProject, archiveConfig ).toString(); ++ String mavenManifestText = new MavenArchiver().getManifest( m_mavenSession, currentProject, archiveConfig ).toString(); + addMavenDescriptor = addMavenDescriptor && archiveConfig.isAddMavenDescriptor(); + + Manifest mavenManifest = new Manifest(); +-- +2.14.3 + diff --git a/0003-Port-to-plexus-utils-3.0.24.patch b/0003-Port-to-plexus-utils-3.0.24.patch new file mode 100644 index 0000000..5600c14 --- /dev/null +++ b/0003-Port-to-plexus-utils-3.0.24.patch @@ -0,0 +1,46 @@ +From 5e514316b5cfbe769b21dc089e2631a9c302dd19 Mon Sep 17 00:00:00 2001 +From: Mikolaj Izdebski +Date: Thu, 12 May 2016 09:24:36 +0200 +Subject: [PATCH 3/4] Port to plexus-utils 3.0.24 + +--- + pom.xml | 2 +- + src/main/java/org/apache/felix/bundleplugin/BundlePlugin.java | 9 ++++++++- + 2 files changed, 9 insertions(+), 2 deletions(-) + +diff --git a/pom.xml b/pom.xml +index 46b2ba6..144f5ad 100644 +--- a/pom.xml ++++ b/pom.xml +@@ -194,7 +194,7 @@ + + org.codehaus.plexus + plexus-utils +- 3.0.10 ++ 3.0.24 + + + org.sonatype.plexus +diff --git a/src/main/java/org/apache/felix/bundleplugin/BundlePlugin.java b/src/main/java/org/apache/felix/bundleplugin/BundlePlugin.java +index a42d6ef..c858b6b 100644 +--- a/src/main/java/org/apache/felix/bundleplugin/BundlePlugin.java ++++ b/src/main/java/org/apache/felix/bundleplugin/BundlePlugin.java +@@ -1806,7 +1806,14 @@ public class BundlePlugin extends AbstractMojo + File filterFile = new File( i.next() ); + if ( filterFile.isFile() ) + { +- properties.putAll( PropertyUtils.loadProperties( filterFile ) ); ++ try ++ { ++ properties.putAll( PropertyUtils.loadProperties( filterFile ) ); ++ } ++ catch ( IOException exc ) ++ { ++ // Ignore ++ } + } + } + +-- +2.14.3 + diff --git a/0004-Use-Maven-3-APIs.patch b/0004-Use-Maven-3-APIs.patch new file mode 100644 index 0000000..cb1d30f --- /dev/null +++ b/0004-Use-Maven-3-APIs.patch @@ -0,0 +1,77 @@ +From e0f3d1cddc9ce70d8290aafbdaa36e3aa56e5e9d Mon Sep 17 00:00:00 2001 +From: Mikolaj Izdebski +Date: Wed, 12 Oct 2016 23:43:00 +0200 +Subject: [PATCH 4/4] Use Maven 3 APIs + +--- + pom.xml | 17 +++++++++++------ + .../org/apache/felix/bundleplugin/BundlePlugin.java | 4 ++-- + 2 files changed, 13 insertions(+), 8 deletions(-) + +diff --git a/pom.xml b/pom.xml +index 144f5ad..cf3d7dc 100644 +--- a/pom.xml ++++ b/pom.xml +@@ -179,7 +179,17 @@ + + org.apache.maven + maven-core +- 2.2.0 ++ 3.3.9 ++ ++ ++ org.apache.maven ++ maven-compat ++ 3.3.9 ++ ++ ++ org.apache.maven.reporting ++ maven-reporting-impl ++ 2.4 + + + org.apache.maven +@@ -223,11 +233,6 @@ + 1.1 + test + +- +- org.jdom +- jdom +- 1.1 +- + + + +diff --git a/src/main/java/org/apache/felix/bundleplugin/BundlePlugin.java b/src/main/java/org/apache/felix/bundleplugin/BundlePlugin.java +index c858b6b..5023569 100644 +--- a/src/main/java/org/apache/felix/bundleplugin/BundlePlugin.java ++++ b/src/main/java/org/apache/felix/bundleplugin/BundlePlugin.java +@@ -46,7 +46,6 @@ import java.util.TreeMap; + import java.util.jar.Attributes; + import java.util.jar.Manifest; + +-import org.apache.felix.bundleplugin.pom.PomWriter; + import org.apache.maven.archiver.ManifestSection; + import org.apache.maven.archiver.MavenArchiveConfiguration; + import org.apache.maven.archiver.MavenArchiver; +@@ -63,6 +62,7 @@ import org.apache.maven.model.Exclusion; + import org.apache.maven.model.License; + import org.apache.maven.model.Model; + import org.apache.maven.model.Resource; ++import org.apache.maven.model.io.xpp3.MavenXpp3Writer; + import org.apache.maven.plugin.AbstractMojo; + import org.apache.maven.plugin.MojoExecutionException; + import org.apache.maven.plugin.MojoFailureException; +@@ -864,7 +864,7 @@ public class BundlePlugin extends AbstractMojo + + try + { +- PomWriter.write( w, model, true ); ++ new MavenXpp3Writer().write( w, model ); + } + finally + { +-- +2.14.3 + diff --git a/maven-bundle-plugin-3.5.0-source-release.tar.gz b/maven-bundle-plugin-3.5.0-source-release.tar.gz new file mode 100644 index 0000000..238472f Binary files /dev/null and b/maven-bundle-plugin-3.5.0-source-release.tar.gz differ diff --git a/maven-plugin-bundle.spec b/maven-plugin-bundle.spec new file mode 100644 index 0000000..6042b8f --- /dev/null +++ b/maven-plugin-bundle.spec @@ -0,0 +1,59 @@ +Name: maven-plugin-bundle +Version: 3.5.0 +Release: 5 +Summary: Maven Bundle Plugin +License: ASL 2.0 +URL: http://felix.apache.org +Source0: http://repo2.maven.org/maven2/org/apache/felix/maven-bundle-plugin/%{version}/maven-bundle-plugin-%{version}-source-release.tar.gz + +Patch0001: 0001-Port-to-current-maven-dependency-tree.patch +Patch0002: 0002-Fix-for-new-maven-archiver.patch +Patch0003: 0003-Port-to-plexus-utils-3.0.24.patch +Patch0004: 0004-Use-Maven-3-APIs.patch + +BuildRequires: maven-local mvn(biz.aQute.bnd:biz.aQute.bndlib) mvn(org.apache.felix:felix-parent:pom:) +BuildRequires: mvn(org.apache.felix:org.apache.felix.utils) mvn(org.apache.maven:maven-archiver) +BuildRequires: mvn(org.apache.maven:maven-compat) mvn(org.apache.maven:maven-core) mvn(org.apache.maven.plugins:maven-plugin-plugin) +BuildRequires: mvn(org.apache.maven.plugin-tools:maven-plugin-annotations) mvn(org.apache.maven.shared:maven-dependency-tree) +BuildRequires: mvn(org.codehaus.plexus:plexus-utils) mvn(org.osgi:osgi.core) mvn(org.sonatype.plexus:plexus-build-api) +BuildRequires: mvn(net.sf.kxml:kxml2) mvn(org.apache.felix:org.apache.felix.bundlerepository) mvn(xpp3:xpp3) +BuildRequires: mvn(org.apache.maven.doxia:doxia-core) mvn(org.apache.maven.doxia:doxia-sink-api) +BuildRequires: mvn(org.apache.maven.doxia:doxia-site-renderer) mvn(org.apache.maven.reporting:maven-reporting-impl) +BuildArch: noarch + +%description +This Maven plugin is based on the BND tool from Peter Kriens. The way BND works is by treating your project as a big collection of +classes (e.g., project code, dependencies, and the class path). The way you create a bundle with BND is to tell it the content of +the bundle's JAR file as a subset of the available classes. This plugin wraps BND to make it work specifically with the Maven +project structure and to provide it with reasonable default behavior for Maven projects. + +%package help +Summary: Help package for maven-plugin-bundle +Provides: %{name}-javadoc = %{version}-%{release} +Obsoletes: %{name}-javadoc < %{version}-%{release} + +%description help +This package contains the API help documentation for maven-plugin-bundle. + +%prep +%autosetup -n maven-bundle-plugin-%{version} -p1 +find -name '*.jar' -exec rm -vf {} ';' +%pom_change_dep :org.osgi.core :osgi.core +rm -r src/main/java/org/apache/maven/shared/dependency src/main/java/org/apache/felix/bundleplugin/pom +%pom_add_dep xpp3:xpp3 +%pom_add_dep net.sf.kxml:kxml2 + +%build +%mvn_build -f + +%install +%mvn_install + +%files -f .mfiles +%license LICENSE NOTICE + +%files help -f .mfiles-javadoc + +%changelog +* Fri Dec 13 2019 lingsheng - 3.5.0-5 +- Package init