%bcond_with cifs
%bcond_with ftp
%bcond_with hadoop
%bcond_with mina
Name: apache-commons-vfs
Version: 2.9.0
Release: %autorelease
Summary: Commons Virtual File System
License: Apache-2.0
BuildArch: noarch
ExclusiveArch: %{java_arches} noarch
URL: https://commons.apache.org/proper/commons-vfs/
Source0: https://archive.apache.org/dist/commons/vfs/source/commons-vfs-%{version}-src.tar.gz
Source1: https://archive.apache.org/dist/commons/vfs/source/commons-vfs-%{version}-src.tar.gz.asc
Source2: https://downloads.apache.org/commons/KEYS
# Migrate from the old commons-httpclient, which is no longer available in
# Fedora, to the newer httpcomponents httpclient.
Patch0: %{name}-httpclient.patch
BuildRequires: gnupg2
BuildRequires: maven-local
BuildRequires: mvn(com.jcraft:jsch)
BuildRequires: mvn(com.sun.mail:jakarta.mail)
BuildRequires: mvn(commons-codec:commons-codec)
BuildRequires: mvn(commons-io:commons-io)
BuildRequires: mvn(commons-logging:commons-logging)
BuildRequires: mvn(commons-net:commons-net)
BuildRequires: mvn(junit:junit)
BuildRequires: mvn(org.apache.ant:ant)
BuildRequires: mvn(org.apache.commons:commons-collections4)
BuildRequires: mvn(org.apache.commons:commons-compress)
BuildRequires: mvn(org.apache.commons:commons-lang3)
BuildRequires: mvn(org.apache.commons:commons-parent:pom:)
BuildRequires: mvn(org.apache.httpcomponents:httpclient)
BuildRequires: mvn(org.apache.httpcomponents:httpcore-nio)
BuildRequires: mvn(org.apache.logging.log4j:log4j-core)
BuildRequires: mvn(org.apache.logging.log4j:log4j-slf4j-impl)
BuildRequires: mvn(org.apache.maven.plugins:maven-antrun-plugin)
BuildRequires: mvn(org.apache.maven.plugins:maven-assembly-plugin)
BuildRequires: mvn(org.apache.maven.plugins:maven-surefire-plugin)
BuildRequires: mvn(org.apache.sshd:sshd-core)
BuildRequires: mvn(org.bouncycastle:bcprov-jdk16)
BuildRequires: mvn(org.mockito:mockito-core)
BuildRequires: mvn(org.slf4j:jcl-over-slf4j)
BuildRequires: mvn(org.slf4j:slf4j-api)
%if %{with hadoop}
BuildRequires: mvn(javax.ws.rs:jsr311-api)
BuildRequires: mvn(org.apache.hadoop:hadoop-common)
BuildRequires: mvn(org.apache.hadoop:hadoop-hdfs)
BuildRequires: mvn(org.apache.hadoop:hadoop-hdfs-client)
%endif
%if %{with ftp}
BuildRequires: mvn(org.apache.ftpserver:ftpserver-core)
%endif
%if %{with cifs}
BuildRequires: mvn(jcifs:jcifs)
%endif
%if %{with mina}
BuildRequires: mvn(org.apache.mina:mina-core)
%endif
Provides: %{name}2 = %{version}-%{release}
%description
Commons VFS provides a single API for accessing various file systems.
It presents a uniform view of the files from various sources, such as
the files on local disk, on an HTTP server, or inside a Zip archive.
Some of the features of Commons VFS are:
* A single consistent API for accessing files of different types.
* Support for numerous file system types.
* Caching of file information. Caches information in-JVM, and
optionally can cache remote file information on the local file
system (replicator).
* Event delivery.
* Support for logical file systems made up of files from various file
systems.
* Utilities for integrating Commons VFS into applications, such as a
VFS-aware ClassLoader and URLStreamHandlerFactory.
* A set of VFS-enabled Ant tasks.
%package ant
Summary: Development files for Commons VFS
Requires: %{name} = %{version}-%{release}
Requires: ant
%description ant
This package enables support for the Commons VFS ant tasks.
%package examples
Summary: Commons VFS Examples
Requires: %{name} = %{version}-%{release}
%description examples
VFS is a Virtual File System library - Examples.
%package project
Summary: Commons VFS Parent POM
%description project
Commons VFS Parent POM.
%javadoc_package
%prep
%{gpgverify} --data=%{SOURCE0} --signature=%{SOURCE1} --keyring=%{SOURCE2}
%autosetup -n commons-vfs-%{version} -p1
# Not needed for RPM builds
%pom_xpath_remove //pom:reporting
%pom_remove_plugin :apache-rat-plugin
%pom_remove_plugin :japicmp-maven-plugin
%pom_remove_plugin :maven-checkstyle-plugin
%pom_remove_plugin :maven-pmd-plugin
%pom_remove_plugin :maven-project-info-reports-plugin
%pom_remove_plugin :spotbugs-maven-plugin
# Disable unwanted module
%pom_disable_module commons-vfs2-distribution
# Fix ant gId
%pom_change_dep -r :ant org.apache.ant:
# Remove webdav client (jackrabbit not packaged)
%pom_remove_dep -r org.apache.jackrabbit:
%pom_disable_module commons-vfs2-jackrabbit1
%pom_disable_module commons-vfs2-jackrabbit2
# Remove http3 client. It needs the old commons-httpclient, which is no
# longer available in Fedora. We support the http4 client.
%pom_remove_dep -r commons-httpclient:commons-httpclient
rm -r commons-vfs2/src/{main,test}/java/org/apache/commons/vfs2/provider/http
rm -r commons-vfs2/src/{main,test}/java/org/apache/commons/vfs2/provider/https
# Remove http5 client (httpclient5 not packaged)
%pom_remove_dep -r org.apache.httpcomponents.client5:httpclient5
rm -r commons-vfs2/src/{main,test}/java/org/apache/commons/vfs2/provider/http5
rm -r commons-vfs2/src/{main,test}/java/org/apache/commons/vfs2/provider/http5s
# hadoop has been retired
%if %{without hadoop}
%pom_remove_dep -r org.apache.hadoop
%pom_remove_dep -r javax.ws.rs
rm -r commons-vfs2/src/{main,test}/java/org/apache/commons/vfs2/provider/hdfs
%endif
# ftpserver is not available
%if %{without ftp}
%pom_remove_dep -r :ftpserver-core
rm -r commons-vfs2/src/{main,test}/java/org/apache/commons/vfs2/provider/ftps
%endif
# jcifs not packaged and also export controlled in the US
%if %{without cifs}
%pom_remove_dep :jcifs
%endif
# mina is not available
%if %{without mina}
%pom_remove_dep :mina-core
%endif
# Fix installation directory and symlink
%mvn_file :commons-vfs2 %{name}
%mvn_file :commons-vfs2 %{name}2
%mvn_file :commons-vfs2 commons-vfs
%mvn_file :commons-vfs2 commons-vfs2
%mvn_file :commons-vfs2-examples %{name}-examples
%mvn_file :commons-vfs2-examples %{name}2-examples
%mvn_file :commons-vfs2-examples commons-vfs-examples
%mvn_file :commons-vfs2-examples commons-vfs2-examples
%mvn_alias :commons-vfs2 "org.apache.commons:commons-vfs" "commons-vfs:commons-vfs"
%mvn_alias :commons-vfs2-examples "org.apache.commons:commons-vfs-examples" "commons-vfs:commons-vfs-examples"
%build
%mvn_build -sf
%install
%mvn_install
mkdir -p %{buildroot}%{_sysconfdir}/ant.d
echo "ant commons-logging commons-vfs" > commons-vfs
install -p -m 644 commons-vfs %{buildroot}%{_sysconfdir}/ant.d/commons-vfs
%files -f .mfiles-commons-vfs2
%doc README.md RELEASE-NOTES.txt
%license LICENSE.txt NOTICE.txt
%files examples -f .mfiles-commons-vfs2-examples
%files project -f .mfiles-commons-vfs2-project
%license LICENSE.txt NOTICE.txt
%files ant
%config(noreplace) %{_sysconfdir}/ant.d/commons-vfs
%changelog
%autochangelog