From 1ae9fb1553d36abdee817bffc0b420d17e5b549e Mon Sep 17 00:00:00 2001 From: Stanislav Ochotnicky Date: Tue, 21 Dec 2010 15:25:37 +0100 Subject: [PATCH] Add fedora local resolver - Fix quoting of arguments to mvn scripts - Add javadoc subpackage - Make jars versionless and remove unneeded clean section --- 0003-Use-custom-resolver.patch | 133 ++++++++++++++++++++ JavadirWorkspaceReader.java | 95 +++++++++++++++ MavenJPackageDepmap.java | 213 +++++++++++++++++++++++++++++++++ maven-script | 2 +- maven-script-local | 10 ++ maven.spec | 54 ++++++--- 6 files changed, 490 insertions(+), 17 deletions(-) create mode 100644 0003-Use-custom-resolver.patch create mode 100644 JavadirWorkspaceReader.java create mode 100644 MavenJPackageDepmap.java create mode 100644 maven-script-local diff --git a/0003-Use-custom-resolver.patch b/0003-Use-custom-resolver.patch new file mode 100644 index 0000000..c07b671 --- /dev/null +++ b/0003-Use-custom-resolver.patch @@ -0,0 +1,133 @@ +From efb78912935d04507ce36951686608d33a3b3647 Mon Sep 17 00:00:00 2001 +From: Stanislav Ochotnicky +Date: Tue, 2 Nov 2010 14:47:05 +0100 +Subject: [PATCH 3/3] Use custom resolver + +--- + .../org/apache/maven/artifact/ArtifactUtils.java | 8 ++++++-- + .../main/java/org/apache/maven/DefaultMaven.java | 6 ++++++ + .../apache/maven/plugin/MavenPluginValidator.java | 3 ++- + .../internal/DefaultPluginVersionResolver.java | 7 +++++++ + .../model/validation/DefaultModelValidator.java | 13 ++++++++++--- + 5 files changed, 31 insertions(+), 6 deletions(-) + +diff --git a/maven-artifact/src/main/java/org/apache/maven/artifact/ArtifactUtils.java b/maven-artifact/src/main/java/org/apache/maven/artifact/ArtifactUtils.java +index 1f37d4f..04bc346 100644 +--- a/maven-artifact/src/main/java/org/apache/maven/artifact/ArtifactUtils.java ++++ b/maven-artifact/src/main/java/org/apache/maven/artifact/ArtifactUtils.java +@@ -99,12 +99,16 @@ public final class ArtifactUtils + { + throw new NullPointerException( "artifactId is null" ); + } +- if ( version == null ) ++ if ( version == null && System.getProperty("maven.jpp.mode") == null ) + { + throw new NullPointerException( "version is null" ); + } + +- return groupId + ":" + artifactId + ":" + version; ++ if( System.getProperty("maven.jpp.mode") == null ) { ++ return groupId + ":" + artifactId + ":" + version; ++ } else { ++ return versionlessKey(groupId, artifactId); ++ } + } + + public static Map artifactMapByVersionlessId( Collection artifacts ) +diff --git a/maven-core/src/main/java/org/apache/maven/DefaultMaven.java b/maven-core/src/main/java/org/apache/maven/DefaultMaven.java +index e892ee9..b0bfea6 100644 +--- a/maven-core/src/main/java/org/apache/maven/DefaultMaven.java ++++ b/maven-core/src/main/java/org/apache/maven/DefaultMaven.java +@@ -55,6 +55,7 @@ import org.apache.maven.project.ProjectBuildingException; + import org.apache.maven.project.ProjectBuildingRequest; + import org.apache.maven.project.ProjectBuildingResult; + import org.apache.maven.project.ProjectSorter; ++import org.apache.maven.artifact.resolver.JavadirWorkspaceReader; + import org.apache.maven.repository.DelegatingLocalArtifactRepository; + import org.apache.maven.repository.LocalRepositoryNotAccessibleException; + import org.apache.maven.settings.Mirror; +@@ -361,6 +362,11 @@ public class DefaultMaven + session.setWorkspaceReader( workspaceRepository ); + } + ++ if ( System.getProperty("maven.jpp.mode") != null) ++ { ++ session.setWorkspaceReader(new JavadirWorkspaceReader()); ++ } ++ + DefaultSettingsDecryptionRequest decrypt = new DefaultSettingsDecryptionRequest(); + decrypt.setProxies( request.getProxies() ); + decrypt.setServers( request.getServers() ); +diff --git a/maven-core/src/main/java/org/apache/maven/plugin/MavenPluginValidator.java b/maven-core/src/main/java/org/apache/maven/plugin/MavenPluginValidator.java +index 009635b..91ad68e 100644 +--- a/maven-core/src/main/java/org/apache/maven/plugin/MavenPluginValidator.java ++++ b/maven-core/src/main/java/org/apache/maven/plugin/MavenPluginValidator.java +@@ -60,7 +60,8 @@ public class MavenPluginValidator + errors.add( "Plugin's descriptor contains the wrong artifact ID: " + pluginDescriptor.getArtifactId() ); + } + +- if ( !pluginArtifact.getBaseVersion().equals( pluginDescriptor.getVersion() ) ) ++ if ( !pluginArtifact.getBaseVersion().equals( pluginDescriptor.getVersion() ) ++ && System.getProperty("maven.jpp.mode") == null) + { + errors.add( "Plugin's descriptor contains the wrong version: " + pluginDescriptor.getVersion() ); + } +diff --git a/maven-core/src/main/java/org/apache/maven/plugin/version/internal/DefaultPluginVersionResolver.java b/maven-core/src/main/java/org/apache/maven/plugin/version/internal/DefaultPluginVersionResolver.java +index fb074fb..9583d05 100644 +--- a/maven-core/src/main/java/org/apache/maven/plugin/version/internal/DefaultPluginVersionResolver.java ++++ b/maven-core/src/main/java/org/apache/maven/plugin/version/internal/DefaultPluginVersionResolver.java +@@ -75,6 +75,13 @@ public class DefaultPluginVersionResolver + throws PluginVersionResolutionException + { + logger.debug( "Resolving plugin version for " + request.getGroupId() + ":" + request.getArtifactId() ); ++ if (System.getProperty("maven.jpp.mode") != null) { ++ DefaultPluginVersionResult result = new DefaultPluginVersionResult("latest"); ++ result.setRepository(request.getRepositorySession().getWorkspaceReader().getRepository()); ++ logger.debug( "Resolved plugin version for " + request.getGroupId() + ":" + request.getArtifactId() ++ + " to latest from repository " + result.getRepository()); ++ return result; ++ } + + PluginVersionResult result = resolveFromProject( request ); + +diff --git a/maven-model-builder/src/main/java/org/apache/maven/model/validation/DefaultModelValidator.java b/maven-model-builder/src/main/java/org/apache/maven/model/validation/DefaultModelValidator.java +index 033211a..1c09272 100644 +--- a/maven-model-builder/src/main/java/org/apache/maven/model/validation/DefaultModelValidator.java ++++ b/maven-model-builder/src/main/java/org/apache/maven/model/validation/DefaultModelValidator.java +@@ -405,7 +405,10 @@ public class DefaultModelValidator + + if ( !management ) + { +- validateVersion( prefix + "version", problems, errOn30, d.getVersion(), d.getManagementKey(), d ); ++ if(System.getProperty("maven.jpp.mode") != null && d.getVersion() == null) ++ d.setVersion("latest"); ++ else ++ validateVersion( prefix + "version", problems, errOn30, d.getVersion(), d.getManagementKey(), d ); + + /* + * TODO: Extensions like Flex Mojos use custom scopes like "merged", "internal", "external", etc. +@@ -433,7 +436,10 @@ public class DefaultModelValidator + { + validateEffectiveDependency( problems, d, false, prefix, request ); + +- validateVersion( prefix + "version", problems, errOn30, d.getVersion(), d.getManagementKey(), d ); ++ if(System.getProperty("maven.jpp.mode") != null && d.getVersion() == null) ++ d.setVersion("latest"); ++ else ++ validateVersion( prefix + "version", problems, errOn30, d.getVersion(), d.getManagementKey(), d ); + + validateEnum( prefix + "scope", problems, errOn30, d.getScope(), d.getManagementKey(), d, "compile", + "runtime", "system" ); +@@ -452,7 +458,8 @@ public class DefaultModelValidator + { + validateStringNotEmpty( prefix + "type", problems, Severity.ERROR, d.getType(), d.getManagementKey(), d ); + +- validateStringNotEmpty( prefix + "version", problems, Severity.ERROR, d.getVersion(), d.getManagementKey(), ++ if(System.getProperty("maven.jpp.mode") == null) ++ validateStringNotEmpty( prefix + "version", problems, Severity.ERROR, d.getVersion(), d.getManagementKey(), + d ); + } + +-- +1.7.3.2 + diff --git a/JavadirWorkspaceReader.java b/JavadirWorkspaceReader.java new file mode 100644 index 0000000..ba1c20b --- /dev/null +++ b/JavadirWorkspaceReader.java @@ -0,0 +1,95 @@ +package org.apache.maven.artifact.resolver; + +import org.apache.maven.artifact.repository.MavenJPackageDepmap; + +import java.io.File; +import java.util.List; +import java.util.LinkedList; +import java.util.Hashtable; + +import org.sonatype.aether.repository.WorkspaceReader; +import org.sonatype.aether.repository.WorkspaceRepository; +import org.sonatype.aether.artifact.Artifact; + + +public class JavadirWorkspaceReader + implements WorkspaceReader +{ + private WorkspaceRepository workspaceRepository; + + private static final char GROUP_SEPARATOR = '.'; + private static final char PATH_SEPARATOR = '/'; + + + public JavadirWorkspaceReader() { + workspaceRepository = new WorkspaceRepository("javadir-workspace"); + } + + public WorkspaceRepository getRepository() { + return workspaceRepository; + } + + public File findArtifact( Artifact artifact ) { + MavenJPackageDepmap.debug("=============JAVADIRREADER-FIND_ARTIFACT: " + artifact.getArtifactId()); + StringBuffer path = new StringBuffer(); + + String artifactId = artifact.getArtifactId(); + String groupId = artifact.getGroupId(); + String version = artifact.getVersion(); + + MavenJPackageDepmap.debug("Wanted GROUPID=" + groupId); + MavenJPackageDepmap.debug("Wanted ARTIFACTID=" + artifactId); + + 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"); + } + MavenJPackageDepmap.debug("Resolved GROUPID=" + groupId); + MavenJPackageDepmap.debug("Resolved ARTIFACTID=" + artifactId); + + if (artifact.getExtension().equals("pom")) { + path = getPOMPath(groupId, artifactId); + } else if (artifact.getExtension().equals("signature")) { + path.append("/usr/share/maven/repository/"); + path.append( groupId ).append( '/' ); + path.append( artifactId ).append( ".signature" ); + } else { + path.append("/usr/share/maven/repository/"); + path.append( groupId ).append( '/' ); + path.append( artifactId ).append( ".jar" ); + } + + MavenJPackageDepmap.debug("Returning " + path.toString()); + return new File(path.toString()); + } + + public List findVersions( Artifact artifact ) { + List ret = new LinkedList(); + ret.add("latest"); + return ret; + } + + 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("maven.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("maven.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("maven.jpp.default.pom.path", "JPP/maven2/default_poms")).append("/").append(fName); + } + path.insert(0, "/usr/share/maven2/repository/"); + return path; + } +} diff --git a/MavenJPackageDepmap.java b/MavenJPackageDepmap.java new file mode 100644 index 0000000..c65155a --- /dev/null +++ b/MavenJPackageDepmap.java @@ -0,0 +1,213 @@ +package org.apache.maven.artifact.repository; + + +import java.io.FileNotFoundException; +import java.io.IOException; +import java.util.Hashtable; +import java.util.StringTokenizer; + +import javax.xml.parsers.DocumentBuilder; +import javax.xml.parsers.DocumentBuilderFactory; +import javax.xml.parsers.ParserConfigurationException; + + +import org.xml.sax.SAXException; + +import org.w3c.dom.*; + + +public class MavenJPackageDepmap { + + private static class ArtifactDefinition { + String groupId = null; + String artifactId = null; + String version = null; + } + + private static MavenJPackageDepmap instance; + private static Hashtable jppArtifactMap; + + 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"), + (String) mavenDep.get("version")); + } + + public Hashtable getMappedInfo(String groupId, String artifactId, String version) { + + Hashtable jppDep; + String idToCheck, jppCombination; + + if (System.getProperty("maven.ignore.versions") == null && System.getProperty("maven.jpp.mode") == null) { + idToCheck = groupId+","+artifactId+","+version; + } else { + idToCheck = groupId+","+artifactId; + } + + jppCombination = (String) jppArtifactMap.get(idToCheck); + + //System.err.println("*** " + groupId+","+artifactId+","+version + " => " + jppCombination); + + jppDep = new Hashtable(); + if (jppCombination != null && jppCombination != "") { + + StringTokenizer st = new StringTokenizer(jppCombination, ","); + + jppDep.put("group", st.nextToken()); + jppDep.put("artifact",st.nextToken()); + jppDep.put("version",st.nextToken()); + + } else { + jppDep.put("group", groupId); + jppDep.put("artifact", artifactId); + jppDep.put("version", version); + } + + return jppDep; + } + + + /** + * Returns whether or not the given dependency should be dropped. + */ + public boolean shouldEliminate(String groupId, String artifactId, String version) { + String idToCheck; + + if (System.getProperty("maven.ignore.versions") == null && System.getProperty("maven.jpp.mode") == null) { + idToCheck = groupId+","+artifactId+","+version; + } else { + idToCheck = groupId+","+artifactId; + } + + return jppArtifactMap.get(idToCheck) != null && jppArtifactMap.get(idToCheck).equals(""); + + } + + private static void buildJppArtifactMap() { + + if (System.getProperty("maven.ignore.versions") != null || System.getProperty("maven.jpp.mode") != null) { + debug("Processing file: /usr/share/java-utils/xml/maven2-versionless-depmap.xml"); + processDepmapFile("/etc/maven/maven2-versionless-depmap.xml"); + } + + debug("Processing file: /usr/share/java-utils/xml/maven2-depmap.xml"); + processDepmapFile("/etc/maven/maven2-depmap.xml"); + + String customFileName = System.getProperty("maven.jpp.depmap.file", null); + if (customFileName != null) { + debug("Processing file: " + customFileName); + processDepmapFile(customFileName); + } + } + + private static void processDepmapFile(String fileName) { + + Document mapDocument; + debug("Loading depmap file: " + fileName); + try { + DocumentBuilderFactory fact = DocumentBuilderFactory.newInstance(); + fact.setNamespaceAware(true); + DocumentBuilder builder = fact.newDocumentBuilder(); + mapDocument = builder.parse(fileName); + } catch (FileNotFoundException fnfe) { + System.err.println("ERROR: Unable to find map file: " + fileName); + fnfe.printStackTrace(); + return; + } catch (IOException ioe) { + System.err.println("ERROR: I/O exception occured when opening map file"); + ioe.printStackTrace(); + return; + } catch (ParserConfigurationException pce) { + System.err.println("ERROR: Parsing of depmap file failed - configuration"); + pce.printStackTrace(); + return; + } catch (SAXException se) { + System.err.println("ERROR: Parsing of depmap file failed"); + se.printStackTrace(); + return; + } + + NodeList depNodes = (NodeList) mapDocument.getElementsByTagName("dependency"); + + for (int i = 0; i < depNodes.getLength(); i++) { + Element depNode = (Element) depNodes.item(i); + + NodeList mavenNodeList = (NodeList) depNode.getElementsByTagName("maven"); + if (mavenNodeList.getLength() != 1) { + debug("Number of maven sub-elements is not 1. Bailing from depmap generation"); + debug("Maven node: " + depNode.getTextContent()); + return; + } + ArtifactDefinition mavenAD = getArtifactDefinition((Element) mavenNodeList.item(0)); + + ArtifactDefinition jppAD = null; + NodeList jppNodeList = (NodeList) depNode.getElementsByTagName("jpp"); + + if (jppNodeList.getLength() == 1) { + jppAD = getArtifactDefinition((Element) jppNodeList.item(0)); + if (System.getProperty("maven.ignore.versions") == null && System.getProperty("maven.jpp.mode") == null) { + debug("*** Adding: " + mavenAD.groupId + "," + mavenAD.artifactId + "," + mavenAD.version + " => " + + jppAD.groupId + "," + jppAD.artifactId + "," + jppAD.version + " to map..."); + + jppArtifactMap.put(mavenAD.groupId + "," + mavenAD.artifactId + "," + mavenAD.version, + jppAD.groupId + "," + jppAD.artifactId + "," + jppAD.version); + } else { + debug("*** Adding: " + mavenAD.groupId+"," + mavenAD.artifactId + " => " + + jppAD.groupId + "," + jppAD.artifactId + "," + jppAD.version + " to map..."); + + jppArtifactMap.put(mavenAD.groupId+","+mavenAD.artifactId, + jppAD.groupId + "," + jppAD.artifactId + "," + jppAD.version); + } + } else { + debug("Number of jpp sub-elements is not 1. Dropping dependency"); + debug("*** Adding: " + mavenAD.groupId+","+mavenAD.artifactId+"," + " => " + "JPP/maven2,empty-dep,"+mavenAD.version + " to map..."); + jppArtifactMap.put(mavenAD.groupId+","+mavenAD.artifactId, "JPP/maven2,empty-dep,"+mavenAD.version); + } + } + } + + private static ArtifactDefinition getArtifactDefinition(Element element) { + ArtifactDefinition ad = new ArtifactDefinition(); + + NodeList nodes = element.getElementsByTagName("groupId"); + if (nodes.getLength() != 1) { + debug("groupId definition not found in depmap"); + return null; + } + ad.groupId = nodes.item(0).getTextContent(); + + nodes = element.getElementsByTagName("artifactId"); + if (nodes.getLength() != 1) { + debug("artifactId definition not found in depmap"); + return null; + } + ad.artifactId = nodes.item(0).getTextContent(); + + nodes = element.getElementsByTagName("version"); + if (nodes.getLength() != 1) { + ad.version = "DUMMY_VER"; + } else { + ad.version = nodes.item(0).getTextContent(); + } + return ad; + } + + + public static void debug(String msg) { + if (System.getProperty("maven.jpp.debug") != null) + System.err.println(msg); + } +} diff --git a/maven-script b/maven-script index 83187d7..e119cf5 100644 --- a/maven-script +++ b/maven-script @@ -7,4 +7,4 @@ fi export M2_HOME=/usr/share/maven echo $JAVA_HOME -export JAVA_HOME; $M2_HOME/bin/mvn $@ +export JAVA_HOME; $M2_HOME/bin/mvn "$@" diff --git a/maven-script-local b/maven-script-local new file mode 100644 index 0000000..cb30777 --- /dev/null +++ b/maven-script-local @@ -0,0 +1,10 @@ +#!/bin/sh +if [ -f /usr/share/java-utils/java-functions ] ; then + . /usr/share/java-utils/java-functions + set_jvm + set_javacmd +fi + +export M2_HOME=/usr/share/maven +echo $JAVA_HOME +export JAVA_HOME; $M2_HOME/bin/mvn -Dmaven.jpp.mode "$@" diff --git a/maven.spec b/maven.spec index dc19f5a..7fe65cf 100644 --- a/maven.spec +++ b/maven.spec @@ -1,7 +1,7 @@ Name: maven Version: 3.0 -Release: 3%{?dist} +Release: 4%{?dist} Summary: Java project management and project comprehension tool Group: Development/Tools @@ -9,14 +9,22 @@ License: ASL 2.0 and MIT and BSD URL: http://maven.apache.org/ Source0: http://www.apache.org/dyn/closer.cgi/maven/source/apache-%{name}-%{version}-src.tar.gz +# custom resolver java files +# source: git clone git://fedorapeople.org/~sochotni/maven-javadir-resolver/ +Source100: JavadirWorkspaceReader.java +Source101: MavenJPackageDepmap.java + # 2xx for created non-buildable sources Source200: %{name}-script +Source201: %{name}-script-local # Patch1XX could be upstreamed probably # Patch15X are already upstream Patch150: 0001-Add-plexus-default-container-dep.patch -BuildRoot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX) +# Patch2XX for non-upstreamable patches +Patch200: 0003-Use-custom-resolver.patch + BuildArch: noarch BuildRequires: maven2 @@ -75,17 +83,22 @@ 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 javadoc -Summary: API documentation for %{name} -Group: Documentation -Requires: jpackage-utils +%package javadoc +Summary: API documentation for %{name} +Group: Documentation +Requires: jpackage-utils -%description javadoc +%description javadoc %{summary}. %prep %setup -q -n apache-%{name}-%{version} %patch150 -p1 +%patch200 -p1 + +# get custom resolver in place +cp %{SOURCE100} maven-core/src/main/java/org/apache/maven/artifact/resolver +cp %{SOURCE101} maven-core/src/main/java/org/apache/maven/artifact/repository # not really used during build, but a precaution rm maven-ant-tasks-*.jar @@ -126,8 +139,6 @@ chmod -x apache-%{name}-%{version}/conf/settings.xml %install -rm -rf $RPM_BUILD_ROOT - export M2_HOME=$(pwd)/m2home/apache-maven-%{version} # maven2 directory in /usr/share/java @@ -182,7 +193,7 @@ install -dm 755 $RPM_BUILD_ROOT%{_datadir}/%{name}/lib plexus/interpolation plexus/plexus-sec-dispatcher plexus/utils \ sisu/sisu-inject-bean sisu/sisu-inject-plexus maven-wagon/file \ maven-wagon/http-lightweight maven-wagon/http-shared maven-wagon/provider-api \ - xbean/xbean-reflect xerces-j2 jdom + xbean/xbean-reflect xerces-j2 jdom xml-commons-apis ) ################ @@ -218,6 +229,7 @@ install -dm 755 $RPM_BUILD_ROOT%{_bindir} # Wrappers cp -af %{SOURCE200} $RPM_BUILD_ROOT%{_bindir}/mvn3 +cp -af %{SOURCE201} $RPM_BUILD_ROOT%{_bindir}/mvn3-local ################### # Individual jars # @@ -230,10 +242,8 @@ for module in maven-aether-provider maven-artifact maven-compat \ maven-settings-builder;do pushd $module - install -m 644 target/$module-%{version}.jar $RPM_BUILD_ROOT%{_javadir}/%{name}/ - ln -s $module-%version.jar $RPM_BUILD_ROOT%{_javadir}/%{name}/$module.jar - ln -s %{_javadir}/%{name}/$module-%{version}.jar \ - $RPM_BUILD_ROOT%{_datadir}/%{name}/lib/$module-%{version}.jar + install -m 644 target/$module-%{version}.jar $RPM_BUILD_ROOT%{_javadir}/%{name}/$module.jar + ln -s %{_javadir}/%{name}/$module.jar $RPM_BUILD_ROOT%{_datadir}/%{name}/lib/$module.jar install -m 644 pom.xml $RPM_BUILD_ROOT%{_datadir}/%{name}/poms/JPP.%{name}-$module.pom %add_to_maven_depmap org.apache.maven $module %{version} JPP/%{name} $module popd @@ -243,9 +253,10 @@ done install -m 644 pom.xml $RPM_BUILD_ROOT%{_datadir}/%{name}/poms/JPP.%{name}-maven.pom %add_to_maven_depmap org.apache.maven maven %{version} JPP/%{name} maven +# javadocs +install -d -m 755 $RPM_BUILD_ROOT%{_javadocdir}/%{name} +cp -pr target/site/apidocs/* $RPM_BUILD_ROOT%{_javadocdir}/%{name} -%clean -rm -rf $RPM_BUILD_ROOT %post %update_maven_depmap @@ -258,6 +269,7 @@ rm -rf $RPM_BUILD_ROOT %defattr(-,root,root,-) %doc LICENSE.txt NOTICE.txt README.txt %attr(0755,root,root) %{_bindir}/mvn3 +%attr(0755,root,root) %{_bindir}/mvn3-local %dir %{_datadir}/%{name} %dir %{_datadir}/%{name}/bin %attr(0755,root,root) %{_datadir}/%{name}/bin/mvn @@ -273,9 +285,19 @@ rm -rf $RPM_BUILD_ROOT %config %{_mavendepmapfragdir}/%{name} %{_javadir}/%{name} +%files javadoc +%defattr(-,root,root,-) +%doc LICENSE.txt +%{_javadocdir}/%{name} %changelog +* Tue Dec 21 2010 Stanislav Ochotnicky - 3.0-4 +- Add fedora local resolver +- Fix quoting of arguments to mvn scripts +- Add javadoc subpackage +- Make jars versionless and remove unneeded clean section + * Wed Dec 1 2010 Stanislav Ochotnicky - 3.0-3 - Remove maven-ant-tasks jar in prep - Make fragment file as %%config