Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package apache-commons-io.16121 for
openSUSE:Leap:15.2:Update checked in at 2021-04-23 18:05:50
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Leap:15.2:Update/apache-commons-io.16121 (Old)
and
/work/SRC/openSUSE:Leap:15.2:Update/.apache-commons-io.16121.new.12324 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "apache-commons-io.16121"
Fri Apr 23 18:05:50 2021 rev:1 rq:887066 version:2.6
Changes:
--------
New Changes file:
--- /dev/null 2021-04-15 00:52:17.177990775 +0200
+++
/work/SRC/openSUSE:Leap:15.2:Update/.apache-commons-io.16121.new.12324/apache-commons-io.changes
2021-04-23 18:05:51.168364711 +0200
@@ -0,0 +1,95 @@
+-------------------------------------------------------------------
+Wed Apr 14 16:22:24 UTC 2021 - Pedro Monreal <[email protected]>
+
+- Security fix: [bsc#1184755, CVE-2021-29425]
+ * Limited path traversal when invoking the method
+ FileNameUtils.normalize with an improper input string
+ * Add apache-commons-io-CVE-2021-29425.patch
+
+-------------------------------------------------------------------
+Wed Mar 27 10:17:25 UTC 2019 - Fridrich Strba <[email protected]>
+
+- Remove pom parent, since we don't use it when not building with
+ maven
+
+-------------------------------------------------------------------
+Tue Feb 26 17:34:25 UTC 2019 - Fridrich Strba <[email protected]>
+
+- Update to upstream version 2.6
+ * many bugfixes, features and enhancenments, like
+ Automatic-Module-Name entry in manifest
+ * requires jdk7 or later
+ * see RELEASE-NOTES.txt for details
+- Generated a build.xml to be able to build with ant
+- Build with tests is now optional
+- Removed patch:
+ * commons-io-version-property.patch
+ + not needed anymore in this version
+
+-------------------------------------------------------------------
+Tue May 15 10:41:03 UTC 2018 - [email protected]
+
+- Build with source and target 8 to prepare for a possible removal
+ of 1.6 compatibility
+- Run fdupes on documentation
+
+-------------------------------------------------------------------
+Thu Sep 14 11:39:40 UTC 2017 - [email protected]
+
+- Fix build with jdk9 by specifying source and target level 1.6
+
+-------------------------------------------------------------------
+Sun May 21 07:52:44 UTC 2017 - [email protected]
+
+- Remove unused depedencies
+
+-------------------------------------------------------------------
+Fri May 19 09:52:13 UTC 2017 - [email protected]
+
+- New build dependency: javapackages-local
+
+-------------------------------------------------------------------
+Wed Mar 18 09:45:59 UTC 2015 - [email protected]
+
+- Fix build with new javapackages-tools
+
+-------------------------------------------------------------------
+Mon Jul 7 14:53:05 UTC 2014 - [email protected]
+
+- Use junit not junit4
+
+-------------------------------------------------------------------
+Mon Sep 9 11:05:28 UTC 2013 - [email protected]
+
+- Move from jpackage-utils to javapackage-tools
+
+-------------------------------------------------------------------
+Wed Mar 20 12:45:16 UTC 2013 - [email protected]
+
+- Added url as source.
+ Please see http://en.opensuse.org/SourceUrls
+
+-------------------------------------------------------------------
+Thu Oct 25 08:21:33 UTC 2012 - [email protected]
+
+- update to the latest upstream version 2.4 (needed by fop 1.1)
+ * many bugfixes, features and enhancenments, like
+ * XmlStreamReader support for UTF-32
+ * requires jdk6 or later
+ * see RELEASE-NOTES.txt for details
+- rename to apache-commons-io to stay compatible with upstream and fedora
+- add commons-io-version-property.patch to fix the version in build.xml
+
+-------------------------------------------------------------------
+Mon Aug 25 10:26:55 CEST 2008 - [email protected]
+
+- target=1.5
+- removed a build gcj support
+- removed a javadoc %post/postun
+- fixed a wrong end of line encoding
+
+-------------------------------------------------------------------
+Thu Mar 13 11:37:36 CET 2008 - [email protected]
+
+- Initial package created with version 1.3.2 (JPackage 1.7)
+
New:
----
apache-commons-io-CVE-2021-29425.patch
apache-commons-io-build.xml
apache-commons-io.changes
apache-commons-io.spec
commons-io-2.6-src.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ apache-commons-io.spec ++++++
#
# spec file for package apache-commons-io
#
# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
%define base_name io
%define short_name commons-%{base_name}
%bcond_with tests
Name: apache-%{short_name}
Version: 2.6
Release: 0
Summary: Utilities to assist with developing IO functionality
License: Apache-2.0
Group: Development/Libraries/Java
URL: http://commons.apache.org/%{base_name}
Source0:
http://archive.apache.org/dist/commons/%{base_name}/source/%{short_name}-%{version}-src.tar.gz
Source1: %{name}-build.xml
# PATCH-FIX-UPSTREAM bsc#1184755 CVE-2021-29425 Limited path traversal
Patch0: apache-commons-io-CVE-2021-29425.patch
BuildRequires: ant >= 1.6
BuildRequires: fdupes
BuildRequires: java-devel >= 1.8
BuildRequires: javapackages-local
Provides: %{short_name} = %{version}-%{release}
Provides: jakarta-%{short_name} = %{version}-%{release}
Obsoletes: jakarta-%{short_name} < %{version}-%{release}
BuildArch: noarch
%if %{with tests}
BuildRequires: ant-junit
%endif
%description
Commons-IO contains utility classes, stream implementations,
file filters, and endian classes. It is a library of utilities
to assist with developing IO functionality.
%package javadoc
Summary: API documentation for %{name}
Group: Documentation/HTML
%description javadoc
This package provides %{summary}.
%prep
%setup -q -n %{short_name}-%{version}-src
%patch0 -p1
cp %{SOURCE1} build.xml
%pom_remove_parent
%build
%{ant} \
-Dcompiler.source=1.8 \
%if %{without tests }
-Dtest.skip=true \
%endif
jar javadoc
%install
# jars
install -d -m 0755 %{buildroot}%{_javadir}
install -p -m 0644 target/%{short_name}-%{version}.jar \
%{buildroot}%{_javadir}/%{short_name}.jar
ln -sf %{short_name}.jar %{buildroot}%{_javadir}/%{name}.jar
# pom
install -d -m 755 %{buildroot}%{_mavenpomdir}
install -pm 644 pom.xml %{buildroot}%{_mavenpomdir}/%{short_name}.pom
%add_maven_depmap %{short_name}.pom %{short_name}.jar -a
"org.apache.commons:commons-io"
# javadoc
install -d -m 755 %{buildroot}%{_javadocdir}/%{name}
cp -pr target/site/apidocs/* %{buildroot}%{_javadocdir}/%{name}
%fdupes -s %{buildroot}%{_javadocdir}
%files -f .mfiles
%license LICENSE.txt NOTICE.txt
%doc RELEASE-NOTES.txt
%{_javadir}/%{name}.jar
%files javadoc
%doc %{_javadocdir}/%{name}
%changelog
++++++ apache-commons-io-CVE-2021-29425.patch ++++++
>From 2736b6fe0b3fa22ec8e2b4184897ecadb021fc78 Mon Sep 17 00:00:00 2001
From: Stefan Bodewig <[email protected]>
Date: Thu, 21 Dec 2017 13:49:06 +0100
Subject: [PATCH 2088/2940] IO-559 verify hostname part of suspected UNC paths
in FileNameUtils
---
.../org/apache/commons/io/FilenameUtils.java | 147 +++++++++++++++++-
.../commons/io/FilenameUtilsTestCase.java | 18 +++
2 files changed, 164 insertions(+), 1 deletion(-)
Index: commons-io-2.6-src/src/main/java/org/apache/commons/io/FilenameUtils.java
===================================================================
---
commons-io-2.6-src.orig/src/main/java/org/apache/commons/io/FilenameUtils.java
+++ commons-io-2.6-src/src/main/java/org/apache/commons/io/FilenameUtils.java
@@ -19,8 +19,12 @@ package org.apache.commons.io;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.Collection;
+import java.util.List;
import java.util.Stack;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
/**
* General filename and filepath manipulation utilities.
@@ -679,7 +683,9 @@ public class FilenameUtils {
}
posUnix = posUnix == NOT_FOUND ? posWin : posUnix;
posWin = posWin == NOT_FOUND ? posUnix : posWin;
- return Math.min(posUnix, posWin) + 1;
+ int pos = Math.min(posUnix, posWin) + 1;
+ String hostnamePart = filename.substring(2, pos - 1);
+ return isValidHostName(hostnamePart) ? pos : NOT_FOUND;
} else {
return isSeparator(ch0) ? 1 : 0;
}
@@ -1450,4 +1456,143 @@ public class FilenameUtils {
return list.toArray( new String[ list.size() ] );
}
+ /**
+ * Checks whether a given string is a valid host name according to
+ * RFC 3986.
+ *
+ * <p>Accepted are IP addresses (v4 and v6) as well as what the
+ * RFC calls a "reg-name". Percent encoded names don't seem to be
+ * valid names in UNC paths.</p>
+ *
+ * @see "https://tools.ietf.org/html/rfc3986#section-3.2.2"
+ * @param name the hostname to validate
+ * @return true if the given name is a valid host name
+ */
+ private static boolean isValidHostName(String name) {
+ return isIPv4Address(name) || isIPv6Address(name) ||
isRFC3986HostName(name);
+ }
+
+ private static final Pattern IPV4_PATTERN =
+ Pattern.compile("^(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})$");
+ private static final int IPV4_MAX_OCTET_VALUE = 255;
+
+ // mostly copied from
org.apache.commons.validator.routines.InetAddressValidator#isValidInet4Address
+ private static boolean isIPv4Address(String name) {
+ Matcher m = IPV4_PATTERN.matcher(name);
+ if (!m.matches() || m.groupCount() != 4) {
+ return false;
+ }
+
+ // verify that address subgroups are legal
+ for (int i = 1; i < 5; i++) {
+ String ipSegment = m.group(i);
+ if (ipSegment == null || ipSegment.length() == 0) {
+ return false;
+ }
+
+ int iIpSegment = 0;
+
+ try {
+ iIpSegment = Integer.parseInt(ipSegment);
+ } catch(NumberFormatException e) {
+ return false;
+ }
+
+ if (iIpSegment > IPV4_MAX_OCTET_VALUE) {
+ return false;
+ }
+
+ if (ipSegment.length() > 1 && ipSegment.startsWith("0")) {
+ return false;
+ }
+
+ }
+
+ return true;
+ }
+
+ private static final int IPV6_MAX_HEX_GROUPS = 8;
+ private static final int IPV6_MAX_HEX_DIGITS_PER_GROUP = 4;
+ private static final int MAX_UNSIGNED_SHORT = 0xffff;
+ private static final int BASE_16 = 16;
+
+ // copied from
org.apache.commons.validator.routines.InetAddressValidator#isValidInet6Address
+ private static boolean isIPv6Address(String inet6Address) {
+ boolean containsCompressedZeroes = inet6Address.contains("::");
+ if (containsCompressedZeroes && (inet6Address.indexOf("::") !=
inet6Address.lastIndexOf("::"))) {
+ return false;
+ }
+ if ((inet6Address.startsWith(":") && !inet6Address.startsWith("::"))
+ || (inet6Address.endsWith(":") &&
!inet6Address.endsWith("::"))) {
+ return false;
+ }
+ String[] octets = inet6Address.split(":");
+ if (containsCompressedZeroes) {
+ List<String> octetList = new
ArrayList<String>(Arrays.asList(octets));
+ if (inet6Address.endsWith("::")) {
+ // String.split() drops ending empty segments
+ octetList.add("");
+ } else if (inet6Address.startsWith("::") && !octetList.isEmpty()) {
+ octetList.remove(0);
+ }
+ octets = octetList.toArray(new String[octetList.size()]);
+ }
+ if (octets.length > IPV6_MAX_HEX_GROUPS) {
+ return false;
+ }
+ int validOctets = 0;
+ int emptyOctets = 0; // consecutive empty chunks
+ for (int index = 0; index < octets.length; index++) {
+ String octet = octets[index];
+ if (octet.length() == 0) {
+ emptyOctets++;
+ if (emptyOctets > 1) {
+ return false;
+ }
+ } else {
+ emptyOctets = 0;
+ // Is last chunk an IPv4 address?
+ if (index == octets.length - 1 && octet.contains(".")) {
+ if (!isIPv4Address(octet)) {
+ return false;
+ }
+ validOctets += 2;
+ continue;
+ }
+ if (octet.length() > IPV6_MAX_HEX_DIGITS_PER_GROUP) {
+ return false;
+ }
+ int octetInt = 0;
+ try {
+ octetInt = Integer.parseInt(octet, BASE_16);
+ } catch (NumberFormatException e) {
+ return false;
+ }
+ if (octetInt < 0 || octetInt > MAX_UNSIGNED_SHORT) {
+ return false;
+ }
+ }
+ validOctets++;
+ }
+ if (validOctets > IPV6_MAX_HEX_GROUPS || (validOctets <
IPV6_MAX_HEX_GROUPS && !containsCompressedZeroes)) {
+ return false;
+ }
+ return true;
+ }
+
+ private static final Pattern REG_NAME_PART_PATTERN =
Pattern.compile("^[a-zA-Z0-9][a-zA-Z0-9-]*$");
+
+ private static boolean isRFC3986HostName(String name) {
+ String[] parts = name.split("\\.", -1);
+ for (int i = 0; i < parts.length; i++) {
+ if (parts[i].length() == 0) {
+ // trailing dot is legal, otherwise we've hit a .. sequence
+ return i == parts.length - 1;
+ }
+ if (!REG_NAME_PART_PATTERN.matcher(parts[i]).matches()) {
+ return false;
+ }
+ }
+ return true;
+ }
}
Index:
commons-io-2.6-src/src/test/java/org/apache/commons/io/FilenameUtilsTestCase.java
===================================================================
---
commons-io-2.6-src.orig/src/test/java/org/apache/commons/io/FilenameUtilsTestCase.java
+++
commons-io-2.6-src/src/test/java/org/apache/commons/io/FilenameUtilsTestCase.java
@@ -244,6 +244,15 @@ public class FilenameUtilsTestCase {
assertEquals(null, FilenameUtils.normalize("//server/../a"));
assertEquals(null, FilenameUtils.normalize("//server/.."));
assertEquals(SEP + SEP + "server" + SEP + "",
FilenameUtils.normalize("//server/"));
+
+ assertEquals(SEP + SEP + "127.0.0.1" + SEP + "a" + SEP + "b" + SEP +
"c.txt", FilenameUtils.normalize("\\\\127.0.0.1\\a\\b\\c.txt"));
+ assertEquals(SEP + SEP + "::1" + SEP + "a" + SEP + "b" + SEP +
"c.txt", FilenameUtils.normalize("\\\\::1\\a\\b\\c.txt"));
+ assertEquals(SEP + SEP + "server.example.org" + SEP + "a" + SEP + "b"
+ SEP + "c.txt",
FilenameUtils.normalize("\\\\server.example.org\\a\\b\\c.txt"));
+ assertEquals(SEP + SEP + "server." + SEP + "a" + SEP + "b" + SEP +
"c.txt", FilenameUtils.normalize("\\\\server.\\a\\b\\c.txt"));
+
+ assertEquals(null,
FilenameUtils.normalize("\\\\-server\\a\\b\\c.txt"));
+ assertEquals(null, FilenameUtils.normalize("\\\\.\\a\\b\\c.txt"));
+ assertEquals(null, FilenameUtils.normalize("\\\\..\\a\\b\\c.txt"));
}
@Test
@@ -560,6 +569,15 @@ public class FilenameUtilsTestCase {
assertEquals(1, FilenameUtils.getPrefixLength("/:foo"));
assertEquals(1, FilenameUtils.getPrefixLength("/:/"));
assertEquals(1, FilenameUtils.getPrefixLength("/:::::::.txt"));
+
+ assertEquals(12,
FilenameUtils.getPrefixLength("\\\\127.0.0.1\\a\\b\\c.txt"));
+ assertEquals(6, FilenameUtils.getPrefixLength("\\\\::1\\a\\b\\c.txt"));
+ assertEquals(21,
FilenameUtils.getPrefixLength("\\\\server.example.org\\a\\b\\c.txt"));
+ assertEquals(10,
FilenameUtils.getPrefixLength("\\\\server.\\a\\b\\c.txt"));
+
+ assertEquals(-1,
FilenameUtils.getPrefixLength("\\\\-server\\a\\b\\c.txt"));
+ assertEquals(-1, FilenameUtils.getPrefixLength("\\\\.\\a\\b\\c.txt"));
+ assertEquals(-1, FilenameUtils.getPrefixLength("\\\\..\\a\\b\\c.txt"));
}
@Test
++++++ apache-commons-io-build.xml ++++++
<?xml version="1.0" encoding="UTF-8"?>
<project name="commons-io" default="package" basedir=".">
<!-- ======================================================================
-->
<!-- Build environment properties
-->
<!-- ======================================================================
-->
<property file="maven-build.properties"/>
<property name="project.groupId" value="commons-io"/>
<property name="project.artifactId" value="commons-io"/>
<property name="project.version" value="2.6"/>
<property name="project.name" value="Apache Commons IO"/>
<property name="project.description" value="The Apache Commons IO library
contains utility classes, stream implementations, file filters,
file comparators, endian transformation classes, and much more."/>
<property name="project.organization.name" value="The Apache Software
Foundation"/>
<property name="bundle.symbolicName" value="org.apache.commons.io"/>
<property name="bundle.version" value="${project.version}.0"/>
<property name="compiler.source" value="1.7"/>
<property name="compiler.target" value="${compiler.source}"/>
<property name="build.finalName"
value="${project.artifactId}-${project.version}"/>
<property name="build.dir" value="target"/>
<property name="build.outputDir" value="${build.dir}/classes"/>
<property name="build.srcDir" value="src/main/java"/>
<property name="build.resourceDir.0" value="src/main/resources"/>
<property name="build.resourceDir.1" value="."/>
<property name="build.testOutputDir" value="${build.dir}/test-classes"/>
<property name="build.testDir" value="src/test/java"/>
<property name="build.testResourceDir.0" value="src/test/resources"/>
<property name="build.testResourceDir.1" value="."/>
<property name="test.reports" value="${build.dir}/test-reports"/>
<property name="reporting.outputDirectory" value="${build.dir}/site"/>
<!-- ======================================================================
-->
<!-- Defining classpaths
-->
<!-- ======================================================================
-->
<path id="build.classpath"/>
<path id="build.test.classpath"/>
<!-- ======================================================================
-->
<!-- Cleaning up target
-->
<!-- ======================================================================
-->
<target name="clean" description="Clean the output directory">
<delete dir="${build.dir}"/>
</target>
<!-- ======================================================================
-->
<!-- Compilation target
-->
<!-- ======================================================================
-->
<target name="compile" description="Compile the code">
<mkdir dir="${build.outputDir}"/>
<javac destdir="${build.outputDir}"
encoding="iso-8859-1"
nowarn="false"
debug="true"
optimize="false"
deprecation="true"
target="${compiler.target}"
verbose="false"
fork="false"
source="${compiler.source}">
<src>
<pathelement location="${build.srcDir}"/>
</src>
<classpath refid="build.classpath"/>
</javac>
<mkdir dir="${build.outputDir}/META-INF"/>
<copy todir="${build.outputDir}/META-INF">
<fileset dir="${build.resourceDir.1}">
<include name="NOTICE.txt"/>
<include name="LICENSE.txt"/>
</fileset>
</copy>
</target>
<!-- ======================================================================
-->
<!-- Test-compilation target
-->
<!-- ======================================================================
-->
<target name="compile-tests"
depends="compile"
description="Compile the test code"
unless="test.skip">
<mkdir dir="${build.testOutputDir}"/>
<javac destdir="${build.testOutputDir}"
encoding="iso-8859-1"
nowarn="false"
debug="true"
optimize="false"
deprecation="true"
target="${compiler.target}"
verbose="false"
fork="false"
source="${compiler.source}">
<src>
<pathelement location="${build.testDir}"/>
</src>
<classpath>
<path refid="build.test.classpath"/>
<pathelement location="${build.outputDir}"/>
</classpath>
</javac>
<copy todir="${build.testOutputDir}">
<fileset dir="${build.testResourceDir.0}"/>
</copy>
<mkdir dir="${build.testOutputDir}/META-INF"/>
<copy todir="${build.testOutputDir}/META-INF">
<fileset dir="${build.testResourceDir.1}">
<include name="NOTICE.txt"/>
<include name="LICENSE.txt"/>
</fileset>
</copy>
</target>
<!-- ======================================================================
-->
<!-- Run all tests
-->
<!-- ======================================================================
-->
<target name="test"
depends="compile-tests, junit-missing"
unless="junit.skipped"
description="Run the test cases">
<mkdir dir="${test.reports}"/>
<junit printSummary="yes" haltonerror="true" haltonfailure="true"
fork="true" dir=".">
<sysproperty key="basedir" value="."/>
<formatter type="xml"/>
<formatter type="plain" usefile="false"/>
<classpath>
<path refid="build.test.classpath"/>
<pathelement location="${build.outputDir}"/>
<pathelement location="${build.testOutputDir}"/>
</classpath>
<batchtest todir="${test.reports}" unless="test">
<fileset dir="${build.testDir}">
<include name="**/*Test*.java"/>
<exclude name="**/*Abstract*TestCase*"/>
<exclude name="**/testtools/**"/>
</fileset>
</batchtest>
<batchtest todir="${test.reports}" if="test">
<fileset dir="${build.testDir}">
<include name="**/${test}.java"/>
<exclude name="**/*Abstract*TestCase*"/>
<exclude name="**/testtools/**"/>
</fileset>
</batchtest>
</junit>
</target>
<target name="test-junit-present">
<available classname="junit.framework.Test" property="junit.present"
classpathref="build.test.classpath"/>
</target>
<target name="test-junit-status"
depends="test-junit-present">
<condition property="junit.missing">
<and>
<isfalse value="${junit.present}"/>
<isfalse value="${test.skip}"/>
</and>
</condition>
<condition property="junit.skipped">
<or>
<isfalse value="${junit.present}"/>
<istrue value="${test.skip}"/>
</or>
</condition>
</target>
<target name="junit-missing"
depends="test-junit-status"
if="junit.missing">
<echo>=================================== WARNING
===================================</echo>
<echo> JUnit is not present in the test classpath or your $ANT_HOME/lib
directory. Tests not executed.</echo>
<echo>===============================================================================</echo>
</target>
<!-- ======================================================================
-->
<!-- Javadoc target
-->
<!-- ======================================================================
-->
<target name="javadoc" description="Generates the Javadoc of the application">
<javadoc sourcepath="${build.srcDir}"
packagenames="*"
destdir="${reporting.outputDirectory}/apidocs"
access="protected"
verbose="false"
encoding="iso-8859-1"
version="true"
use="true"
author="true"
splitindex="false"
nodeprecated="false"
nodeprecatedlist="false"
notree="false"
noindex="false"
nohelp="false"
nonavbar="false"
serialwarn="false"
source="${compiler.source}"
linksource="true"
breakiterator="false">
</javadoc>
</target>
<!-- ======================================================================
-->
<!-- Package target
-->
<!-- ======================================================================
-->
<target name="package" depends="compile,test" description="Package the
application">
<jar jarfile="${build.dir}/${build.finalName}.jar"
compress="true"
index="false"
basedir="${build.outputDir}"
excludes="**/package.html">
<manifest>
<attribute name="Automatic-Module-Name" value="${bundle.symbolicName}"/>
<attribute name="Bundle-Description" value="${project.description}"/>
<attribute name="Bundle-DocURL"
value="http://commons.apache.org/proper/commons-io/"/>
<attribute name="Bundle-License"
value="https://www.apache.org/licenses/LICENSE-2.0.txt"/>
<attribute name="Bundle-ManifestVersion" value="2"/>
<attribute name="Bundle-Name" value="${project.name}"/>
<attribute name="Bundle-SymbolicName" value="${bundle.symbolicName}"/>
<attribute name="Bundle-Vendor" value="${project.organization.name}"/>
<attribute name="Bundle-Version" value="${bundle.version}"/>
<attribute name="Export-Package"
value="org.apache.commons.io;version="1.4.9999",org.apache.commons.io.comparator;version="1.4.9999",org.apache.commons.io.filefilter;version="1.4.9999",org.apache.commons.io.input;version="1.4.9999",org.apache.commons.io.output;version="1.4.9999",org.apache.commons.io.monitor;version="${project.version}",org.apache.commons.io.serialization;version="${project.version}",org.apache.commons.io;version="${project.version}",org.apache.commons.io.comparator;version="${project.version}",org.apache.commons.io.filefilter;version="${project.version}",org.apache.commons.io.input;version="${project.version}",org.apache.commons.io.output;version="${project.version}""/>
<attribute name="Include-Resource"
value="META-INF/NOTICE.txt=NOTICE.txt,META-INF/LICENSE.txt=LICENSE.txt"/>
<attribute name="JavaPackages-ArtifactId"
value="${project.artifactId}"/>
<attribute name="JavaPackages-GroupId" value="${project.groupId}"/>
<attribute name="JavaPackages-Version" value="${project.version}"/>
<attribute name="Require-Capability"
value="osgi.ee;filter:="(&(osgi.ee=JavaSE)(version=${compiler.target}))""/>
</manifest>
</jar>
</target>
<!-- ======================================================================
-->
<!-- A dummy target for the package named after the type it creates
-->
<!-- ======================================================================
-->
<target name="jar" depends="package" description="Builds the jar for the
application"/>
</project>