%bcond_with itests %bcond_without bootstrap %bcond_without repolib %define repodir %{_javadir}/repository.jboss.com/org/apache/maven/%{version}-brew %define repodirlib %{repodir}/lib %define repodirsrc %{repodir}/src %define repo_dir m2_home_local/repository %define maven_settings_file %{_builddir}/%{name}/settings.xml ### preamble {{{ Name: maven Version: 2.0.8 Release: %{bootstrap_release %rel} Summary: Java project management and project comprehension tool Group: Development/Languages/Java License: Apache v2 URL: http://maven.apache.org/ # svn export http://svn.apache.org/repos/asf/maven/components/tags/maven-%{version} maven # tar czf maven-src.tar.gz maven Source0: http://execve.pl/PLD/maven/%{name}-src.tar.gz # Source0-md5: 8db6e8515fe317f635befa39b074016a # svn export -r {2007-03-31} http://svn.apache.org/repos/asf/maven/plugins/trunk maven-plugins # tar czf maven-plugins-070331-src.tar.gz maven-plugins Source2: http://execve.pl/PLD/maven/%{name}-plugins-070705-src.tar.gz # Source2-md5: 7e9d3175131910d64c95fdf4d60651fa # We need to replace the javadoc plugin as the 2.3-SNAPSHOT included above # has several bugs # svn export http://svn.apache.org/repos/asf/maven/plugins/tags/maven-javadoc-plugin-2.4 maven-javadoc-plugin Source22: http://execve.pl/PLD/maven/maven-javadoc-plugin-2.4-src.tar.gz # Source22-md5: c3c1014b8548f94f91f3b679a5500e4b # No source location for these. They are ascii files generated from maven # repositories, and are not in cvs/svn # The files were originally aquired from: http://repo1.maven.org/maven2/ Source3: http://execve.pl/PLD/maven/m2_pom_repo.tar.gz # Source3-md5: a4b18868658fe3e3c58d0f4e9bf66bee # As with above, these files are from the maven repositories, and are not in # cvs/svn # The files were originally aquired from: http://repo1.maven.org/maven2/ Source4: http://execve.pl/PLD/maven/m2_jar_repo.tar.gz # Source4-md5: 00976d79948c93be23cdda62300dc8c2 Source5: %{name}-script Source6: maven-JPackageRepositoryLayout.java Source7: maven-settings.xml # svn export -r '{2006-03-08}' http://svn.apache.org/repos/asf/maven/plugins/trunk/maven-site-plugin maven-site-plugin # tar czf maven-maven-site-plugin.tar.gz maven-site-plugin Source8: http://execve.pl/PLD/maven/%{name}-maven-site-plugin.tar.gz # Source8-md5: 2ba3a4baeb3d4d9d7b8121a6ae05578d Source9: %{name}-run-it-tests.sh # svn export http://svn.apache.org/repos/asf/maven/components/tags/maven-2.0.8/maven-model # cd maven-model # mvn -P all-models package # Find model jar in target/maven-model-2.0.8.jar Source10: %{name}-model-v3.jar Source11: %{name}-MavenJPackageDepmap.java Source12: %{name}-addjdom-depmap.xml Source13: %{name}-empty-dep.pom # Empty jar file with just a manifest. No source destination to specify Source14: %{name}-empty-dep.jar Source15: %{name}-jpp-script Source16: %{name}-jpp-readme.html Source17: %{name}-versionless-depmap.xml Source99: maven-doxia-modules.pom Source100: maven-component-info.xml Patch0: maven-addjdomtobootstrappath.patch Patch1: %{name}-jpprepolayout.patch Patch2: %{name}-fastjar-manifest-fix.patch Patch3: %{name}-plugins-doxiaupdatefix.patch Patch4: %{name}-plugins-catch-uncaught-exceptions.patch Patch5: %{name}-plugins-dependency-plugin-import-fix.patch Patch6: %{name}-%{version}-excludeexternaljars.patch Patch7: %{name}-site-plugin-addservletdep.patch Patch8: %{name}-enable-bootstrap-repository.patch Patch9: %{name}-use-unversioned-classworlds.patch Patch10: %{name}-plugins-disablecobertura.patch Patch11: %{name}-shade-plugin-replacement.patch Patch12: %{name}-sourcetarget.patch Patch13: %{name}-plugins-MJAVADOC-137-AbstractJavadocMojo.patch # The maven javadoc plugin 2.5 pre-reqs maven 2.0.9, we lower to 2.0.8 Patch14: %{name}-javadoc-plugin-pom.patch # javadoc 2.4 uses an old doxia method Patch15: %{name}-plugins-javadoc-newdoxia.patch # This plugin can't cope with a JAR without a JDK version on it Patch16: %{name}-plugins-project-info-reports-jdkversion.patch Patch17: %{name}-MNG-3139.patch Patch18: %{name}-plugins-jpprepolayout.patch Patch19: %{name}-plugins-disableenforcer.patch Patch20: %{name}-commons-cli-1.1.patch ### PLDIZED DEPENDENCIES {{{ ### BRs {{{ BuildRequires: ant >= 1.6.5 BuildRequires: ant-junit BuildRequires: antlr >= 2.7.4 BuildRequires: ant-nodeps BuildRequires: java-bsh >= 1.3.0 BuildRequires: java-commons-beanutils >= 1.7.0 BuildRequires: java-commons-cli >= 1.0 BuildRequires: java-commons-collections >= 3.1 BuildRequires: java-commons-io >= 1.1 BuildRequires: java-commons-lang >= 2.1 BuildRequires: java-commons-logging >= 1.0.4 BuildRequires: java-commons-validator >= 1.1.4 BuildRequires: java-dom4j >= 1.6.1 BuildRequires: java-gnu-regexp >= 1.1.4 BuildRequires: java-httpunit >= 1.6 BuildRequires: java-jaxen >= 1.1 BuildRequires: java-jdom >= 1.0 BuildRequires: java-jsch >= 0.1.20 BuildRequires: java-jtidy >= 1.0 BuildRequires: java-junit >= 3.8.2 BuildRequires: java-oro >= 2.0.8 BuildRequires: java-plexus-utils >= 1.2 BuildRequires: java-qdox >= 1.5 BuildRequires: java-rhino >= 1.5 BuildRequires: java-xalan >= 2.6.0 BuildRequires: java-xerces >= 2.7.1 BuildRequires: java-xmlunit BuildRequires: java-xom %{buildrequires_jdk} BuildRequires: jpackage-utils >= 0:1.7.2 BuildRequires: maven-common-poms BuildRequires: rpmbuild(macros) >= 1.557 BuildRequires: sed >= 4.0 %if %{with itests} BuildRequires: java-log4j >= 1.2.13 BuildRequires: java(xml-commons-apis) >= 1.3.02 BuildRequires: saxon %endif ### }}} ### Rs {{{ Requires: ant >= 1.6.5 Requires: antlr >= 2.7.4 Requires: java-bsh >= 1.3.0 Requires: java-commons-beanutils >= 1.7.0 Requires: java-commons-cli >= 1.0 Requires: java-commons-collections >= 3.1 Requires: java-commons-io >= 1.1 Requires: java-commons-lang >= 2.1 Requires: java-commons-logging >= 1.0.4 Requires: java-commons-validator >= 1.1.4 Requires: java-dom4j >= 1.6.1 Requires: java-gnu-regexp >= 1.1.4 Requires: java-httpunit >= 1.6 Requires: java-jdom >= 1.0 Requires: java-junit >= 3.8.2 Requires: java-jsch >= 0.1.20 Requires: java-jtidy >= 1.0 Requires: java-oro >= 2.0.8 Requires: java-plexus-utils >= 1.2 Requires: java-qdox >= 1.5 Requires: java-rhino >= 1.5 Requires: java-xalan >= 2.6.0 Requires: java-xerces >= 2.7.1 Requires: java-xmlunit Requires: java-xom Requires: maven-common-poms Requires(post): java-commons-cli >= 1.0 Requires(post): java-commons-lang >= 2.1 Requires(post): java-commons-logging >= 1.0.4 Requires(post): java-jdom >= 1.0 Requires(post): java-jsch >= 0.1.20 Requires(post): java-plexus-utils >= 1.2 Requires(post): jpackage-utils >= 0:1.7.2 Requires(postun): jpackage-utils >= 0:1.7.2 ### }}} ### END OF PLDIZED DEPENDENCIES }}} ### DEPENDENCIES NOT PACKAGED FOR PLD {{{ BuildRequires: java-velocity >= 1.4 Requires: velocity >= 1.4 ### }}} ### DEPENDENCIES THAT NEEDS INVESTIGATION {{{ # Is java(mail) enough? BuildRequires: glassfish-javamail Requires: glassfish-javamail # java(servlet)? BuildRequires: tomcat5-servlet-2.4-api Requires: tomcat5-servlet-2.4-api # C library??? Or some java bindings? BuildRequires: xmlrpc Requires: xmlrpc # WTF is that? BuildRequires: aqute-bndlib ### }}} ### OLD JPP DEPENDENCIES {{{ ### BRs {{{ #BuildRequires: cglib >= 2.1.0 BuildRequires: checkstyle4 >= 4.1 BuildRequires: checkstyle4-optional >= 4.1 BuildRequires: classworlds >= 1.1 #BuildRequires: jmock >= 1.0.1 BuildRequires: jline >= 0.8.1 BuildRequires: maven-jxr >= 1.0-2 BuildRequires: maven-wagon >= 1.0-0.1.b2 BuildRequires: maven-doxia >= 1.0-0.a9 BuildRequires: nekohtml >= 0.9.3 BuildRequires: plexus-ant-factory >= 1.0-0.a1.2 BuildRequires: plexus-bsh-factory >= 1.0-0.a7s.2 BuildRequires: plexus-archiver >= 1.0-0.1.a8 BuildRequires: plexus-compiler >= 1.5.1 BuildRequires: plexus-container-default >= 1.0 BuildRequires: plexus-i18n >= 1.0 BuildRequires: plexus-interactivity >= 1.0 BuildRequires: plexus-velocity >= 1.1.2 BuildRequires: pmd >= 3.6 BuildRequires: saxpath %if %{without bootstrap} BuildRequires: %{name} = %{version} BuildRequires: maven2-plugin-ant BuildRequires: maven2-plugin-assembly BuildRequires: maven2-plugin-clean BuildRequires: maven2-plugin-compiler BuildRequires: maven2-plugin-install BuildRequires: maven2-plugin-jar BuildRequires: maven2-plugin-javadoc BuildRequires: maven2-plugin-plugin BuildRequires: maven2-plugin-resources BuildRequires: maven2-plugin-shade BuildRequires: maven2-plugin-site BuildRequires: maven2-plugin-surefire BuildRequires: maven-shared-archiver BuildRequires: maven-doxia-sitetools BuildRequires: maven-embedder BuildRequires: maven-scm >= 0:1.0-0.b3.2 BuildRequires: maven-scm-test >= 0:1.0-0.b3.2 BuildRequires: maven-shared-common-artifact-filters BuildRequires: maven-shared-dependency-analyzer BuildRequires: maven-shared-dependency-tree BuildRequires: maven-shared-downloader BuildRequires: maven-shared-file-management >= 1.0 BuildRequires: maven-shared-io BuildRequires: maven-shared-plugin-testing-harness >= 1.0 BuildRequires: maven-shared-repository-builder BuildRequires: maven-shared-invoker BuildRequires: maven-shared-jar BuildRequires: maven-shared-model-converter BuildRequires: maven-shared-plugin-testing-tools BuildRequires: maven-shared-plugin-tools-api BuildRequires: maven-shared-plugin-tools-beanshell BuildRequires: maven-shared-plugin-tools-java BuildRequires: maven-shared-reporting-impl BuildRequires: maven-shared-verifier BuildRequires: maven-surefire >= 2.0 BuildRequires: maven-surefire-provider-junit BuildRequires: maven-surefire-booter >= 2.0 BuildRequires: modello >= 1.0-0.a8.3 BuildRequires: modello-maven-plugin >= 1.0-0.a8.3 BuildRequires: plexus-digest BuildRequires: plexus-maven-plugin >= 1.3.5 BuildRequires: plexus-mail-sender BuildRequires: plexus-resources %endif # }}} ### Rs {{{ Requires: aqute-bndlib #Requires: cglib >= 2.1.0 Requires: checkstyle4 >= 4.1 Requires: classworlds >= 1. Requires(post): classworlds >= 1.1 #Requires: tomcat5-parent Requires: jaxen >= 1.1 #Requires: jmock >= 1.0.1 Requires: jline >= 0.8.1 Requires: maven-jxr >= 1.0 Requires: maven-wagon >= 1.0-0.1.b2 Requires(post): maven-wagon >= 1.0-0.1.b2 Requires: nekohtml >= 0.9.3 Requires: plexus-ant-factory >= 1.0-0.a1.2 Requires: plexus-bsh-factory >= 1.0-0.a7s.2 Requires: plexus-archiver >= 1.0-0.a6 Requires: plexus-compiler >= 1.5.1 Requires: plexus-container-default >= 1.0 Requires(post): plexus-container-default >= 1.0 Requires: plexus-i18n >= 1.0 Requires: plexus-interactivity >= 1.0 Requires(post): plexus-interactivity >= 1.0 Requires: plexus-velocity >= 1.1.2 Requires: pmd >= 3.6 ### Bootstrap {{{ %if %{without bootstrap} Requires: %{name} = %{version} Requires: maven-doxia >= 1.0-0.a9 Requires(post): maven-doxia >= 1.0-0.a9 Requires: maven-scm >= 0:1.0-0.b3.2 Requires: maven-scm-test >= 0:1.0-0.b3.2 Requires: maven-shared-invoker Requires: maven-shared-io Requires: maven-shared-file-management >= 1.0-4 Requires: maven-shared-jar Requires: maven-shared-model-converter Requires: maven-shared-verifier Requires: maven-surefire >= 2.0 Requires: maven-surefire-booter >= 2.0 Requires: modello >= 1.0-0.a8.3 Requires: modello-maven-plugin >= 1.0-0.a8.3 %endif ### }}} ### }}} ### END OF OLD JPP DEPENDENCIES }}} BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root BuildArch: noarch ### }}} ### descriptions and subpackages {{{ %description 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: Javadoc for %{name} Group: Development/Documentation %description javadoc %{summary}. %package manual Summary: Documents for %{name} Group: Development/Documentation %description manual %{summary}. %package plugin-ant Summary: Ant plugin for maven Group: Development/Build Tools Requires: ant >= 1.6.5 Requires: ant-junit Requires: ant-nodeps Requires: java-junit >= 3.8.2 Requires: maven-wagon >= 1.0-0.1.b2 Requires: java-plexus-utils >= 1.2 Requires: java-xalan >= 2.6.0 Requires: xml-commons-apis >= 1.3.02 Requires: plexus-container-default Requires: %{name} = %{version}-%{release} Requires(postun): %{name} = %{version}-%{release} %description plugin-ant Generates an Ant build file for the project. %package plugin-antlr Summary: Antlr plugin for maven Group: Development/Build Tools Requires: antlr >= 2.7.4 Requires: plexus-container-default Requires: plexus-i18n >= 1.0 %if %{without bootstrap} Requires: maven-doxia >= 1.0-0.a9 Requires: maven-doxia-sitetools >= 1.0 %endif Requires: java-plexus-utils >= 1.2 Requires: %{name} = %{version}-%{release} Requires(postun): %{name} = %{version}-%{release} %description plugin-antlr Generates sources from an Antlr grammar. %package plugin-antrun Summary: Antrun plugin for maven Group: Development/Build Tools Requires: ant >= 1.6.5 Requires: maven-embedder Requires: %{name} = %{version}-%{release} Requires(postun): %{name} = %{version}-%{release} Requires: maven-shared-reporting-impl %description plugin-antrun Runs a set of ant tasks from a phase of the build. %package plugin-assembly Summary: Assembly plugin for maven Group: Development/Build Tools Requires: %{name} = %{version}-%{release} Requires(postun): %{name} = %{version}-%{release} %if %{without bootstrap} Requires: modello >= 1.0-0.a8.3 %endif Requires: plexus-archiver >= 1.0 Requires: java-plexus-utils >= 1.2 Requires: maven-shared-file-management >= 1.0 Requires: maven-shared-archiver Requires: plexus-container-default Requires: maven-shared-repository-builder Requires: maven-shared-common-artifact-filters Requires: maven-shared-plugin-testing-tools Requires: maven-shared-test-tools Requires: jmock >= 1.0.1 Requires: java-jdom >= 1.0 Requires: java-jaxen >= 1.1 Requires: saxpath Requires: java-junit >= 3.8.2 %description plugin-assembly Builds an assembly (distribution) of sources and/or binaries. %package plugin-changelog Summary: Changelog plugin for maven Group: Development/Build Tools %if %{without bootstrap} Requires: maven-scm %endif Requires: %{name} = %{version}-%{release} Requires(postun): %{name} = %{version}-%{release} Requires: maven-doxia >= 1.0-0.a9 Requires: maven-doxia-sitetools >= 1.0 Requires: maven-scm >= 0:1.0-0.b3.2 Requires: maven-shared-reporting-impl %description plugin-changelog The Maven Changelog Plugin generates reports regarding the recent changes in your Software Configuration Management or SCM. %package plugin-changes Summary: Changes plugin for maven Group: Development/Build Tools %if %{without bootstrap} Requires: maven-doxia Requires: maven-doxia-sitetools >= 1.0 %endif Requires: %{name} = %{version}-%{release} Requires(postun): %{name} = %{version}-%{release} Requires: velocity Requires: commons-httpclient Requires: plexus-velocity >= 1.1.2 Requires: plexus-mail-sender Requires: glassfish-javamail Requires: java-commons-lang Requires: velocity Requires: maven-shared-reporting-impl %description plugin-changes The Maven Changes Plugin is used to inform users of the changes that have occured between different releases of your project. %package plugin-checkstyle Summary: Checkstyle plugin for maven Group: Development/Build Tools Requires: checkstyle4 >= 4.1 Requires: checkstyle4-optional >= 4.1 Requires: %{name} = %{version}-%{release} Requires(postun): %{name} = %{version}-%{release} Requires: java-plexus-utils >= 1.2 Requires: plexus-velocity >= 1.1.2 Requires: plexus-resources Requires: maven-shared-reporting-impl %description plugin-checkstyle Generates a checkstyle report. %package plugin-clean Summary: Clean plugin for maven Group: Development/Build Tools Requires: java-junit >= 3.8.2 Requires: %{name} = %{version}-%{release} Requires(postun): %{name} = %{version}-%{release} Requires: java-plexus-utils >= 1.2 %description plugin-clean Cleans up files generated during build. %package plugin-compiler Summary: Compiler plugin for maven Group: Development/Build Tools Requires: %{name} = %{version}-%{release} Requires(postun): %{name} = %{version}-%{release} Requires: plexus-compiler >= 1.5.1 Requires: java-plexus-utils >= 1.2 %description plugin-compiler Compiles Java sources. %package plugin-dependency Summary: Dependency plugin for maven Group: Development/Build Tools Requires: %{name} = %{version}-%{release} Requires(postun): %{name} = %{version}-%{release} Requires: plexus-archiver >= 1.0 Requires: java-plexus-utils >= 1.2 Requires: maven-shared-file-management >= 1.0-4 Requires: java-junit >= 3.8.2 Requires: plexus-container-default Requires: maven-shared-dependency-analyzer Requires: maven-shared-dependency-tree %description plugin-dependency The dependency plugin provides the capability to manipulate artifacts. It can copy and/or unpack artifacts from local or remote repositories to a specified location. %package plugin-deploy Summary: Deploy plugin for maven Group: Development/Build Tools Requires: %{name} = %{version}-%{release} Requires(postun): %{name} = %{version}-%{release} %description plugin-deploy Deploys the built artifacts to a remote repository. %package plugin-doap Summary: Description of a Project (DOAP) plugin for maven Group: Development/Build Tools Requires: %{name} = %{version}-%{release} Requires(postun): %{name} = %{version}-%{release} Requires: java-plexus-utils %description plugin-doap The Maven DOAP Plugin generates a Description of a Project (DOAP) file from a POM. %package plugin-docck Summary: DOCCK plugin for maven Group: Development/Build Tools Requires: %{name} = %{version}-%{release} Requires(postun): %{name} = %{version}-%{release} Requires: java-plexus-utils Requires: maven-shared-plugin-tools-beanshell >= 2.2 Requires: maven-shared-plugin-tools-java >= 2.2 Requires: commons-httpclient Requires: java-commons-logging >= 1.0.4 Requires: maven-shared-file-management >= 1.0-4 Requires: maven-shared-plugin-tools-api Requires: maven-shared-reporting-impl %description plugin-docck The Maven DOCCK Plugin checks that a project complies with the Plugin Documentation Standard. %package plugin-ear Summary: Ear plugin for maven Group: Development/Build Tools Requires: %{name} = %{version}-%{release} Requires(postun): %{name} = %{version}-%{release} Requires: java-plexus-utils >= 1.2 Requires: maven-shared-verifier Requires: java-xmlunit %description plugin-ear Generates an EAR from the current project. %package plugin-eclipse Summary: Eclipse plugin for maven Group: Development/Build Tools Requires: %{name} = %{version}-%{release} Requires(postun): %{name} = %{version}-%{release} Requires: java-plexus-utils >= 1.2 Requires: plexus-archiver >= 1.0 Requires: jmock >= 1.0.1 Requires: java-jdom >= 1.0 Requires: java-jaxen >= 1.1 Requires: saxpath Requires: plexus-interactivity >= 1.0 Requires: maven-shared-plugin-testing-tools Requires: maven-shared-test-tools Requires: aqute-bndlib %description plugin-eclipse Generates an Eclipse project file for the current project. %package plugin-ejb Summary: EJB plugin for maven Group: Development/Build Tools Requires: %{name} = %{version}-%{release} Requires(postun): %{name} = %{version}-%{release} %description plugin-ejb Builds an EJB (and optional client) from the current project. %package plugin-gpg Summary: GPG plugin for maven Group: Development/Build Tools Requires: %{name} = %{version}-%{release} Requires(postun): %{name} = %{version}-%{release} Requires: java-commons-lang Requires: java-plexus-utils Requires: java-commons-lang Requires: java-junit >= 3.8.2 %description plugin-gpg The Maven GPG Plugin signs all of the project's attached artifacts with GnuPG. %package plugin-help Summary: Help plugin for maven Group: Development/Build Tools Requires: %{name} = %{version}-%{release} Requires(postun): %{name} = %{version}-%{release} Requires: maven-shared-plugin-tools-api %description plugin-help Gets information about the working environment for the project. %package plugin-idea Summary: Idea plugin for maven Group: Development/Build Tools Requires: java-dom4j >= 1.6.1 Requires: %{name} = %{version}-%{release} Requires(postun): %{name} = %{version}-%{release} Requires: maven-wagon >= 1.0-0.1.b2 Requires: java-plexus-utils >= 1.2 Requires: jmock >= 1.0.1 %description plugin-idea Creates/updates an IDEA workspace for the current project (individual modules are created as IDEA modules). %package plugin-install Summary: Install plugin for maven Group: Development/Build Tools Requires: plexus-digest >= 1.0 Requires: %{name} = %{version}-%{release} Requires(postun): %{name} = %{version}-%{release} %description plugin-install Installs the built artifact into the local repository. %package plugin-invoker Summary: Invoker plugin for maven Group: Development/Build Tools Requires: %{name} = %{version}-%{release} Requires(postun): %{name} = %{version}-%{release} %if %{without bootstrap} Requires: maven-shared Requires: maven-shared-invoker Requires: maven-shared-file-management >= 1.0-4 Requires: maven-shared-io %endif Requires: java-bsh %description plugin-invoker The Maven Invoker Plugin is used to run a set of Maven projects and makes sure that each project execution is successful, and optionally verifies the output from a given project execution. %package plugin-jar Summary: Jar plugin for maven Group: Development/Build Tools Requires: java-commons-lang >= 2.1 Requires: %{name} = %{version}-%{release} Requires: maven-shared-archiver >= 2.3 Requires(postun): %{name} = %{version}-%{release} Requires: java-plexus-utils >= 1.2 %description plugin-jar Builds a JAR from the current project. %package plugin-javadoc Summary: Javadoc plugin for maven Group: Development/Build Tools Requires: java-commons-lang >= 2.1 Requires: %{name} = %{version}-%{release} Requires(postun): %{name} = %{version}-%{release} %if %{without bootstrap} Requires: modello >= 1.0-0.a8.3 %endif Requires: plexus-archiver >= 1.0 Requires: java-plexus-utils >= 1.2 Requires: maven-shared-reporting-impl %description plugin-javadoc Generates Javadoc for the project. %package plugin-one Summary: One plugin for maven Group: Development/Build Tools Requires: java-junit >= 3.8.2 Requires: %{name} = %{version}-%{release} Requires(postun): %{name} = %{version}-%{release} Requires: plexus-archiver >= 1.0 Requires: java-plexus-utils >= 1.2 Requires: java-junit >= 3.8.2 Requires: maven-shared-model-converter %description plugin-one A plugin for interacting with legacy Maven 1.x repositories and builds. %package plugin-plugin Summary: Plugin plugin for maven Group: Development/Build Tools Requires: %{name} = %{version}-%{release} Requires(postun): %{name} = %{version}-%{release} Requires: maven-shared-plugin-tools-beanshell >= 2.2 Requires: maven-shared-plugin-tools-java >= 2.2 Requires: maven-shared-reporting-impl Requires: maven-doxia >= 1.0-0.a9 Requires: java-plexus-utils >= 1.2 Requires: plexus-container-default %description plugin-plugin Creates a Maven plugin descriptor for any Mojo's found in the source tree, to include in the JAR. %package plugin-pmd Summary: Pmd plugin for maven Group: Development/Build Tools Requires: %{name} = %{version}-%{release} Requires(postun): %{name} = %{version}-%{release} Requires: java-plexus-utils >= 1.2 Requires: plexus-resources Requires: pmd >= 3.3 Requires: java-jaxen >= 1.1 Requires: java-xom Requires: maven-shared-reporting-impl %description plugin-pmd Generates a PMD report. %package plugin-project-info-reports Summary: Project-info-reports plugin for maven Group: Development/Build Tools Requires: java-httpunit >= 1.6 Requires: java-commons-validator >= 1.1.4 Requires: %{name} = %{version}-%{release} Requires(postun): %{name} = %{version}-%{release} Requires: plexus-i18n >= 1.0 Requires: maven-shared-reporting-impl Requires: maven-shared-jar Requires: maven-shared-dependency-tree Requires: maven-wagon Requires: maven-scm >= 0:1.0-0.b3.2 Requires: maven-doxia >= 1.0-0.a9 Requires: maven-doxia-sitetools >= 1.0 %description plugin-project-info-reports Generates standard project reports. %package plugin-rar Summary: Rar plugin for maven Group: Development/Build Tools Requires: %{name} = %{version}-%{release} Requires(postun): %{name} = %{version}-%{release} %description plugin-rar Builds a RAR from the current project. %package plugin-remote-resources Summary: Remote Resources plugin for maven Group: Development/Build Tools Requires: java-junit >= 3.8.2 Requires: %{name} = %{version}-%{release} Requires(postun): %{name} = %{version}-%{release} Requires: plexus-container-default Requires: java-plexus-utils Requires: plexus-velocity Requires: velocity %if %{without bootstrap} Requires: maven-shared Requires: maven-shared-downloader Requires: plexus-resources %endif %description plugin-remote-resources The Maven Remote Resources Plugin is used to retrieve JARs of resources from remote repositories, processes those resources, and incorporate them into JARs built with maven. %package plugin-repository Summary: Repository plugin for maven Group: Development/Build Tools Requires: java-junit >= 3.8.2 Requires: %{name} = %{version}-%{release} Requires(postun): %{name} = %{version}-%{release} Requires: plexus-archiver >= 1.0 %description plugin-repository Plugin to help with repository-based tasks. %package plugin-resources Summary: Resources plugin for maven Group: Development/Build Tools #Requires: java-commons-io >= 1.1 Requires: java-plexus-utils >= 1.2 Requires: %{name} = %{version}-%{release} Requires(postun): %{name} = %{version}-%{release} %description plugin-resources Copies the resources to the output directory for including in the JAR. %package plugin-site Summary: Site plugin for maven Group: Development/Build Tools Requires: %{name} = %{version}-%{release} Requires(postun): %{name} = %{version}-%{release} %if %{without bootstrap} Requires: maven-doxia >= 1.0-0.a9 Requires: maven-doxia-sitetools >= 1.0 %endif Requires: java-plexus-utils >= 1.2 %description plugin-site Generates a site for the current project. %package plugin-source Summary: Source plugin for maven Group: Development/Build Tools Requires: %{name} = %{version}-%{release} Requires(postun): %{name} = %{version}-%{release} Requires: plexus-archiver >= 1.0 Requires: java-plexus-utils >= 1.2 Requires: plexus-container-default >= 1.0 Requires: java-junit >= 3.8.2 %description plugin-source Builds a JAR of sources for use in IDEs and distribution to the repository. %package plugin-stage Summary: Stage plugin for maven Group: Development/Build Tools Requires: %{name} = %{version}-%{release} Requires(postun): %{name} = %{version}-%{release} Requires: maven-wagon Requires: java-plexus-utils Requires: java-junit >= 3.8.2 %description plugin-stage Maven Stage Plugin copies artifacts from one repository to another. %package plugin-verifier Summary: Verifier plugin for maven Group: Development/Build Tools Requires: java-junit >= 3.8.2 Requires: %{name} = %{version}-%{release} Requires(postun): %{name} = %{version}-%{release} %if %{without bootstrap} Requires: modello >= 1.0-0.a8.3 %endif Requires: java-plexus-utils >= 1.2 %description plugin-verifier Useful for integration tests - verifies the existence of certain conditions. %package plugin-war Summary: War plugin for maven Group: Development/Build Tools Requires: %{name} = %{version}-%{release} Requires(postun): %{name} = %{version}-%{release} Requires: java-plexus-utils >= 1.2 Requires: java-junit >= 3.8.2 %description plugin-war Builds a WAR from the current project. %if %{with repolib} %package repolib Summary: Artifacts to be uploaded to a repository library Group: Development/Libraries/Java %description repolib Artifacts to be uploaded to a repository library. This package is not meant to be installed but so its contents can be extracted through rpm2cpio. %endif ### }}} ### prep {{{ %prep #rpm -ql maven-surefire %setup -q -c -n %{name} # Extract the plugins tar xzf %{SOURCE2} # We need to replace the javadoc plugin as the 2.3-SNAPSHOT included above # has several bugs rm -rf maven-plugins/maven-javadoc-plugin rm -rf maven-plugins/maven-enforcer-plugin tar xzf %{SOURCE22} -C maven-plugins # Use an older version of site plugin because newer one requires newer doxia # (1.0a8) which is not compatible with the older one (1.0a7) which is needed # by other parts of maven #rm -rf maven-plugins/maven-site-plugin #tar xzf %{SOURCE8} # javadoc 2.4 uses an old doxia method %patch15 # This plugin can't cope with a JAR without a JDK version on it %patch16 %patch17 %patch18 %patch19 %patch20 # Remove dependencies on org.codehaus.doxia.* (it is now # org.apache.maven.doxia, and in the interest of maintaining just one # doxia jar, we substitute things accordingly) for i in maven-plugins/maven-changelog-plugin/src/main/java/org/apache/maven/plugin/changelog/FileActivityReport.java \ maven-plugins/maven-changelog-plugin/src/main/java/org/apache/maven/plugin/changelog/ChangeLogReport.java \ maven-plugins/maven-changelog-plugin/src/main/java/org/apache/maven/plugin/changelog/DeveloperActivityReport.java \ maven-plugins/maven-javadoc-plugin/src/main/java/org/apache/maven/plugin/javadoc/JavadocReport.java \ maven-plugins/maven-plugin-plugin/src/main/java/org/apache/maven/plugin/plugin/PluginReport.java \ maven/maven-reporting/maven-reporting-api/src/main/java/org/apache/maven/reporting/MavenReport.java \ maven-plugins/maven-antlr-plugin/src/main/java/org/apache/maven/plugin/antlr/AntlrHtmlReport.java \ maven-plugins/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/AbstractPmdReport.java \ maven-plugins/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/CpdReportGenerator.java \ maven-plugins/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/PmdReport.java \ maven-plugins/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/PmdReportListener.java \ maven-plugins/maven-checkstyle-plugin/src/main/java/org/apache/maven/plugin/checkstyle/CheckstyleReport.java \ maven-plugins/maven-checkstyle-plugin/src/main/java/org/apache/maven/plugin/checkstyle/CheckstyleReportGenerator.java; do sed -i -e s:org.codehaus.doxia.sink.Sink:org.apache.maven.doxia.sink.Sink:g $i sed -i -e s:org.codehaus.doxia.site.renderer.SiteRenderer:org.apache.maven.doxia.siterenderer.Renderer:g $i sed -i -r -e s:\(\\s+\)SiteRenderer\(\\s+\):\\1Renderer\\2:g $i done # Remove existing binaries from source trees #find . -name "*.jar" -exec rm -f '{}' \; %patch0 %patch1 %patch2 %patch3 %patch4 %patch5 # keep external jars out of uber jar only in non-bootstrap mode %if %{without bootstrap} %patch6 %endif %patch7 %if %{with bootstrap} %patch8 %endif %patch9 %patch10 %patch11 %patch12 # javadoc 2.5 no longer needs this patch #%patch13 # javadoc 2.5 pre-reqs maven 2.0.9 by default #%patch14 # FIXME: Maven eclipse plugin tests are disabled for now, until a way # is found to stop it from connecting to the web despite offline mode. rm -rf maven-plugins/maven-eclipse-plugin/src/test/* # FIXME: Disabled items: #Disabled goal (because we don't want a jetty dependency) rm -f maven-plugins/maven-site-plugin/src/main/java/org/apache/maven/plugins/site/SiteRunMojo.java # Disabled test because it needs cglib rm -f maven-plugins/maven-release-plugin/src/test/java/org/apache/maven/plugins/release/PrepareReleaseMojoTest.java # Disabled test because it needs mock rm -f maven/maven-artifact-manager/src/test/java/org/apache/maven/artifact/testutils/MockManager.java rm -f maven/maven-artifact-manager/src/test/java/org/apache/maven/artifact/repository/metadata/AbstractRepositoryMetadataTest.java # extract poms and jars (if any) tar xzf %{SOURCE3} # extract jars iff in bootstrap mode %if %{with bootstrap} tar xzf %{SOURCE4} %endif # Copy model-v3 cp -p %{SOURCE10} m2_repo/repository/JPP/maven2/model-v3.jar mkdir external_repo ln -s %{_javadir} external_repo/JPP cp -p %{SOURCE6} maven/maven-artifact/src/main/java/org/apache/maven/artifact/repository/layout/JPackageRepositoryLayout.java cp -p %{SOURCE11} maven/maven-artifact/src/main/java/org/apache/maven/artifact/repository/layout/MavenJPackageDepmap.java # FIXME: bootstrap-mini has no dependencies, so we copy the file there # (for now). Since bootstrap classes are not in the final package, there # will be no duplicates. mkdir -p maven/bootstrap/bootstrap-mini/src/main/java/org/apache/maven/artifact/repository/layout/ cp -p %{SOURCE11} maven/bootstrap/bootstrap-mini/src/main/java/org/apache/maven/artifact/repository/layout/MavenJPackageDepmap.java cp -p %{SOURCE7} %{maven_settings_file} sed -i -e "s|__INTERNAL_REPO_PLACEHOLDER__|file://$(pwd)/m2_repo/repository|g" %{maven_settings_file} %if %{with bootstrap} sed -i -e "s|__EXTERNAL_REPO_PLACEHOLDER__|file://$(pwd)/external_repo|g" %{maven_settings_file} %else sed -i -e "s|__EXTERNAL_REPO_PLACEHOLDER__|file://%{_datadir}/%{name}/repository|g" %{maven_settings_file} %endif sed -i -e "s|__INTERNAL_REPO_PLACEHOLDER__|file://$(pwd)/m2_repo/repository|g" maven/bootstrap/bootstrap-mini/src/main/java/org/apache/maven/bootstrap/download/OnlineArtifactDownloader.java %if %{with bootstrap} sed -i -e "s|__EXTERNAL_REPO_PLACEHOLDER__|file://$(pwd)/external_repo|g" maven/bootstrap/bootstrap-mini/src/main/java/org/apache/maven/bootstrap/download/OnlineArtifactDownloader.java %else sed -i -e "s|__EXTERNAL_REPO_PLACEHOLDER__|file://%{_datadir}/%{name}/repository|g" maven/bootstrap/bootstrap-mini/src/main/java/org/apache/maven/bootstrap/download/OnlineArtifactDownloader.java %endif # Copy the empty dependency jar/pom in place mkdir -p m2_repo/repository/JPP/maven2/default_poms cp -p %{SOURCE13} m2_repo/repository/JPP/maven2/default_poms/JPP.maven-empty-dep.pom cp -p %{SOURCE14} m2_repo/repository/JPP/maven2/empty-dep.jar ### }}} ### build {{{ %build export JAVA_HOME=%{java_home} # Fix maven-remote-resources-plugin # we now use plexus-velocity 1.1.7 which has the correct descriptor with a hint. rm -f maven-plugins/maven-remote-resources-plugin/src/main/resources/META-INF/plexus/components.xml # Wire in jdom dependency cp -p maven/maven-artifact/pom.xml maven/maven-artifact/pom.xml.withoutjdom saxon -o maven/maven-artifact/pom.xml maven/maven-artifact/pom.xml.withoutjdom /usr/share/java-utils/xml/maven2jpp-mapdeps.xsl map=%{SOURCE12} saxon -o m2_repo/repository/JPP/maven2/poms/JPP.maven2-artifact.pom maven/maven-artifact/pom.xml.withoutjdom /usr/share/java-utils/xml/maven2jpp-mapdeps.xsl map=%{SOURCE12} # for uber jar cp -p maven/maven-core/pom.xml maven/maven-core/pom.xml.withoutjdom saxon -o maven/maven-core/pom.xml maven/maven-core/pom.xml.withoutjdom /usr/share/java-utils/xml/maven2jpp-mapdeps.xsl map=%{SOURCE12} cp -p maven/bootstrap/bootstrap-installer/pom.xml maven/bootstrap/bootstrap-installer/pom.xml.withoutjdom saxon -o maven/bootstrap/bootstrap-installer/pom.xml maven/bootstrap/bootstrap-installer/pom.xml.withoutjdom /usr/share/java-utils/xml/maven2jpp-mapdeps.xsl map=%{SOURCE12} mkdir -p maven/maven-plugins/maven-assembly-plugin/target/generated-resources/plexus/META-INF/plexus/components.xml touch maven/maven-plugins/maven-assembly-plugin/target/generated-resources/plexus/META-INF/plexus/components.xml # Build maven export MAVEN_REPO_LOCAL=$(pwd)/%{repo_dir} export M2_SETTINGS_FILE=%{maven_settings_file} # In bootstrap mode, we want it looking at default poms only (controlled via # maven-common-poms). This enables us to change naming structures without # breaking build. export MAVEN_OPTS="$MAVEN_OPTS -Dmaven.repo.local=$MAVEN_REPO_LOCAL -Dmaven2.ignore.versions -Dmaven2.offline.mode -Dmaven.test.failure.ignore=true -Dmaven2.jpp.depmap.file=%{SOURCE17}" export M2_HOME=$(pwd)/maven/home/apache-%{name}-%{version} %if %{with bootstrap} export MAVEN_OPTS="$MAVEN_OPTS -Dmaven2.jpp.default.repo=$(pwd)/external_repo" %else export MAVEN_OPTS="$MAVEN_OPTS -Dmaven2.jpp.default.repo=%{_datadir}/%{name}/repository" %endif cd %{name} # {{{ [ -z "$JAVA_HOME" ] && JAVA_HOME=%{_jvmdir}/java export JAVA_HOME mkdir -p bootstrap/lib ln -sf $(build-classpath jdom) bootstrap/lib/jdom.jar export CLASSPATH=$(pwd)/bootstrap/lib/jdom.jar export JDOMCLASS=$CLASSPATH sh -x ./bootstrap.sh --prefix=$(pwd)/home --settings=%{maven_settings_file} unset CLASSPATH cd - # cd %{name} }}} # Update the classworlds jar name in the mvn script sed -i -e s:"/core/boot/classworlds-\*.jar":/core/boot/classworlds\*.jar:g $M2_HOME/bin/mvn # In non-bootstrap mode, external jars are kept out of the uber jar. Copy those # jars in for now (linked in %%post) %if %{without bootstrap} (cd $M2_HOME/lib cp ../../../../m2_home_local/repository/com/jcraft/jsch/0.1.24/jsch-0.1.24.jar jsch.jar cp ../../../../m2_home_local/repository/org/codehaus/plexus/plexus-utils/1.4.6/plexus-utils-1.4.6.jar plexus-utils.jar cp ../../../../m2_home_local/repository/commons-cli/commons-cli/1.0/commons-cli-1.0.jar commons-cli.jar cp ../../../../m2_home_local/repository/org/apache/maven/doxia/doxia-sink-api/1.0-alpha-7/doxia-sink-api-1.0-alpha-7.jar doxia-sink-api.jar cp ../../../../m2_home_local/repository/org/codehaus/plexus/plexus-container-default/1.0-alpha-8/plexus-container-default-1.0-alpha-8.jar plexus-container-default.jar cp ../../../../m2_home_local/repository/org/codehaus/plexus/plexus-interactivity-api/1.0-alpha-4/plexus-interactivity-api-1.0-alpha-4.jar plexus-interactivity-api.jar cp ../../../../m2_home_local/repository/jtidy/jtidy/4aug2000r7-dev/jtidy-4aug2000r7-dev.jar jtidy.jar ) build-jar-repository -s -p $M2_HOME/lib jdom maven-wagon/file maven-wagon/http-lightweight maven-wagon/http-shared maven-wagon/provider-api maven-wagon/ssh maven-wagon/ssh-common maven-wagon/ssh-external %endif # Build plugins cd maven-plugins # {{{ # Build the plugin-plugin first, as it is needed to build itself later on # NOTE: Build of this plugin for the first time is expected to cause errors. # That is why we build it first with -fn . Subsequent builds should not have # errors, and if they do, they will be caught when all plugins are built # again below. See: http://mail-archives.apache.org/mod_mbox/maven-users/200511.mbox/%3c4374C819.7090609@commonjava.org%3e (cd maven-plugin-plugin $M2_HOME/bin/mvn -e --batch-mode -s %{maven_settings_file} $MAVEN_OPTS -npu --no-plugin-registry -fn clean install ) # Disable clover plugin. We don't have a clover package yet. sed -i -e s:"maven-clover-plugin"::g pom.xml # Now build everything # FIXME: Need to build in two stages to get around gcj bug that causes plugin reload to fail #$M2_HOME/bin/mvn -e --batch-mode -s %{maven_settings_file} $MAVEN_OPTS -Dmaven.test.skip=true -npu --no-plugin-registry -fn verify $M2_HOME/bin/mvn -e --batch-mode -s %{maven_settings_file} $MAVEN_OPTS -Dmaven.test.skip=true -npu --no-plugin-registry verify $M2_HOME/bin/mvn -e --batch-mode -s %{maven_settings_file} $MAVEN_OPTS -Dmaven.test.skip=true -npu --no-plugin-registry --fail-at-end jar:jar install:install cd - # }}} %if %{without bootstrap} # Build model-all JAR (for model-v3 classes) cd maven/maven-model # {{{ $M2_HOME/bin/mvn -e -s %{maven_settings_file} $MAVEN_OPTS -P all-models package cd - # }}} %endif # Build complete. Run it tests. %if %{with itests} (cd maven # One of the tests (#63) needs tools.jar. Fix the path for it sed -i -e s:"\${java.home}/../lib/tools.jar":"$JAVA_HOME/lib/tools.jar":g maven-core-it/it0063/pom.xml (cd integration-tests/maven-core-it-plugin $M2_HOME/bin/mvn -s %{maven_settings_file} $MAVEN_OPTS org.apache.maven.plugins:maven-plugin-plugin:2.1.1-SNAPSHOT:descriptor org.apache.maven.plugins:maven-resources-plugin:2.2-SNAPSHOT:resources org.apache.maven.plugins:maven-compiler-plugin:2.1-SNAPSHOT:compile org.apache.maven.plugins:maven-jar-plugin:2.1-SNAPSHOT:jar org.apache.maven.plugins:maven-install-plugin:2.2-SNAPSHOT:install $M2_HOME/bin/mvn -s %{maven_settings_file} $MAVEN_OPTS org.apache.maven.plugins:maven-install-plugin:2.2-SNAPSHOT:install-file -DgroupId=org.apache.maven.plugins -DartifactId=maven-core-it-plugin -Dversion=%{version}-JPP -Dpackaging=maven-plugin -Dfile=target/maven-core-it-plugin-1.0-SNAPSHOT.jar ) for i in `find integration-tests/maven-core-it-support -name pom.xml`; do cd `dirname $i` # {{{ $M2_HOME/bin/mvn -s %{maven_settings_file} $MAVEN_OPTS org.apache.maven.plugins:maven-plugin-plugin:2.1.1-SNAPSHOT::descriptor org.apache.maven.plugins:maven-resources-plugin:2.2-SNAPSHOT:resources org.apache.maven.plugins:maven-compiler-plugin:2.1-SNAPSHOT:compile org.apache.maven.plugins:maven-jar-plugin:2.1-SNAPSHOT:jar org.apache.maven.plugins:maven-install-plugin:2.2-SNAPSHOT:install cd - # }}} done # Test 41 expects core-it-support 1.2 to be packed as a coreit-artifact (cd integration-tests/maven-core-it-support/1.2 $M2_HOME/bin/mvn -s %{maven_settings_file} $MAVEN_OPTS org.apache.maven.plugins:maven-install-plugin:2.2-SNAPSHOT:install-file -DgroupId=org.apache.maven -DartifactId=maven-core-it-support -Dversion=1.2 -Dpackaging=coreit-artifact -Dfile=target/maven-core-it-support-1.2.jar ) OLD_MAVEN_OPTS=$MAVEN_OPTS MAVEN_OPTS="$MAVEN_OPTS -Dmaven.settings.file=$M2_SETTINGS_FILE -Dmaven2.ignore.versions -Dmaven2.jpp.mode -Dmaven2.jpp.mode=true" sh -x %{SOURCE9} export MAVEN_OPTS=$OLD_MAVEN_OPTS ) %endif # Build docs # Manual iteration should not be needed, but there is a bug in the javadoc # plugin which makes this necessary. See: # http://jira.codehaus.org/browse/MJAVADOC-157 (cd maven # {{{ for dir in `find -maxdepth 1 -type d`; do if [ "$dir" == "./maven-core-it-runner" ]; then continue fi if [ ! -f $dir/pom.xml ]; then continue fi cd $dir # {{{ $M2_HOME/bin/mvn -s %{maven_settings_file} $MAVEN_OPTS -Dmaven2.usejppjars org.apache.maven.plugins:maven-javadoc-plugin:2.3-SNAPSHOT:javadoc cd - # }}} done ) # }}} (cd maven-plugins # {{{ for dir in `find -maxdepth 1 -type d`; do if [ "$dir" == "./maven-clover-plugin" ]; then continue fi if [ ! -f $dir/pom.xml ]; then continue fi cd $dir # {{{ $M2_HOME/bin/mvn -s %{maven_settings_file} $MAVEN_OPTS -Dmaven2.usejppjars org.apache.maven.plugins:maven-javadoc-plugin:2.3-SNAPSHOT:javadoc cd - # }}} done ) # }}} ### }}} ### install {{{ %install rm -rf $RPM_BUILD_ROOT export M2_HOME=$(pwd)/maven/home/apache-%{name}-%{version} # Repository install -dm 755 $RPM_BUILD_ROOT%{_datadir}/%{name}/repository # Items in /usr/bin/ install -dm 755 $RPM_BUILD_ROOT%{_bindir} install -pm 755 %{SOURCE5} $RPM_BUILD_ROOT%{_bindir}/mvn install -pm 755 %{SOURCE15} $RPM_BUILD_ROOT%{_bindir}/mvn-jpp # maven.home install -dm 755 $RPM_BUILD_ROOT%{_datadir}/%{name} install -dm 755 $RPM_BUILD_ROOT%{_datadir}/%{name}/bin cp -p $M2_HOME/bin/* $RPM_BUILD_ROOT%{_datadir}/%{name}/bin install -dm 755 $RPM_BUILD_ROOT%{_datadir}/%{name}/boot %if %{with bootstrap} cp -p $M2_HOME/boot/classworlds* $RPM_BUILD_ROOT%{_datadir}/%{name}/boot/classworlds.jar %endif install -dm 755 $RPM_BUILD_ROOT%{_datadir}/%{name}/conf install -m 644 $M2_HOME/conf/* $RPM_BUILD_ROOT%{_datadir}/%{name}/conf install -dm 755 $RPM_BUILD_ROOT%{_datadir}/%{name}/lib cp -p $M2_HOME/lib/* $RPM_BUILD_ROOT%{_datadir}/%{name}/lib # Also, link maven jars from /usr/share/java install -dm 755 $RPM_BUILD_ROOT%{_javadir}/%{name} for library in $RPM_BUILD_ROOT%{_datadir}/%{name}/lib/maven-%{version}-uber.jar; do ln -s ../../%{name}/lib/`basename $library` $RPM_BUILD_ROOT%{_javadir}/%{name}/maven-uber.jar done # Install component poms and jars install -dm 755 $RPM_BUILD_ROOT%{_datadir}/%{name}/poms cd %{name} # {{{ for project in maven-artifact \ maven-artifact-manager \ maven-artifact-test \ maven-core \ maven-error-diagnostics \ maven-model \ maven-monitor \ maven-plugin-api \ maven-plugin-descriptor \ maven-plugin-parameter-documenter \ maven-plugin-registry \ maven-profile \ maven-project \ maven-repository-metadata \ maven-settings; do artifactname=`echo $project | sed -e s:^maven-::g` cp -p $project/pom.xml $RPM_BUILD_ROOT%{_datadir}/%{name}/poms/JPP.%{name}-$artifactname.pom # dependency fragments %add_to_maven_depmap org.apache.maven $project %{version} JPP/%{name} $artifactname install -m 644 $project/target/$project-%{version}.jar $RPM_BUILD_ROOT%{_javadir}/%{name}/$artifactname-%{version}.jar %if %{without bootstrap} if [ "$project" == "maven-model" ]; then install -m 644 $project/target/$project-%{version}-all.jar $RPM_BUILD_ROOT%{_javadir}/%{name}/$artifactname-all-%{version}.jar fi %endif done cd - # }}} # reporting api cp -p %{name}/maven-reporting/maven-reporting-api/pom.xml $RPM_BUILD_ROOT%{_datadir}/%{name}/poms/JPP.%{name}-reporting-api.pom %add_to_maven_depmap org.apache.maven.reporting maven-reporting-api %{version} JPP/%{name} reporting-api install -m 644 %{name}/maven-reporting/maven-reporting-api/target/*jar $RPM_BUILD_ROOT%{_javadir}/%{name}/reporting-api-%{version}.jar # script, script-ant and script-beanshell cp -p %{name}/maven-script/pom.xml $RPM_BUILD_ROOT%{_datadir}/%{name}/poms/JPP.%{name}-script.pom %add_to_maven_depmap org.apache.maven maven-script %{version} JPP/%{name} script cp -p %{name}/maven-script/maven-script-ant/pom.xml $RPM_BUILD_ROOT%{_datadir}/%{name}/poms/JPP.%{name}-script-ant.pom %add_to_maven_depmap org.apache.maven maven-script-ant %{version} JPP/%{name} script-ant install -pm 644 %{name}/maven-script/maven-script-ant/target/maven-script-ant-%{version}.jar $RPM_BUILD_ROOT%{_javadir}/%{name}/script-ant-%{version}.jar cp -p %{name}/maven-script/maven-script-beanshell/pom.xml $RPM_BUILD_ROOT%{_datadir}/%{name}/poms/JPP.%{name}-script-beanshell.pom %add_to_maven_depmap org.apache.maven maven-script-beanshell %{version} JPP/%{name} script-beanshell install -pm 644 %{name}/maven-script/maven-script-beanshell/target/maven-script-beanshell-%{version}.jar $RPM_BUILD_ROOT%{_javadir}/%{name}/script-beanshell-%{version}.jar # reporting pom cp -p %{name}/maven-reporting/pom.xml $RPM_BUILD_ROOT%{_datadir}/%{name}/poms/JPP.%{name}-reporting.pom %add_to_maven_depmap org.apache.maven.reporting maven-reporting %{version} JPP/%{name} reporting # maven pom cp -p %{name}/pom.xml $RPM_BUILD_ROOT%{_datadir}/%{name}/poms/JPP.%{name}-maven.pom %add_to_maven_depmap org.apache.maven maven %{version} JPP/%{name} maven # Create versionless symlinks (cd $RPM_BUILD_ROOT%{_javadir}/%{name} && for jar in *-%{version}*; do ln -sf ${jar} `echo $jar | sed "s|-%{version}||g"`; done) # plugins install -dm 755 $RPM_BUILD_ROOT%{_datadir}/%{name}/plugins/ cd maven-plugins # {{{ for targetdir in `find -mindepth 2 -maxdepth 2 -type d -name target`; do # Find the version version pluginname=`echo $targetdir | sed -e s:"^\\./"::g -e s:"/target$"::g` pluginversion=`ls $targetdir/*jar | awk -F / '{print $NF}' | sed -e s:"^$pluginname-"::g -e s:"\\.jar$"::g` artifactname=`echo $pluginname | sed -e s:^maven-::g` #jar cp -p $targetdir/*jar $RPM_BUILD_ROOT%{_datadir}/%{name}/plugins/$artifactname-$pluginversion.jar ln -s $artifactname-$pluginversion.jar $RPM_BUILD_ROOT%{_datadir}/%{name}/plugins/$artifactname.jar # pom cp -p `dirname $targetdir`/pom.xml $RPM_BUILD_ROOT%{_datadir}/%{name}/poms/JPP.%{name}.plugins-$artifactname.pom %add_to_maven_depmap org.apache.maven.plugins $pluginname $pluginversion JPP/%{name}/plugins $artifactname done cd - # }}} # g=org.apache.maven.plugins a=maven-plugins needs to be copied manually, as # it get's changed to a=plugins (a=plugins and a=maven-plugins is the same # file, but the former is needed for compatiblity while newer projects use # the latter) cp -p maven-plugins/target/*jar $RPM_BUILD_ROOT%{_datadir}/%{name}/plugins/maven-plugins.jar cp -p maven-plugins/pom.xml $RPM_BUILD_ROOT%{_datadir}/%{name}/poms/JPP.maven.plugins-maven-plugins.pom %add_to_maven_depmap org.apache.maven.plugins maven-plugins 9-SNAPSHOT JPP/%{name}/plugins maven-plugins # The empty dependencies mkdir -p $RPM_BUILD_ROOT%{_datadir}/%{name}/poms mkdir -p $RPM_BUILD_ROOT%{_javadir}/%{name} cp -p %{SOURCE13} $RPM_BUILD_ROOT%{_datadir}/%{name}/poms/JPP.maven-empty-dep.pom cp -p %{SOURCE14} $RPM_BUILD_ROOT%{_javadir}/%{name}/empty-dep.jar # For backwards compatibility ln -s JPP.maven-core.pom $RPM_BUILD_ROOT%{_datadir}/%{name}/poms/JPP.maven-mavencore.pom # javadocs install -dm 755 $RPM_BUILD_ROOT%{_javadocdir}/%{name}-%{version} ln -s %{name}-%{version} $RPM_BUILD_ROOT%{_javadocdir}/%{name} # ghost symlink (cd maven for doc_dir in `find . -type d -name apidocs`; do module=`echo $doc_dir | sed -e s:"^\\./"::g -e s:"/target/site/apidocs$"::g` targetdir=$RPM_BUILD_ROOT%{_javadocdir}/%{name}-%{version}/$module install -dm 755 $targetdir cp -pr $doc_dir/* $targetdir done ) (cd maven-plugins for doc_dir in `find . -type d -name apidocs`; do module=`echo $doc_dir | sed -e s:"^\\./"::g -e s:"/target/site/apidocs$"::g` targetdir=$RPM_BUILD_ROOT%{_javadocdir}/%{name}-%{version}/$module install -dm 755 $targetdir cp -pr $doc_dir/* $targetdir done ) # manual and jpp readme install -dm 755 $RPM_BUILD_ROOT%{_docdir}/%{name}-%{version} cp -p %{name}/home/apache-%{name}-%{version}/*.txt $RPM_BUILD_ROOT%{_docdir}/%{name}-%{version} cp -p %{SOURCE16} $RPM_BUILD_ROOT%{_docdir}/%{name}-%{version} # create appropriate links in /usr/share/java ln -sf %{_datadir}/%{name}/poms $RPM_BUILD_ROOT%{_javadir}/%{name} ln -sf %{_datadir}/%{name}/plugins $RPM_BUILD_ROOT%{_javadir}/%{name} # Create repository links ln -s %{_javadir} $RPM_BUILD_ROOT%{_datadir}/%{name}/repository/JPP # Create the bootstrap repo %if %{with bootstrap} install -dm 755 $RPM_BUILD_ROOT%{_datadir}/%{name}/bootstrap_repo tar xzf %{SOURCE4} mv m2_repo/repository/JPP $RPM_BUILD_ROOT%{_datadir}/%{name}/bootstrap_repo/ rmdir -p m2_repo/repository %endif %if %{with repolib} install -d -m 755 $RPM_BUILD_ROOT%{repodir} install -d -m 755 $RPM_BUILD_ROOT%{repodirlib} install -p -m 644 %{SOURCE100} $RPM_BUILD_ROOT%{repodir}/component-info.xml sed -i 's/@VERSION@/%{version}-brew/g' $RPM_BUILD_ROOT%{repodir}/component-info.xml tag=`echo %{name}-%{version}-%{release} | sed 's|\.|_|g'` sed -i "s/@TAG@/$tag/g" $RPM_BUILD_ROOT%{repodir}/component-info.xml install -d -m 755 $RPM_BUILD_ROOT%{repodirsrc} install -p -m 644 %{SOURCE0} $RPM_BUILD_ROOT%{repodirsrc} install -p -m 644 %{SOURCE2} $RPM_BUILD_ROOT%{repodirsrc} install -p -m 644 %{SOURCE3} $RPM_BUILD_ROOT%{repodirsrc} install -p -m 644 %{SOURCE4} $RPM_BUILD_ROOT%{repodirsrc} install -p -m 644 %{SOURCE5} $RPM_BUILD_ROOT%{repodirsrc} install -p -m 644 %{SOURCE6} $RPM_BUILD_ROOT%{repodirsrc} install -p -m 644 %{SOURCE7} $RPM_BUILD_ROOT%{repodirsrc} install -p -m 644 %{SOURCE8} $RPM_BUILD_ROOT%{repodirsrc} install -p -m 644 %{SOURCE9} $RPM_BUILD_ROOT%{repodirsrc} install -p -m 644 %{SOURCE10} $RPM_BUILD_ROOT%{repodirsrc} install -p -m 644 %{SOURCE11} $RPM_BUILD_ROOT%{repodirsrc} install -p -m 644 %{SOURCE12} $RPM_BUILD_ROOT%{repodirsrc} install -p -m 644 %{SOURCE13} $RPM_BUILD_ROOT%{repodirsrc} install -p -m 644 %{SOURCE14} $RPM_BUILD_ROOT%{repodirsrc} install -p -m 644 %{SOURCE15} $RPM_BUILD_ROOT%{repodirsrc} install -p -m 644 %{SOURCE16} $RPM_BUILD_ROOT%{repodirsrc} install -p -m 644 %{SOURCE17} $RPM_BUILD_ROOT%{repodirsrc} install -p -m 644 %{SOURCE22} $RPM_BUILD_ROOT%{repodirsrc} install -p -m 644 %{PATCH0} $RPM_BUILD_ROOT%{repodirsrc} install -p -m 644 %{PATCH1} $RPM_BUILD_ROOT%{repodirsrc} install -p -m 644 %{PATCH2} $RPM_BUILD_ROOT%{repodirsrc} install -p -m 644 %{PATCH3} $RPM_BUILD_ROOT%{repodirsrc} install -p -m 644 %{PATCH4} $RPM_BUILD_ROOT%{repodirsrc} install -p -m 644 %{PATCH5} $RPM_BUILD_ROOT%{repodirsrc} install -p -m 644 %{PATCH6} $RPM_BUILD_ROOT%{repodirsrc} install -p -m 644 %{PATCH7} $RPM_BUILD_ROOT%{repodirsrc} install -p -m 644 %{PATCH8} $RPM_BUILD_ROOT%{repodirsrc} install -p -m 644 %{PATCH9} $RPM_BUILD_ROOT%{repodirsrc} install -p -m 644 %{PATCH10} $RPM_BUILD_ROOT%{repodirsrc} install -p -m 644 %{PATCH11} $RPM_BUILD_ROOT%{repodirsrc} install -p -m 644 %{PATCH12} $RPM_BUILD_ROOT%{repodirsrc} install -p -m 644 %{PATCH14} $RPM_BUILD_ROOT%{repodirsrc} install -p -m 644 %{PATCH16} $RPM_BUILD_ROOT%{repodirsrc} install -p -m 644 %{PATCH18} $RPM_BUILD_ROOT%{repodirsrc} for jar in project.jar settings.jar model.jar profile.jar artifact-manager.jar repository-metadata.jar artifact.jar plugin-registry.jar error-diagnostics.jar; do cp -p %{buildroot}%{_javadir}/%{name}/${jar} %{buildroot}%{repodirlib}/maven-${jar} done %endif ### }}} %clean rm -rf $RPM_BUILD_ROOT %post # clear the old links find %{_datadir}/%{name}/boot/ -type l -exec rm -f '{}' \; find %{_datadir}/%{name}/lib/ -type l -exec rm -f '{}' \; %if %{without bootstrap} build-jar-repository -s -p %{_datadir}/%{name}/boot classworlds build-jar-repository -s -p %{_datadir}/%{name}/lib \ commons-cli \ commons-lang \ commons-logging \ jsch \ jtidy \ maven-doxia/sink-api \ maven-wagon/file \ maven-wagon/http-lightweight \ maven-wagon/http-shared \ maven-wagon/provider-api \ maven-wagon/ssh \ maven-wagon/ssh-common \ maven-wagon/ssh-external \ plexus/container-default \ plexus/interactivity-api \ plexus/utils %endif build-jar-repository -s -p %{_datadir}/%{name}/lib \ jdom %update_maven_depmap # We create links in %post in the dir's below. rm -rf them. %preun -n %{name} [ $1 = 0 ] || exit 0 rm -rf %{_datadir}/%{name}/lib/* rm -rf %{_datadir}/%{name}/core/* %postun # FIXME: This doesn't always remove the plugins dir. It seems that rpm doesn't # honour the Requires(postun) as it should, causing maven to get uninstalled # before some plugins are if [ -d %{_javadir}/%{name} ] ; then rmdir --ignore-fail-on-non-empty %{_javadir}/%{name} >& /dev/null; fi %update_maven_depmap %files -n %{name} %defattr(-,root,root,-) %doc %{name}/maven-core/*.txt %attr(0755,root,root) %{_bindir}/mvn %attr(0755,root,root) %{_bindir}/mvn-jpp %dir %{_datadir}/%{name} %dir %{_datadir}/%{name}/bin %{_datadir}/%{name}/bin/*.bat %config(noreplace) %{_datadir}/%{name}/bin/*.conf %attr(0755,root,root) %{_datadir}/%{name}/bin/m2 %attr(0755,root,root) %{_datadir}/%{name}/bin/mvn %attr(0755,root,root) %{_datadir}/%{name}/bin/mvnDebug %{_datadir}/%{name}/boot %{_datadir}/%{name}/conf %{_datadir}/%{name}/lib %{_datadir}/%{name}/plugins/maven-plugins*jar %dir %{_datadir}/%{name}/plugins %{_datadir}/%{name}/poms %{_datadir}/%{name}/repository %{_mavendepmapfragdir} %{_javadir}/%{name} %if %{with bootstrap} %{_datadir}/%{name}/bootstrap_repo %endif %files javadoc %defattr(-,root,root,-) %doc %{_javadocdir}/* %files manual %defattr(-,root,root,-) %doc %{_docdir}/%{name}-%{version} %files plugin-ant %defattr(-,root,root,-) %dir %{_datadir}/%{name}/plugins %{_datadir}/%{name}/plugins/ant-plugin*.jar %files plugin-antlr %defattr(-,root,root,-) %dir %{_datadir}/%{name}/plugins %{_datadir}/%{name}/plugins/antlr-plugin*.jar %files plugin-antrun %defattr(-,root,root,-) %dir %{_datadir}/%{name}/plugins %{_datadir}/%{name}/plugins/antrun-plugin*.jar %files plugin-assembly %defattr(-,root,root,-) %dir %{_datadir}/%{name}/plugins %{_datadir}/%{name}/plugins/assembly-plugin*.jar %files plugin-changelog %defattr(-,root,root,-) %dir %{_datadir}/%{name}/plugins %{_datadir}/%{name}/plugins/changelog-plugin*.jar %files plugin-changes %defattr(-,root,root,-) %dir %{_datadir}/%{name}/plugins %{_datadir}/%{name}/plugins/changes-plugin*.jar %files plugin-checkstyle %defattr(-,root,root,-) %dir %{_datadir}/%{name}/plugins %{_datadir}/%{name}/plugins/checkstyle-plugin*.jar %files plugin-clean %defattr(-,root,root,-) %dir %{_datadir}/%{name}/plugins %{_datadir}/%{name}/plugins/clean-plugin*.jar %files plugin-compiler %defattr(-,root,root,-) %dir %{_datadir}/%{name}/plugins %{_datadir}/%{name}/plugins/compiler-plugin*.jar %files plugin-dependency %defattr(-,root,root,-) %dir %{_datadir}/%{name}/plugins %{_datadir}/%{name}/plugins/dependency-plugin*.jar %files plugin-deploy %defattr(-,root,root,-) %dir %{_datadir}/%{name}/plugins %{_datadir}/%{name}/plugins/deploy-plugin*.jar %files plugin-doap %defattr(-,root,root,-) %dir %{_datadir}/%{name}/plugins %{_datadir}/%{name}/plugins/doap-plugin*.jar %files plugin-docck %defattr(-,root,root,-) %dir %{_datadir}/%{name}/plugins %{_datadir}/%{name}/plugins/docck-plugin*.jar %files plugin-ear %defattr(-,root,root,-) %dir %{_datadir}/%{name}/plugins %{_datadir}/%{name}/plugins/ear-plugin*.jar %files plugin-eclipse %defattr(-,root,root,-) %dir %{_datadir}/%{name}/plugins %{_datadir}/%{name}/plugins/eclipse-plugin*.jar %files plugin-ejb %defattr(-,root,root,-) %dir %{_datadir}/%{name}/plugins %{_datadir}/%{name}/plugins/ejb-plugin*.jar %files plugin-gpg %defattr(-,root,root,-) %dir %{_datadir}/%{name}/plugins %{_datadir}/%{name}/plugins/gpg-plugin*.jar %files plugin-help %defattr(-,root,root,-) %dir %{_datadir}/%{name}/plugins %{_datadir}/%{name}/plugins/help-plugin*.jar %files plugin-idea %defattr(-,root,root,-) %dir %{_datadir}/%{name}/plugins %{_datadir}/%{name}/plugins/idea-plugin*.jar %files plugin-install %defattr(-,root,root,-) %dir %{_datadir}/%{name}/plugins %{_datadir}/%{name}/plugins/install-plugin*.jar %files plugin-invoker %defattr(-,root,root,-) %dir %{_datadir}/%{name}/plugins %{_datadir}/%{name}/plugins/invoker-plugin*.jar %files plugin-jar %defattr(-,root,root,-) %dir %{_datadir}/%{name}/plugins %{_datadir}/%{name}/plugins/jar-plugin*.jar %files plugin-javadoc %defattr(-,root,root,-) %dir %{_datadir}/%{name}/plugins %{_datadir}/%{name}/plugins/javadoc-plugin*.jar %files plugin-one %defattr(-,root,root,-) %dir %{_datadir}/%{name}/plugins %{_datadir}/%{name}/plugins/one-plugin*.jar %files plugin-plugin %defattr(-,root,root,-) %dir %{_datadir}/%{name}/plugins %{_datadir}/%{name}/plugins/plugin-plugin*.jar %files plugin-pmd %defattr(-,root,root,-) %dir %{_datadir}/%{name}/plugins %{_datadir}/%{name}/plugins/pmd-plugin*.jar %files plugin-project-info-reports %defattr(-,root,root,-) %dir %{_datadir}/%{name}/plugins %{_datadir}/%{name}/plugins/project-info-reports-plugin*.jar %files plugin-rar %defattr(-,root,root,-) %dir %{_datadir}/%{name}/plugins %{_datadir}/%{name}/plugins/rar-plugin*.jar %files plugin-remote-resources %defattr(-,root,root,-) %dir %{_datadir}/%{name}/plugins %{_datadir}/%{name}/plugins/remote-resources-plugin*.jar %files plugin-repository %defattr(-,root,root,-) %dir %{_datadir}/%{name}/plugins %{_datadir}/%{name}/plugins/repository-plugin*.jar %files plugin-resources %defattr(-,root,root,-) %dir %{_datadir}/%{name}/plugins %{_datadir}/%{name}/plugins/resources-plugin*.jar %files plugin-site %defattr(-,root,root,-) %dir %{_datadir}/%{name}/plugins %{_datadir}/%{name}/plugins/site-plugin*.jar %files plugin-source %defattr(-,root,root,-) %dir %{_datadir}/%{name}/plugins %{_datadir}/%{name}/plugins/source-plugin*.jar %files plugin-stage %defattr(-,root,root,-) %dir %{_datadir}/%{name}/plugins %{_datadir}/%{name}/plugins/stage-plugin*.jar %files plugin-verifier %defattr(-,root,root,-) %dir %{_datadir}/%{name}/plugins %{_datadir}/%{name}/plugins/verifier-plugin*.jar %files plugin-war %defattr(-,root,root,-) %dir %{_datadir}/%{name}/plugins %{_datadir}/%{name}/plugins/war-plugin*.jar %if %{with repolib} %files repolib %defattr(0644,root,root,0755) %{_javadir}/repository.jboss.com %endif