Package maven-archetype: Specfile

Packager: Igor Vlasenko <viy@altlinux.ru>
%define _without_maven 1
BuildRequires: /proc
BuildRequires: jpackage-compat
%define version 1.0
%define name maven-archetype
# Copyright (c) 2000-2008, JPackage Project
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
#
# 1. Redistributions of source code must retain the above copyright
#    notice, this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright
#    notice, this list of conditions and the following disclaimer in the
#    documentation and/or other materials provided with the
#    distribution.
# 3. Neither the name of the JPackage Project nor the names of its
#    contributors may be used to endorse or promote products derived
#    from this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#


# If you don't want to build with maven, and use straight ant instead,
# give rpmbuild option '--without maven'

%define with_maven %{!?_without_maven:1}%{?_without_maven:0}
%define without_maven %{?_without_maven:1}%{!?_without_maven:0}

%define bname archetype
%define namedversion 1.0-alpha-7 

%define maven_settings_file %{_builddir}/%{name}/settings.xml

Name:           maven-archetype
Version:        1.0
Release:        alt3_0.a7.1jpp5
Epoch:          0
Summary:        Maven Release
License:        Apache Software License 2.0
Group:          Development/Java
URL:            http://maven.apache.org/
Source0:        %{name}-%{namedversion}.tar.gz
# svn export http://svn.apache.org/repos/asf/maven/archetype/tags/maven-archetype-1.0-alpha-7/

Source1:        %{name}-build.xml
Source2:        %{name}-jpp-depmap.xml
Source3:        %{name}-settings.xml
Source4:        %{name}-parent-2.pom
Source5:        %{name}-autogenerated-files.tar.gz
Patch0:         %{name}-core-pom.patch


BuildArch:      noarch
BuildRequires: jpackage-utils >= 0:1.7.4
BuildRequires: ant >= 0:1.6.5
BuildRequires: junit
%if %{with_maven}
BuildRequires: maven2-common-poms
BuildRequires: maven2 >= 0:2.0.7
BuildRequires: maven2-plugin-ant
BuildRequires: maven2-plugin-compiler
BuildRequires: maven2-plugin-docck
BuildRequires: maven2-plugin-install
BuildRequires: maven2-plugin-jar
BuildRequires: maven2-plugin-javadoc
BuildRequires: maven2-plugin-plugin
BuildRequires: maven2-plugin-resources
BuildRequires: maven-surefire-plugin
BuildRequires: maven-release
BuildRequires: maven-wagon
BuildRequires: modello >= 1.0-0.a17
BuildRequires: plexus-maven-plugin >= 0:1.3.5
%endif
BuildRequires: classworlds
BuildRequires: dom4j >= 0:1.6.1
BuildRequires: oro
BuildRequires: plexus-archiver
BuildRequires: plexus-container-default
BuildRequires: plexus-utils
BuildRequires: plexus-velocity
BuildRequires: maven2 >= 0:2.0.7
BuildRequires: maven-shared-downloader
BuildRequires: maven-wagon
BuildRequires: modello10 >= 0:1.0-0.a17
BuildRequires: geronimo-jta-1.0.1B-api

Requires: dom4j
Requires: maven2 >= 0:2.0.7
Requires: maven-shared-downloader
Requires: maven-wagon
Requires: oro
Requires: plexus-archiver
Requires: plexus-container-default
Requires: plexus-utils
BuildRequires: plexus-velocity

Requires(post): jpackage-utils >= 0:1.7.4
Requires(postun): jpackage-utils >= 0:1.7.4


%description
Maven Archetypes

%package javadoc
Summary:        Javadoc for %{name}
Group:          Development/Documentation
BuildArch: noarch

%description javadoc
%{summary}.

%prep
%setup -q -n %{name}-%{namedversion}
cp %{SOURCE1} build.xml
cp %{SOURCE3} settings.xml
#gzip -dc %{SOURCE5} | tar xf -
sed -i -e "s|<url>__JPP_URL_PLACEHOLDER__</url>|<url>file://`pwd`/.m2/repository</url>|g" settings.xml
sed -i -e "s|<url>__JAVADIR_PLACEHOLDER__</url>|<url>file://`pwd`/external_repo</url>|g" settings.xml
sed -i -e "s|<url>__MAVENREPO_DIR_PLACEHOLDER__</url>|<url>file://`pwd`/.m2/repository</url>|g" settings.xml
%if %{without_maven}
gzip -dc %{SOURCE5} | tar xf -
%endif
%patch0 -b .sav0

%build

export MAVEN_REPO_LOCAL=$(pwd)/.m2/repository
mkdir -p $MAVEN_REPO_LOCAL
mkdir -p $MAVEN_REPO_LOCAL/JPP/maven2/default_poms/
cp %{SOURCE4} $MAVEN_REPO_LOCAL/JPP/maven2/default_poms/org.apache.maven.archetype-maven-archetype-parent.pom

mkdir external_repo
ln -s %{_javadir} external_repo/JPP

export M2_SETTINGS=$(pwd)/settings.xml
%if %{with_maven}
mvn-jpp -Dmaven.compile.target=1.5 -Dmaven.javadoc.source=1.5  \
        -e \
        -s $M2_SETTINGS \
        -Dmaven.test.failure.ignore=true \
        -Dmaven2.jpp.depmap.file=%{SOURCE2} \
        -Dmaven.repo.local=$MAVEN_REPO_LOCAL \
        ant:ant install javadoc:javadoc
%else
export CLASSPATH=$(build-classpath \
classworlds \
modello10/core \
modello10/plugin-xml \
modello10/plugin-xpp3 \
modello10/plugin-xsd \
plexus/classworlds \
plexus/containers-component-api \
plexus/containers-container-default \
plexus/utils \
)

pushd maven-archetype-model
java org.codehaus.modello.ModelloCli src/main/mdo/archetype.mdo xpp3-reader src/main/java 1.0.0 false
java org.codehaus.modello.ModelloCli src/main/mdo/archetype.mdo java src/main/java 1.0.0 false
java org.codehaus.modello.ModelloCli src/main/mdo/archetype.mdo xpp3-writer src/main/java 1.0.0 false
java org.codehaus.modello.ModelloCli src/main/mdo/archetype.mdo xsd src/main/java 1.0.0 false
popd

export CLASSPATH=$(build-classpath \
classworlds \
commons-lang \
dom4j \
maven2/artifact \
maven2/artifact-manager \
maven2/model \
maven2/plugin-api \
maven2/profile \
maven2/project \
maven2/repository-metadata \
maven-shared/downloader \
maven-wagon/file \
maven-wagon/provider-api \
oro \
plexus/archiver \
plexus/container-default \
plexus/utils \
plexus/velocity \
velocity \
)
CLASSPATH=$CLASSPATH:target/classes:target/test-classes
CLASSPATH=$CLASSPATH:src/test/resources
pushd maven-archetype-model
ant -Dant.build.javac.source=1.5 -Dant.build.javac.target=1.5 -Dmaven.settings.offline=true -Dbuild.sysclasspath=only jar javadoc
popd
CLASSPATH=$CLASSPATH:$(pwd)/maven-archetype-model/target/maven-archetype-model-%{namedversion}.jar
pushd maven-archetype-core
ant -Dant.build.javac.source=1.5 -Dant.build.javac.target=1.5 -Dmaven.settings.offline=true -Dbuild.sysclasspath=only jar javadoc
popd
CLASSPATH=$CLASSPATH:$(pwd)/maven-archetype-core/target/maven-archetype-core-%{namedversion}.jar
pushd maven-archetype-creator
ant -Dant.build.javac.source=1.5 -Dant.build.javac.target=1.5 -Dmaven.settings.offline=true -Dbuild.sysclasspath=only jar javadoc
popd
CLASSPATH=$CLASSPATH:$(pwd)/maven-archetype-creator/target/maven-archetype-creator-%{namedversion}.jar
pushd maven-archetype-plugin
ant -Dant.build.javac.source=1.5 -Dant.build.javac.target=1.5 -Dmaven.settings.offline=true -Dbuild.sysclasspath=only jar javadoc
popd
%endif

%install
# jars/poms
install -d -m 755 $RPM_BUILD_ROOT%{_javadir}/%{name}
install -d -m 755 $RPM_BUILD_ROOT%{_datadir}/maven2/poms
install -d -m 755 $RPM_BUILD_ROOT%{_datadir}/maven2/plugins

%add_to_maven_depmap org.apache.maven.archetype %{name}-parent 2 JPP/maven-archetype parent
install -m 644 %{SOURCE4} $RPM_BUILD_ROOT/%{_datadir}/maven2/poms/JPP.maven-archetype-parent.pom

%add_to_maven_depmap org.apache.maven.archetype %{name} %{version} JPP/maven-archetype archetype
install -m 644 pom.xml $RPM_BUILD_ROOT/%{_datadir}/maven2/poms/JPP.maven-archetype-archetype.pom

install -m 644 %{name}-core/target/%{name}-core-%{namedversion}.jar \
               $RPM_BUILD_ROOT%{_javadir}/%{name}/core-%{namedversion}.jar
%add_to_maven_depmap org.apache.maven.archetype %{name}-core %{namedversion} JPP/%{name} core
install -m 644 %{name}-core/pom.xml $RPM_BUILD_ROOT/%{_datadir}/maven2/poms/JPP.%{name}-core.pom

install -m 644 %{name}-creator/target/%{name}-creator-%{namedversion}.jar \
               $RPM_BUILD_ROOT%{_javadir}/%{name}/creator-%{namedversion}.jar
%add_to_maven_depmap org.apache.maven.archetype %{name}-creator %{namedversion} JPP/%{name} creator
install -m 644 %{name}-creator/pom.xml $RPM_BUILD_ROOT/%{_datadir}/maven2/poms/JPP.%{name}-creator.pom

install -m 644 %{name}-model/target/%{name}-model-%{namedversion}.jar \
               $RPM_BUILD_ROOT%{_javadir}/%{name}/model-%{namedversion}.jar
%add_to_maven_depmap org.apache.maven.archetype %{name}-model %{namedversion} JPP/%{name} model
install -m 644 %{name}-model/pom.xml $RPM_BUILD_ROOT/%{_datadir}/maven2/poms/JPP.%{name}-model.pom

(cd $RPM_BUILD_ROOT%{_javadir}/%{name} && for jar in *-%{namedversion}*; do ln -sf ${jar} `echo $jar| sed  "s|-%{namedversion}||g"`; done)

install -m 644 %{name}-plugin/target/%{name}-plugin-%{namedversion}.jar \
    $RPM_BUILD_ROOT%{_datadir}/maven2/plugins/archetype-plugin-%{namedversion}.jar
%add_to_maven_depmap org.apache.maven.plugins %{name}-plugin %{namedversion} JPP/maven2/plugins archetype-plugin
install -m 644 %{name}-plugin/pom.xml \
    $RPM_BUILD_ROOT%{_datadir}/maven2/poms/JPP.maven2.plugins-archetype-plugin.pom
(cd $RPM_BUILD_ROOT%{_datadir}/maven2/plugins && for jar in *-%{namedversion}*; do ln -sf ${jar} `echo $jar| sed  "s|-%{namedversion}||g"`; done)


# javadoc
install -d -m 755 $RPM_BUILD_ROOT%{_javadocdir}/%{name}-%{version}/model
cp -pr %{name}-model/target/site/apidocs/* \
                    $RPM_BUILD_ROOT%{_javadocdir}/%{name}-%{version}/model
install -d -m 755 $RPM_BUILD_ROOT%{_javadocdir}/%{name}-%{version}/core
cp -pr %{name}-core/target/site/apidocs/* \
                    $RPM_BUILD_ROOT%{_javadocdir}/%{name}-%{version}/core
install -d -m 755 $RPM_BUILD_ROOT%{_javadocdir}/%{name}-%{version}/creator
cp -pr %{name}-creator/target/site/apidocs/* \
                    $RPM_BUILD_ROOT%{_javadocdir}/%{name}-%{version}/creator
install -d -m 755 $RPM_BUILD_ROOT%{_javadocdir}/%{name}-%{version}/plugin
cp -pr %{name}-plugin/target/site/apidocs/* \
                    $RPM_BUILD_ROOT%{_javadocdir}/%{name}-%{version}/plugin
ln -s %{name}-%{version} $RPM_BUILD_ROOT%{_javadocdir}/%{name} # ghost symlink

%post javadoc
rm -f %{_javadocdir}/%{name}
ln -s %{name}-%{version} %{_javadocdir}/%{name}

%postun javadoc
if [ "$1" = "0" ]; then
  rm -f %{_javadocdir}/%{name}
fi

%files
%{_javadir}/%{name}
%{_datadir}/maven2
%{_mavendepmapfragdir}

%files javadoc
%doc %{_javadocdir}/%{name}-%{version}
%ghost %doc %{_javadocdir}/%{name}

%changelog
* Mon Jan 31 2011 Igor Vlasenko <viy@altlinux.ru> 0:1.0-alt3_0.a7.1jpp5
- build with modello10

* Wed May 12 2010 Igor Vlasenko <viy@altlinux.ru> 0:1.0-alt2_0.a7.1jpp5
- fixes for java6 support

* Sat Feb 07 2009 Igor Vlasenko <viy@altlinux.ru> 0:1.0-alt1_0.a7.1jpp5
- new version; for maven 2.0.7