[maven2] Split artifact-manager and project into subpackages

Stanislav Ochotnicky sochotni at fedoraproject.org
Fri Jun 24 11:59:12 UTC 2011


commit ed111c4f32eb1255f3045aa6df324e712205e618
Author: Stanislav Ochotnicky <sochotnicky at redhat.com>
Date:   Fri Jun 24 12:10:16 2011 +0200

    Split artifact-manager and project into subpackages
    
    - Fix resolver to process poms and fragments from datadir
    - No more need to update_maven_depmap after this update

 maven2-2.2.1-classworlds.patch       |   43 ++++++++++
 maven2-2.2.1-jpp.patch               |   85 ++++++++++++++++----
 maven2-JPackageRepositoryLayout.java |   53 ++++++++-----
 maven2-MavenJPackageDepmap.java      |  143 +++++++++++++++++++++++++++------
 maven2.spec                          |   88 +++++++++++++++++++--
 5 files changed, 340 insertions(+), 72 deletions(-)
---
diff --git a/maven2-2.2.1-classworlds.patch b/maven2-2.2.1-classworlds.patch
new file mode 100644
index 0000000..33534b7
--- /dev/null
+++ b/maven2-2.2.1-classworlds.patch
@@ -0,0 +1,43 @@
+From 75c19c93fe901004940bd1715861267a8387e9c0 Mon Sep 17 00:00:00 2001
+From: Stanislav Ochotnicky <sochotnicky at redhat.com>
+Date: Fri, 24 Jun 2011 13:31:27 +0200
+Subject: [PATCH] Add plexus classworlds to pom
+
+---
+ maven-artifact-manager/pom.xml  |    4 ++++
+ maven-plugin-descriptor/pom.xml |    4 ++++
+ 2 files changed, 8 insertions(+), 0 deletions(-)
+
+diff --git a/maven-artifact-manager/pom.xml b/maven-artifact-manager/pom.xml
+index 81ab2d2..270470a 100644
+--- a/maven-artifact-manager/pom.xml
++++ b/maven-artifact-manager/pom.xml
+@@ -31,6 +31,10 @@ under the License.
+ 
+   <dependencies>
+     <dependency>
++      <groupId>org.codehaus.plexus</groupId>
++      <artifactId>plexus-classworlds</artifactId>
++    </dependency>
++    <dependency>
+       <groupId>org.apache.maven</groupId>
+       <artifactId>maven-repository-metadata</artifactId>
+     </dependency>
+diff --git a/maven-plugin-descriptor/pom.xml b/maven-plugin-descriptor/pom.xml
+index 4dbbaea..2645277 100644
+--- a/maven-plugin-descriptor/pom.xml
++++ b/maven-plugin-descriptor/pom.xml
+@@ -31,6 +31,10 @@ under the License.
+ 
+   <dependencies>
+     <dependency>
++      <groupId>org.codehaus.plexus</groupId>
++      <artifactId>plexus-classworlds</artifactId>
++    </dependency>
++    <dependency>
+       <groupId>org.apache.maven</groupId>
+       <artifactId>maven-plugin-api</artifactId>
+     </dependency>
+-- 
+1.7.5.4
+
diff --git a/maven2-2.2.1-jpp.patch b/maven2-2.2.1-jpp.patch
index 8b676f8..9a1485f 100644
--- a/maven2-2.2.1-jpp.patch
+++ b/maven2-2.2.1-jpp.patch
@@ -1,24 +1,24 @@
-From 1633026ab5ef24701ce8617db283079a185d6205 Mon Sep 17 00:00:00 2001
+From b92cdde39ab29334826a6eb9daf1c187c0ca67af Mon Sep 17 00:00:00 2001
 From: Stanislav Ochotnicky <sochotnicky at redhat.com>
 Date: Tue, 18 Jan 2011 10:40:00 +0100
 Subject: [PATCH 2/7] Maven JPP mode patch
 
 ---
- .../artifact/manager/DefaultWagonManager.java      |   31 ++++++++++++++++++++
+ .../artifact/manager/DefaultWagonManager.java      |   31 +++++++++
  .../metadata/DefaultRepositoryMetadataManager.java |    2 +-
  .../artifact/resolver/DefaultArtifactResolver.java |    3 +-
- maven-artifact/pom.xml                             |    5 +++
- .../repository/layout/DefaultRepositoryLayout.java |   17 ++++++++++-
- .../resolver/DefaultArtifactCollector.java         |    9 ++++-
- .../main/resources/META-INF/plexus/components.xml  |    6 ++++
- .../apache/maven/plugin/MavenPluginCollector.java  |   18 +++++++++++
- .../apache/maven/plugin/MavenPluginValidator.java  |    6 ++-
- .../java/org/apache/maven/plugin/PluginUtils.java  |    8 ++++-
- .../version/DefaultPluginVersionManager.java       |    8 ++++-
- .../project/validation/DefaultModelValidator.java  |   10 +++++-
- .../org/apache/maven/project/pom-4.0.0.xml         |   22 ++++++++++++++
- pom.xml                                            |    5 +++
- 14 files changed, 139 insertions(+), 11 deletions(-)
+ maven-artifact/pom.xml                             |    5 ++
+ .../repository/layout/DefaultRepositoryLayout.java |   17 +++++-
+ .../resolver/DefaultArtifactCollector.java         |    9 ++-
+ .../main/resources/META-INF/plexus/components.xml  |    6 ++
+ .../apache/maven/plugin/MavenPluginCollector.java  |   18 +++++
+ .../apache/maven/plugin/MavenPluginValidator.java  |    6 +-
+ .../java/org/apache/maven/plugin/PluginUtils.java  |    8 ++-
+ .../version/DefaultPluginVersionManager.java       |    8 ++-
+ .../project/validation/DefaultModelValidator.java  |   10 ++-
+ .../org/apache/maven/project/pom-4.0.0.xml         |   71 ++++++++++++++++++++
+ pom.xml                                            |    5 ++
+ 14 files changed, 188 insertions(+), 11 deletions(-)
 
 diff --git a/maven-artifact-manager/src/main/java/org/apache/maven/artifact/manager/DefaultWagonManager.java b/maven-artifact-manager/src/main/java/org/apache/maven/artifact/manager/DefaultWagonManager.java
 index 6318435..e4f8bb1 100644
@@ -336,10 +336,10 @@ index ede61f4..dba7bca 100644
              if ( Artifact.SCOPE_SYSTEM.equals( d.getScope() ) )
              {
 diff --git a/maven-project/src/main/resources/org/apache/maven/project/pom-4.0.0.xml b/maven-project/src/main/resources/org/apache/maven/project/pom-4.0.0.xml
-index 00e84c1..b0e4289 100644
+index 00e84c1..3a659aa 100644
 --- a/maven-project/src/main/resources/org/apache/maven/project/pom-4.0.0.xml
 +++ b/maven-project/src/main/resources/org/apache/maven/project/pom-4.0.0.xml
-@@ -32,6 +32,15 @@ under the License.
+@@ -32,6 +32,39 @@ under the License.
          <enabled>false</enabled>
        </snapshots>
      </repository>
@@ -352,10 +352,34 @@ index 00e84c1..b0e4289 100644
 +        <enabled>true</enabled>
 +      </snapshots>
 +    </repository>
++    <repository>
++      <id>__jpp_repo2__</id>
++      <name>JPackage Maven 3 Repository</name>
++      <layout>jpp</layout>
++      <url>file:///usr/share/maven/repository</url>
++      <snapshots>
++        <enabled>true</enabled>
++      </snapshots>
++      <releases>
++        <updatePolicy>never</updatePolicy>
++      </releases>
++    </repository>
++    <repository>
++      <id>__jpp_pom_repo__</id>
++      <name>JPackage POM Repository</name>
++      <layout>jpp</layout>
++      <url>file:///usr/share/maven-poms</url>
++      <snapshots>
++        <enabled>true</enabled>
++      </snapshots>
++      <releases>
++        <updatePolicy>never</updatePolicy>
++      </releases>
++    </repository>
    </repositories>
  
    <pluginRepositories>
-@@ -47,6 +56,19 @@ under the License.
+@@ -47,6 +80,44 @@ under the License.
          <updatePolicy>never</updatePolicy>
        </releases>
      </pluginRepository>
@@ -371,6 +395,31 @@ index 00e84c1..b0e4289 100644
 +        <updatePolicy>never</updatePolicy>
 +      </releases>
 +    </pluginRepository>
++    <pluginRepository>
++      <id>__jpp_repo2__</id>
++      <name>JPackage Maven 3 Repository</name>
++      <layout>jpp</layout>
++      <url>file:///usr/share/maven/repository</url>
++      <snapshots>
++        <enabled>true</enabled>
++      </snapshots>
++      <releases>
++        <updatePolicy>never</updatePolicy>
++      </releases>
++    </pluginRepository>
++    <pluginRepository>
++      <id>__jpp_pom_repo__</id>
++      <name>JPackage POM Repository</name>
++      <layout>jpp</layout>
++      <url>file:///usr/share/maven-poms</url>
++      <snapshots>
++        <enabled>true</enabled>
++      </snapshots>
++      <releases>
++        <updatePolicy>never</updatePolicy>
++      </releases>
++    </pluginRepository>
++
 +
    </pluginRepositories>
  
@@ -392,5 +441,5 @@ index e2fde29..3fe31f5 100644
      <!--start-->
    </dependencyManagement>
 -- 
-1.7.3.4
+1.7.5.4
 
diff --git a/maven2-JPackageRepositoryLayout.java b/maven2-JPackageRepositoryLayout.java
index b214312..530c5c3 100644
--- a/maven2-JPackageRepositoryLayout.java
+++ b/maven2-JPackageRepositoryLayout.java
@@ -22,6 +22,7 @@ import java.io.IOException;
 import java.util.Hashtable;
 import java.util.Iterator;
 import java.util.List;
+import java.io.File;
 
 import org.apache.maven.artifact.Artifact;
 import org.apache.maven.artifact.handler.ArtifactHandler;
@@ -34,8 +35,8 @@ import org.jdom.input.SAXBuilder;
 import org.xml.sax.InputSource;
 
 /**
- * Repository layout for jpackage based repositories. 
- * This class resolves items for jpp style repos (i.e things located in 
+ * Repository layout for jpackage based repositories.
+ * This class resolves items for jpp style repos (i.e things located in
  * /usr/share/java).
  */
 
@@ -60,7 +61,7 @@ public class JPackageRepositoryLayout
 		if (!groupId.startsWith("JPP")) {
 			MavenJPackageDepmap map = MavenJPackageDepmap.getInstance();
 			Hashtable newInfo = map.getMappedInfo(groupId, artifactId, version);
-			
+
 			groupId = (String) newInfo.get("group");
 			artifactId = (String) newInfo.get("artifact");
 		}
@@ -81,24 +82,34 @@ public class JPackageRepositoryLayout
 	}
 
 	private StringBuffer getPOMPath(String groupId, String artifactId) {
-
-		StringBuffer path = new StringBuffer();
-		String fName = groupId.replace(PATH_SEPARATOR, GROUP_SEPARATOR) + "-" + artifactId + ".pom";
-		path.append(System.getProperty("maven2.jpp.pom.path", "JPP/maven2/poms")).append("/").append(fName);
-		java.io.File f;
-
-		// NOTE: We are returning default_poms/ as the path for this pom 
-		// even though it may not exist there. This may cause an error, 
-		// but that is fine because if the pom is not there, there is 
-		// a serious problem anyways..
-		f = new java.io.File(System.getProperty("maven2.jpp.default.repo", "/usr/share/maven2/repository") + "/" + path.toString());
-		//System.err.println("Checking path " + f.getAbsolutePath() + " for the pom");
-		if (!f.exists()) {
-			path = new StringBuffer();
-			path.append(System.getProperty("maven2.jpp.default.pom.path", "JPP/maven2/default_poms")).append("/").append(fName);
-		}
-
-		return path;
+                String checkdir;
+                String fName = groupId.replace(PATH_SEPARATOR, GROUP_SEPARATOR) + "-"
+                        + artifactId + ".pom";
+                File f;
+
+                // let's try maven 2 repo first
+                checkdir = "JPP/maven2/poms/";
+                f = new File("/usr/share/maven2/repository/" + checkdir + fName);
+                if (f.exists()) {
+                    return new StringBuffer(checkdir + fName);
+                }
+
+                // now maven 3 specific repository
+                checkdir = "JPP/maven/poms/";
+                f = new File("/usr/share/maven/repository/" + checkdir + fName);
+                if (f.exists()) {
+                    return new StringBuffer(checkdir + fName);
+                }
+
+                // now try new path in /usr. This will be the only check after all
+                // packages are rebuilt
+                f = new File("/usr/share/maven-poms/" + fName);
+                if (f.exists()) {
+                    return new StringBuffer(fName);
+                }
+
+                // final fallback to m2 default poms
+                return new StringBuffer("JPP/maven2/default_poms/" + fName);
 	}
 
 	public String pathOfLocalRepositoryMetadata( ArtifactMetadata metadata, ArtifactRepository repository )
diff --git a/maven2-MavenJPackageDepmap.java b/maven2-MavenJPackageDepmap.java
index e32f919..3c78efc 100644
--- a/maven2-MavenJPackageDepmap.java
+++ b/maven2-MavenJPackageDepmap.java
@@ -7,6 +7,8 @@ import java.util.Hashtable;
 import java.util.Iterator;
 import java.util.List;
 import java.util.StringTokenizer;
+import java.io.InputStream;
+import java.io.File;
 
 import org.jdom.Document;
 import org.jdom.Element;
@@ -18,23 +20,66 @@ public class MavenJPackageDepmap {
 
 	private static  MavenJPackageDepmap instance;
 	private static Hashtable jppArtifactMap;
+        /**
+         *
+         * @author Stanislav Ochotnicky <sochotnicky at redhat.com>
+         *
+         *	  This class is used to wrap around fragments that are mapping
+         *	  artifacts to jar files in our _javadir. These used to be
+         *	  processed in a macro after every package installation. Fragments
+         *	  themselves are not proper xml files (they have no root element)
+         *	  so we have to fix them by wrapping them in one root element.
+         */
+        private static class WrapFragmentStream extends InputStream {
+            String startTag = "<deps>";
+            String endTag = "</deps>";
+            byte fragmentContent[];
+            int position;
+
+            WrapFragmentStream(String fragmentPath) throws IOException {
+                FileInputStream fin = new FileInputStream(fragmentPath);
+                int nBytes = fin.available();
+                byte tmpContent[] = new byte[nBytes];
+                fin.read(tmpContent);
+                fin.close();
+                byte startBytes[] = startTag.getBytes();
+                byte endBytes[] = endTag.getBytes();
+                fragmentContent = new byte[nBytes + startBytes.length
+         	       + endBytes.length];
+                System.arraycopy(startBytes, 0, fragmentContent, 0,
+         	       startBytes.length);
+                System.arraycopy(tmpContent, 0, fragmentContent, startBytes.length,
+         	       tmpContent.length);
+                System.arraycopy(endBytes, 0, fragmentContent, startBytes.length
+         	       + tmpContent.length, endBytes.length);
+                position = 0;
+            }
+
+            public int read() throws IOException {
+                if (position < fragmentContent.length) {
+         	   return fragmentContent[position++];
+                } else {
+         	   return -1;
+                }
+            }
+        }
 
 	private MavenJPackageDepmap() {
 		jppArtifactMap = new Hashtable();
 		buildJppArtifactMap();
 	}
-	
+
 	public static MavenJPackageDepmap getInstance() {
 		if (instance == null) {
 			instance = new MavenJPackageDepmap();
 		}
-		
+
 		return instance;
 	}
 
 	public Hashtable getMappedInfo(Hashtable mavenDep) {
-		return getMappedInfo((String) mavenDep.get("group"), 
-							(String) mavenDep.get("artifact"), 
+		return getMappedInfo((String) mavenDep.get("group"),
+							(String) mavenDep.get("artifact"),
 							(String) mavenDep.get("version"));
 	}
 
@@ -52,7 +97,7 @@ public class MavenJPackageDepmap {
 		jppCombination = (String) jppArtifactMap.get(idToCheck);
 
 		//System.err.println("*** " + groupId+","+artifactId+","+version + " => " + jppCombination);
-		
+
 		jppDep = new Hashtable();
 		if (jppCombination != null && jppCombination != "") {
 
@@ -90,31 +135,77 @@ public class MavenJPackageDepmap {
 
 	private static void buildJppArtifactMap() {
 
-		if (System.getProperty("maven2.ignore.versions") != null || System.getProperty("maven2.jpp.mode") != null) {
+                try{
+                    if (System.getProperty("maven2.ignore.versions") != null || System.getProperty("maven2.jpp.mode") != null) {
 			debug("Processing file: /usr/share/java-utils/xml/maven2-versionless-depmap.xml");
-			processDepmapFile("/etc/maven/maven2-versionless-depmap.xml");
-		}
+			processDepmapFile(new FileInputStream("/etc/maven/maven2-versionless-depmap.xml"));
+                    }
+                }
+                catch (FileNotFoundException e) {
+                    System.err.println("WARNING: Unable to find versionless map" );
+                    e.printStackTrace();
+                }
+                catch (IOException e) {
+                    System.err.println("WARNING: I/O exception occured when opening versionless map file");
+                    e.printStackTrace();
+                }
+
+                // process fragments in etc
+                File fragmentDir = new File("/etc/maven/fragments");
+                String flist[] = fragmentDir.list();
+                if (flist != null) {
+                    java.util.Arrays.sort(flist);
+                    for (String fragFilename : flist) {
+                        try {
+                            processDepmapFile(new WrapFragmentStream("/etc/maven/fragments/" + fragFilename));
+                        }
+                        catch (IOException e) {
+                            System.err.println("WARNING: I/O exception occured when opening etc map file" + fragFilename);
+                            e.printStackTrace();
+                        }
+                    }
+                }
 
-		debug("Processing file: /usr/share/java-utils/xml/maven2-depmap.xml");
-		processDepmapFile("/etc/maven/maven2-depmap.xml");
+                // process fragments is usr. Once packages are rebuilt, we can skip
+                // fragments in /etc
+                fragmentDir = new File("/usr/share/maven-fragments");
+                flist = fragmentDir.list();
+                if (flist != null) {
+                    java.util.Arrays.sort(flist);
+                    for (String fragFilename : flist) {
+                        try {
+                            processDepmapFile(new WrapFragmentStream("/usr/share/maven-fragments/" + fragFilename));
+                        }
+                        catch (IOException e) {
+                            System.err.println("WARNING: I/O exception occured when opening usr map file" + fragFilename);
+                            e.printStackTrace();
+                        }
+                    }
+                }
 
-		String customFileName = System.getProperty("maven2.jpp.depmap.file", null); 
-		if (customFileName != null) {
+		String customFileName = System.getProperty("maven2.jpp.depmap.file", null);
+                try {
+                    if (customFileName != null) {
 			debug("Processing file: " + customFileName);
-			processDepmapFile(customFileName);
-		}
+			processDepmapFile(new FileInputStream(customFileName));
+                    }
+                }
+                catch (FileNotFoundException e) {
+                    System.err.println("ERROR: Unable to find custom map file: " + customFileName);
+                    e.printStackTrace();
+                }
+                catch (IOException e) {
+                    System.err.println("ERROR: I/O exception occured when opening map file");
+                    e.printStackTrace();
+                }
 	}
 
-	private static void processDepmapFile(String fileName) {
-		
+	private static void processDepmapFile(InputStream file) {
+
 		Document mapDocument;
 
 		try {
-			mapDocument = (new SAXBuilder()).build(new InputSource(new FileInputStream(fileName)));
-		} catch (FileNotFoundException fnfe) {
-			System.err.println("ERROR: Unable to find map file: " + fileName);
-			fnfe.printStackTrace();
-			return;
+			mapDocument = (new SAXBuilder()).build(new InputSource(file));
 		} catch (IOException ioe) {
 			System.err.println("ERROR: I/O exception occured when opening map file");
 			ioe.printStackTrace();
@@ -124,16 +215,16 @@ public class MavenJPackageDepmap {
 			jde.printStackTrace();
 			return;
 		}
-		
+
 		List l = mapDocument.getRootElement().getChildren("dependency");
-		
+
 		Iterator i = l.iterator();
 		while (i.hasNext()) {
 			Element depElement = (Element) i.next();
 
 			Element mElem = depElement.getChild("maven");
 			Element jppElem = depElement.getChild("jpp");
-			
+
 			String mG = mElem.getChildText("groupId");
 			String mA = mElem.getChildText("artifactId");
 			String mV = mElem.getChildText("version");
diff --git a/maven2.spec b/maven2.spec
index 03f03b7..15b79d2 100644
--- a/maven2.spec
+++ b/maven2.spec
@@ -3,7 +3,7 @@
 
 Name:	    maven2
 Version:	2.2.1
-Release:	22%{?dist}
+Release:	23%{?dist}
 Summary:	Java project management and project comprehension tool
 
 Group:		Development/Build Tools
@@ -59,6 +59,7 @@ Patch3:     %{name}-%{version}-enable-bootstrap-repo.patch
 Patch4:     %{name}-%{version}-unshade.patch
 Patch5:     %{name}-%{version}-default-resolver-pool-size.patch
 Patch6:     %{name}-%{version}-strip-jackrabbit-dep.patch
+Patch7:     %{name}-%{version}-classworlds.patch
 
 BuildRequires: java-devel >= 1.6.0
 BuildRequires: classworlds
@@ -146,6 +147,9 @@ BuildRequires: jakarta-oro
 BuildRequires: regexp
 BuildRequires: slf4j
 BuildRequires: velocity
+BuildRequires: maven
+# this is only to temp fix problems in other packages
+BuildRequires: maven2
 %endif
 
 Requires: classworlds
@@ -221,6 +225,8 @@ Requires: jakarta-oro
 Requires: regexp
 Requires: slf4j
 Requires: velocity
+Requires: maven-project = %{version}-%{release}
+Requires: maven-artifact-manager = %{version}-%{release}
 %endif
 
 BuildArch: noarch
@@ -232,6 +238,27 @@ Apache Maven is a software project management and comprehension tool. Based on
 the concept of a project object model (POM), Maven can manage a project's
 build, reporting and documentation from a central piece of information.
 
+%package -n maven-project
+Group:          Development/Libraries
+Summary:        Compatibility Maven project artifact
+Requires:       jpackage-utils
+Requires(post):   jpackage-utils
+Requires(postun): jpackage-utils
+
+%description -n maven-project
+Maven project artifact
+
+%package -n maven-artifact-manager
+Group:          Development/Libraries
+Summary:        Compatibility Maven artifact manager artifact
+Requires:       jpackage-utils
+Requires:       plexus-classworlds
+Requires(post):   jpackage-utils
+Requires(postun): jpackage-utils
+
+%description -n maven-artifact-manager
+Maven artifact manager artifact
+
 %prep
 %setup -q -n apache-maven-2.2.1
 
@@ -284,6 +311,8 @@ cp %{SOURCE102} maven-artifact/src/main/java/org/apache/maven/artifact/repositor
 # remove unneeded jackrabbit dependency
 %patch6 -p1 -b .strip-jackrabbit-dep
 
+%patch7 -p1 -b .classworlds
+
 # test case is incorrectly assuming that target executed by antcall
 # can propagate references to its parent (stopped working with ant 1.8)
 rm maven-script/maven-script-ant/src/test/java/org/apache/maven/script/ant/AntMojoWrapperTest.java
@@ -313,7 +342,7 @@ ant -Dmaven.repo.local=$M2_REPO/cache
 # FIXME: These tests fail when building with maven for an unknown reason
 rm -f maven-core/src/test/java/org/apache/maven/WagonSelectorTest.java
 rm -f maven-artifact-manager/src/test/java/org/apache/maven/artifact/manager/DefaultWagonManagerTest.java
-mvn-jpp -P all-models -Dmaven.repo.local=$M2_REPO/cache -Dmaven2.jpp.depmap.file=%{SOURCE103} install
+mvn-rpmbuild -Dmaven.test.skip=true -P all-models -Dmaven.repo.local=$M2_REPO/cache -Dmaven.local.depmap.file=%{SOURCE103} install
 %endif
 
 %install
@@ -419,17 +448,36 @@ install -m 644 %{SOURCE105} $RPM_BUILD_ROOT%{_javadir}/%{name}/empty-dep.jar
 # Individual jars #
 ###################
 
+# artifact-manager and project go into separate fragments
+subdir="maven-artifact-manager"
+pushd $subdir
+install -m 644 target/$subdir-%{version}.jar $RPM_BUILD_ROOT%{_javadir}/%{name}/$subdir.jar
+install -m 644 pom.xml $RPM_BUILD_ROOT%{_datadir}/%{name}/poms/JPP.%{name}-$subdir.pom
+%add_to_maven_depmap org.apache.maven $subdir %{version} JPP/%{name} $subdir
+popd
+
+mv $RPM_BUILD_ROOT%{_mavendepmapfragdir}/%{name} \
+   $RPM_BUILD_ROOT%{_mavendepmapfragdir}/$subdir
+
+subdir="maven-project"
+pushd $subdir
+install -m 644 target/$subdir-%{version}.jar $RPM_BUILD_ROOT%{_javadir}/%{name}/$subdir.jar
+install -m 644 pom.xml $RPM_BUILD_ROOT%{_datadir}/%{name}/poms/JPP.%{name}-$subdir.pom
+%add_to_maven_depmap org.apache.maven $subdir %{version} JPP/%{name} $subdir
+popd
+
+mv $RPM_BUILD_ROOT%{_mavendepmapfragdir}/%{name} \
+   $RPM_BUILD_ROOT%{_mavendepmapfragdir}/$subdir
+
 for file in \
     maven-script/maven-script-ant/target/maven-script-ant-%{version}.jar \
     maven-script/maven-script-beanshell/target/maven-script-beanshell-%{version}.jar \
     apache-maven/target/apache-maven-%{version}.jar \
     maven-profile/target/maven-profile-%{version}.jar \
-    maven-artifact-manager/target/maven-artifact-manager-%{version}.jar \
     maven-artifact-test/target/maven-artifact-test-%{version}.jar \
     maven-monitor/target/maven-monitor-%{version}.jar \
     maven-toolchain/target/maven-toolchain-%{version}.jar \
     maven-toolchain/target/original-maven-toolchain-%{version}.jar \
-    maven-project/target/maven-project-%{version}.jar \
     maven-settings/target/maven-settings-%{version}.jar \
     maven-plugin-parameter-documenter/target/maven-plugin-parameter-documenter-%{version}.jar \
     maven-model/target/maven-model-%{version}.jar \
@@ -493,11 +541,19 @@ install -m 644 pom.xml $RPM_BUILD_ROOT%{_datadir}/%{name}/poms/JPP.%{name}-maven
 %postun
 %update_maven_depmap
 
-%clean
-rm -rf $RPM_BUILD_ROOT
+%post -n maven-project
+%update_maven_depmap
+
+%postun -n maven-project
+%update_maven_depmap
+
+%post -n maven-artifact-manager
+%update_maven_depmap
+
+%postun -n maven-artifact-manager
+%update_maven_depmap
 
 %files
-%defattr(-,root,root,-)
 %attr(0755,root,root) %{_bindir}/mvn
 %attr(0755,root,root) %{_bindir}/mvn-jpp
 %dir %{_datadir}/%{name}
@@ -509,6 +565,8 @@ rm -rf $RPM_BUILD_ROOT
 %{_datadir}/%{name}/conf
 %{_datadir}/%{name}/lib
 %{_datadir}/%{name}/poms
+%exclude %{_datadir}/%{name}/poms/JPP.%{name}-maven-artifact-manager.pom
+%exclude %{_datadir}/%{name}/poms/JPP.%{name}-maven-project.pom
 %{_datadir}/%{name}/repository
 %{_mavendepmapfragdir}
 %{_javadir}/%{name}
@@ -518,7 +576,23 @@ rm -rf $RPM_BUILD_ROOT
 %endif
 %doc
 
+%files -n maven-project
+%{_mavendepmapfragdir}/maven-project
+%{_javadir}/%{name}/maven-project.jar
+%{_datadir}/%{name}/poms/JPP.%{name}-maven-project.pom
+
+%files -n maven-artifact-manager
+%{_mavendepmapfragdir}/maven-artifact-manager
+%{_javadir}/%{name}/maven-artifact-manager.jar
+%{_datadir}/%{name}/poms/JPP.%{name}-maven-artifact-manager.pom
+
+
 %changelog
+* Fri Jun 24 2011 Stanislav Ochotnicky <sochotnicky at redhat.com> - 2.2.1-23
+- Split artifact-manager and project into subpackages
+- Fix resolver to process poms and fragments from datadir
+- No more need to update_maven_depmap after this update
+
 * Mon Apr 18 2011 Stanislav Ochotnicky <sochotnicky at redhat.com> - 2.2.1-22
 - Fix jpp script to limit maven2.jpp.mode scope
 


More information about the scm-commits mailing list