diff --git a/src/main/java/org/codehaus/plexus/util/xml/pull/MXParser.java b/src/main/java/org/codehaus/plexus/util/xml/pull/MXParser.java index bc1c3608..3874f572 100644 --- a/src/main/java/org/codehaus/plexus/util/xml/pull/MXParser.java +++ b/src/main/java/org/codehaus/plexus/util/xml/pull/MXParser.java @@ -16,6 +16,7 @@ import java.io.UnsupportedEncodingException; import org.codehaus.plexus.util.ReaderFactory; +import org.codehaus.plexus.util.xml.XmlReader; //import java.util.Hashtable; @@ -663,7 +664,12 @@ public void setInput( Reader in ) reset(); reader = in; - if ( reader instanceof InputStreamReader ) + if ( reader instanceof XmlReader ) { + // encoding already detected + XmlReader xsr = (XmlReader) reader; + fileEncoding = xsr.getEncoding(); + } + else if ( reader instanceof InputStreamReader ) { InputStreamReader isr = (InputStreamReader) reader; if ( isr.getEncoding() != null ) diff --git a/src/test/java/org/codehaus/plexus/util/xml/pull/MXParserTest.java b/src/test/java/org/codehaus/plexus/util/xml/pull/MXParserTest.java index 7b9fe30a..e0be666a 100644 --- a/src/test/java/org/codehaus/plexus/util/xml/pull/MXParserTest.java +++ b/src/test/java/org/codehaus/plexus/util/xml/pull/MXParserTest.java @@ -21,9 +21,15 @@ import static org.junit.Assert.fail; import java.io.EOFException; +import java.io.File; import java.io.IOException; +import java.io.InputStream; +import java.io.Reader; import java.io.StringReader; +import java.nio.file.Files; +import java.nio.file.Paths; +import org.codehaus.plexus.util.ReaderFactory; import org.junit.Test; /** @@ -840,4 +846,56 @@ public void testXMLDeclVersionEncodingStandaloneNoSpace() } } + /** + * Issue 163: https://github.com/codehaus-plexus/plexus-utils/issues/163 + * + * @throws IOException if IO error. + * + * @since 3.4.1 + */ + @Test + public void testEncodingISO_8859_1setInputReader() + throws IOException + { + try ( Reader reader = + ReaderFactory.newXmlReader( new File( "src/test/resources/xml", "test-encoding-ISO-8859-1.xml" ) ) ) + { + MXParser parser = new MXParser(); + parser.setInput( reader ); + while ( parser.nextToken() != XmlPullParser.END_DOCUMENT ) + ; + assertTrue( true ); + } + catch ( XmlPullParserException e ) + { + fail( "should not raise exception: " + e ); + } + } + + /** + * Issue 163: https://github.com/codehaus-plexus/plexus-utils/issues/163 + * + * @throws IOException if IO error. + * + * @since 3.4.1 + */ + @Test + public void testEncodingISO_8859_1_setInputStream() + throws IOException + { + try ( InputStream input = + Files.newInputStream( Paths.get( "src/test/resources/xml", "test-encoding-ISO-8859-1.xml" ) ) ) + { + MXParser parser = new MXParser(); + parser.setInput( input, null ); + while ( parser.nextToken() != XmlPullParser.END_DOCUMENT ) + ; + assertTrue( true ); + } + catch ( XmlPullParserException e ) + { + fail( "should not raise exception: " + e ); + } + } + } diff --git a/src/test/resources/xml/test-encoding-ISO-8859-1.xml b/src/test/resources/xml/test-encoding-ISO-8859-1.xml new file mode 100644 index 00000000..ae0aefe7 --- /dev/null +++ b/src/test/resources/xml/test-encoding-ISO-8859-1.xml @@ -0,0 +1,1503 @@ +<?xml version="1.0" encoding="ISO-8859-1"?> +<!-- + + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +--> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + <parent> + <groupId>org.apache</groupId> + <artifactId>apache</artifactId> + <version>16</version> + </parent> + <groupId>org.apache.commons</groupId> + <artifactId>commons-parent</artifactId> + <packaging>pom</packaging> + <version>39</version> + <name>Apache Commons Parent</name> + <url>http://commons.apache.org/</url> + <description>The Apache Commons Parent POM provides common settings for all Apache Commons components.</description> + +<!-- +Version 39: + +- Update Compiler Plugin : 3.2 -> 3.3 +- Update Build Helper Plugin : 1.8 -> 1.9.1 +- Update Release Plugin : 2.5.1 -> 2.5.2 +- Update Javadoc Plugin : 2.10.2 -> 2.10.3 +- Update Jacoco 0.7.4.201502262128 -> 0.7.5.201505241946 +- Move assembly to standard location. src/main => src/assembly/src.xml +- Update animal-sniffer Plugin : 1.13 -> 1.14 (for java 7+ builds) supporting Java8 +- dropped the trunks-proper profile + + --> + + <!-- Maven versions plugin reports an error if this is omitted --> + <prerequisites> + <maven>3.0.1</maven> + </prerequisites> + + <ciManagement> + <system>continuum</system> + <url>https://continuum-ci.apache.org/</url> + </ciManagement> + + <!-- + In release 31, the maven.compile.* properties were corrected to maven.compiler.* + [See COMMONSSITE-69] + If updating from a previous version, please check the property definitions + + Starting with version 22, the RAT plugin has changed Maven group and id, so any existing configuration + needs to be updated. + To fix component POMs, please change any occurrences of: + <groupId>org.codehaus.mojo</groupId> + <artifactId>rat-maven-plugin</artifactId> + to the new values: + <groupId>org.apache.rat</groupId> + <artifactId>apache-rat-plugin</artifactId> + + Site deployment + =============== + Cannot define this here at present, see https://issues.apache.org/jira/browse/COMMONSSITE-26. + + The following should be added to the component POM: + + <distributionManagement> + <site> + <id>commons.site</id> + <name>Apache Commons Site SVN</name> + <url>scm:svn:${commons.scmPubUrl}</url> + </site> + </distributionManagement> + + Alternatively you can map the component's existing site id to the + commons.scmPubServer property. + + Coverage tool selection + ======================= + Starting with release 30, there are optional profiles for both Cobertura and JaCoCo. + These can be enabled independently on the command-line: + + mvn site -Pcobertura -Pjacoco + + Or the component can define a default coverage tool by creating either (or both) of the following files: + + src/site/resources/profile.cobertura + src/site/resources/profile.jacoco + + These can later be overridden by cancelling the profile: + + mvn site -P!jacoco + + --> + + <!-- + This section *must* be overwritten by subprojects. It is only to allow + a release of the commons-parent POM. + --> + <scm> + <connection>scm:svn:http://svn.apache.org/repos/asf/commons/proper/commons-parent/tags/commons-parent-39</connection> + <developerConnection>scm:svn:https://svn.apache.org/repos/asf/commons/proper/commons-parent/tags/commons-parent-39</developerConnection> + <url>http://svn.apache.org/viewvc/commons/proper/commons-parent/tags/commons-parent-39</url> + </scm> + + <mailingLists> + <!-- N.B. commons-site now uses the Apache POM so has its own copy of the mailing list definitions --> + <!-- + Components should normally override the default mailing list report by using the comnand + mvn commons:mail-page + This generates the file src/site/xdoc/mail-lists.xml which when processed will replace the PIR version. + --> + <!-- Changes to this list should be synchronised with the commons build plugin --> + <mailingList> + <name>Commons User List</name> + <subscribe>user-subscribe@commons.apache.org</subscribe> + <unsubscribe>user-unsubscribe@commons.apache.org</unsubscribe> + <post>user@commons.apache.org</post> + <archive>http://mail-archives.apache.org/mod_mbox/commons-user/</archive> + <otherArchives> + <otherArchive>http://markmail.org/list/org.apache.commons.users/</otherArchive> + <otherArchive>http://old.nabble.com/Commons---User-f319.html</otherArchive> + <otherArchive>http://www.mail-archive.com/user@commons.apache.org/</otherArchive> + <otherArchive>http://news.gmane.org/gmane.comp.jakarta.commons.user</otherArchive> + </otherArchives> + </mailingList> + <mailingList> + <name>Commons Dev List</name> + <subscribe>dev-subscribe@commons.apache.org</subscribe> + <unsubscribe>dev-unsubscribe@commons.apache.org</unsubscribe> + <post>dev@commons.apache.org</post> + <archive>http://mail-archives.apache.org/mod_mbox/commons-dev/</archive> + <otherArchives> + <otherArchive>http://markmail.org/list/org.apache.commons.dev/</otherArchive> + <otherArchive>http://old.nabble.com/Commons---Dev-f317.html</otherArchive> + <otherArchive>http://www.mail-archive.com/dev@commons.apache.org/</otherArchive> + <otherArchive>http://news.gmane.org/gmane.comp.jakarta.commons.devel</otherArchive> + </otherArchives> + </mailingList> + <mailingList> + <name>Commons Issues List</name> + <subscribe>issues-subscribe@commons.apache.org</subscribe> + <unsubscribe>issues-unsubscribe@commons.apache.org</unsubscribe> + <archive>http://mail-archives.apache.org/mod_mbox/commons-issues/</archive> + <otherArchives> + <otherArchive>http://markmail.org/list/org.apache.commons.issues/</otherArchive> + <otherArchive>http://old.nabble.com/Commons---Issues-f25499.html</otherArchive> + <otherArchive>http://www.mail-archive.com/issues@commons.apache.org/</otherArchive> + </otherArchives> + </mailingList> + <mailingList> + <name>Commons Commits List</name> + <subscribe>commits-subscribe@commons.apache.org</subscribe> + <unsubscribe>commits-unsubscribe@commons.apache.org</unsubscribe> + <archive>http://mail-archives.apache.org/mod_mbox/commons-commits/</archive> + <otherArchives> + <otherArchive>http://markmail.org/list/org.apache.commons.commits/</otherArchive> + <otherArchive>http://www.mail-archive.com/commits@commons.apache.org/</otherArchive> + </otherArchives> + </mailingList> + <mailingList> + <name>Apache Announce List</name> + <subscribe>announce-subscribe@apache.org</subscribe> + <unsubscribe>announce-unsubscribe@apache.org</unsubscribe> + <archive>http://mail-archives.apache.org/mod_mbox/www-announce/</archive> + <otherArchives> + <otherArchive>http://markmail.org/list/org.apache.announce/</otherArchive> + <otherArchive>http://old.nabble.com/Apache-News-and-Announce-f109.html</otherArchive> + <otherArchive>http://www.mail-archive.com/announce@apache.org/</otherArchive> + <otherArchive>http://news.gmane.org/gmane.comp.apache.announce</otherArchive> + </otherArchives> + </mailingList> + </mailingLists> + <build> + <!-- TODO find a better way to add N&L files to jars and test jars + See also maven-remote-resources-plugin configuration below. + --> + <resources> + <!-- This is the default setting from the super-pom --> + <resource> + <directory>src/main/resources</directory> + </resource> + <!-- hack to ensure the N&L appear in jars --> + <resource> + <directory>${basedir}</directory> + <targetPath>META-INF</targetPath> + <includes> + <include>NOTICE.txt</include> + <include>LICENSE.txt</include> + </includes> + </resource> + </resources> + <!-- ensure test jars also get NOTICE & LICENSE files --> + <testResources> + <!-- This is the default setting from the super-pom --> + <testResource> + <directory>src/test/resources</directory> + </testResource> + <!-- hack to ensure the N&L appear in jars --> + <testResource> + <directory>${basedir}</directory> + <targetPath>META-INF</targetPath> + <includes> + <include>NOTICE.txt</include> + <include>LICENSE.txt</include> + </includes> + </testResource> + </testResources> + <pluginManagement> + <plugins> + <!-- org.apache.maven.plugins, alpha order by artifact id --> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-antrun-plugin</artifactId> + <version>1.8</version> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-assembly-plugin</artifactId> + <version>2.5.5</version> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-clean-plugin</artifactId> + <version>2.6.1</version> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-compiler-plugin</artifactId> + <version>${commons.compiler.version}</version> + <configuration> + <source>${maven.compiler.source}</source> + <target>${maven.compiler.target}</target> + <encoding>${commons.encoding}</encoding> + <!-- + fork is set true by the java-1.x profiles + This allows the use of a different version of the compiler from the + JDK being used to run Maven + --> + <fork>${commons.compiler.fork}</fork> + <!-- the following are only needed if fork is true --> + <compilerVersion>${commons.compiler.compilerVersion}</compilerVersion> + <executable>${commons.compiler.javac}</executable> + </configuration> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-deploy-plugin</artifactId> + <version>2.8.2</version> + </plugin> + <!-- Apache parent includes docck --> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-gpg-plugin</artifactId> + <version>1.6</version> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-install-plugin</artifactId> + <version>2.5.2</version> + </plugin> + <!-- Apache parent: invoker --> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-jar-plugin</artifactId> + <version>2.6</version> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-javadoc-plugin</artifactId> + <version>${commons.javadoc.version}</version> + <configuration> + <!-- keep only errors and warnings --> + <quiet>true</quiet> + <encoding>${commons.encoding}</encoding> + <docEncoding>${commons.docEncoding}</docEncoding> + <notimestamp>true</notimestamp> + <links> + <link>${commons.javadoc.java.link}</link> + <link>${commons.javadoc.javaee.link}</link> + </links> + <archive> + <manifest> + <addDefaultImplementationEntries>true</addDefaultImplementationEntries> + <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries> + </manifest> + </archive> + </configuration> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-release-plugin</artifactId> + <version>2.5.2</version> + </plugin> + <plugin> + <!-- TODO see above - find better way to add N&L files to jars and test jars --> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-remote-resources-plugin</artifactId> + <!-- override old version from Apache pom 13 --> + <version>1.5</version> + <configuration> + <!-- + Apache parent POM automatically adds "LICENSE" and "NOTICE" files + to jars - duplicating the "LICENSE.txt" and "NOTICE.txt" + files that components already have. + --> + <skip>true</skip> + </configuration> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-resources-plugin</artifactId> + <version>2.7</version> + </plugin> + <!-- Apache parent: scm --> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-site-plugin</artifactId> + <version>${commons.site-plugin.version}</version> + <configuration> + <!-- don't deploy site with maven-site-plugin --> + <skipDeploy>true</skipDeploy> + </configuration> + <dependencies> + <dependency> + <!-- add support for ssh/scp --> + <groupId>org.apache.maven.wagon</groupId> + <artifactId>wagon-ssh</artifactId> + <version>${commons.wagon-ssh.version}</version> + </dependency> + </dependencies> + <executions> + <execution> + <id>attach-descriptor</id> + <goals> + <goal>attach-descriptor</goal> + </goals> + </execution> + </executions> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-source-plugin</artifactId> + <version>2.4</version> + <configuration> + <archive> + <manifest> + <addDefaultImplementationEntries>true</addDefaultImplementationEntries> + <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries> + </manifest> + </archive> + </configuration> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-surefire-plugin</artifactId> + <version>${commons.surefire.version}</version> + </plugin> + <!-- Other plugins, alpha order by groupId and artifactId --> + <plugin> + <groupId>org.apache.commons</groupId> + <artifactId>commons-build-plugin</artifactId> + <version>1.4</version> + <configuration> + <commons.release.name>${commons.release.name}</commons.release.name> + </configuration> + </plugin> + <plugin> + <groupId>org.apache.felix</groupId> + <artifactId>maven-bundle-plugin</artifactId> + <version>2.5.3</version> + <inherited>true</inherited> + </plugin> + <plugin> + <groupId>org.apache.rat</groupId> + <artifactId>apache-rat-plugin</artifactId> + <version>${commons.rat.version}</version> + </plugin> + <plugin> + <groupId>org.codehaus.mojo</groupId> + <artifactId>build-helper-maven-plugin</artifactId> + <version>1.9.1</version> + </plugin> + <plugin> + <groupId>org.codehaus.mojo</groupId> + <artifactId>buildnumber-maven-plugin</artifactId> + <version>1.3</version> + </plugin> + <plugin> + <groupId>org.codehaus.mojo</groupId> + <artifactId>clirr-maven-plugin</artifactId> + <version>${commons.clirr.version}</version> + <configuration> + <minSeverity>${minSeverity}</minSeverity> + </configuration> + </plugin> + <!-- Apache parent: plexus & modello --> + </plugins> + </pluginManagement> + <plugins> + <!-- org.apache.maven.plugins, alpha order by artifact id --> + <plugin> + <!-- Parent POM is released, so needs source archive for ASF mirrors --> + <artifactId>maven-assembly-plugin</artifactId> + <configuration> + <descriptors> + <descriptor>src/assembly/src.xml</descriptor> + </descriptors> + <tarLongFileMode>gnu</tarLongFileMode> + </configuration> + </plugin> + <plugin> + <!-- + - Copy LICENSE.txt and NOTICE.txt so that they are included + - in the -javadoc jar file for the component. + --> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-antrun-plugin</artifactId> + <executions> + <execution> + <id>javadoc.resources</id> + <phase>generate-sources</phase> + <goals> + <goal>run</goal> + </goals> + <configuration> + <target> + <copy todir="${project.build.directory}/apidocs/META-INF"> + <fileset dir="${basedir}"> + <include name="LICENSE.txt" /> + <include name="NOTICE.txt" /> + </fileset> + </copy> + </target> + </configuration> + </execution> + </executions> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-compiler-plugin</artifactId> + </plugin> + <!-- Unfortunately the much simpler + <prerequisites><maven>3.0</maven></prerequisites> + is not inherited so we have to use the enforcer plugin + --> + <plugin> + <inherited>true</inherited> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-enforcer-plugin</artifactId> + <version>1.3.1</version> + <executions> + <execution> + <id>enforce-maven-3</id> + <goals> + <goal>enforce</goal> + </goals> + <configuration> + <rules> + <requireMavenVersion> + <version>3.0.0</version> + </requireMavenVersion> + </rules> + <fail>true</fail> + </configuration> + </execution> + </executions> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-jar-plugin</artifactId> + <configuration> + <archive> + <manifestFile>${commons.manifestfile}</manifestFile> + <manifestEntries> + <Specification-Title>${project.name}</Specification-Title> + <Specification-Version>${project.version}</Specification-Version> + <Specification-Vendor>${project.organization.name}</Specification-Vendor> + <Implementation-Title>${project.name}</Implementation-Title> + <Implementation-Version>${project.version}</Implementation-Version> + <Implementation-Vendor>${project.organization.name}</Implementation-Vendor> + <Implementation-Vendor-Id>org.apache</Implementation-Vendor-Id> + <Implementation-Build>${implementation.build}</Implementation-Build> + <X-Compile-Source-JDK>${maven.compiler.source}</X-Compile-Source-JDK> + <X-Compile-Target-JDK>${maven.compiler.target}</X-Compile-Target-JDK> + </manifestEntries> + </archive> + </configuration> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-surefire-plugin</artifactId> + <configuration> + <!-- + commons.surefire.java is normally empty. + It is defined by the java-1.x profiles to change the JVM used by Surefire + --> + <jvm>${commons.surefire.java}</jvm> + </configuration> + </plugin> + <!-- Other plugins, alpha order by groupId and artifactId --> + <plugin> + <groupId>org.apache.commons</groupId> + <artifactId>commons-build-plugin</artifactId> + </plugin> + <plugin> + <groupId>org.apache.felix</groupId> + <artifactId>maven-bundle-plugin</artifactId> + <configuration> + <!-- + dummy entry to stop bundle plugin from picking up jar config and reporting + WARNING: Duplicate name in Manifest + See http://markmail.org/message/mpkl24wk3jrjhhjg + --> + <archive> + <forced>true</forced> + </archive> + <excludeDependencies>${commons.osgi.excludeDependencies}</excludeDependencies> + <manifestLocation>${project.build.directory}/osgi</manifestLocation> + <instructions> + <!-- stops the "uses" clauses being added to "Export-Package" manifest entry --> + <_nouses>true</_nouses> + <!-- Stop the JAVA_1_n_HOME variables from being treated as headers by Bnd --> + <_removeheaders>JAVA_1_3_HOME,JAVA_1_4_HOME,JAVA_1_5_HOME,JAVA_1_6_HOME,JAVA_1_7_HOME,JAVA_1_8_HOME,JAVA_1_9_HOME</_removeheaders> + <Bundle-SymbolicName>${commons.osgi.symbolicName}</Bundle-SymbolicName> + <Export-Package>${commons.osgi.export}</Export-Package> + <Private-Package>${commons.osgi.private}</Private-Package> + <Import-Package>${commons.osgi.import}</Import-Package> + <DynamicImport-Package>${commons.osgi.dynamicImport}</DynamicImport-Package> + <Bundle-DocURL>${project.url}</Bundle-DocURL> + </instructions> + </configuration> + <executions> + <execution> + <id>bundle-manifest</id> + <phase>process-classes</phase> + <goals> + <goal>manifest</goal> + </goals> + </execution> + </executions> + </plugin> + <!-- Needed for command-line access, e.g mvn apache-rat:rat and mvn apache-rat:check --> + <plugin> + <groupId>org.apache.rat</groupId> + <artifactId>apache-rat-plugin</artifactId> + <version>${commons.rat.version}</version> + <!-- Should agree with config in reporting section --> + <configuration> + <!-- + If you wish to override this list in the component (child) pom, ensure you use + <excludes combine.children="merge"> + so that the child pom entries replace the parent entries + --> + <excludes combine.children="append"> + <exclude>site-content/**</exclude> + <exclude>.checkstyle</exclude> + <exclude>.fbprefs</exclude> + <exclude>.pmd</exclude> + <exclude>src/site/resources/download_*.cgi</exclude> + <exclude>src/site/resources/profile.*</exclude> + </excludes> + </configuration> + </plugin> + + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-scm-publish-plugin</artifactId> + <version>${commons.scm-publish.version}</version> + <configuration> + <content>${project.reporting.outputDirectory}</content> + <pubScmUrl>scm:svn:${commons.scmPubUrl}</pubScmUrl> + <checkoutDirectory>${commons.scmPubCheckoutDirectory}</checkoutDirectory> + <serverId>${commons.scmPubServer}</serverId> + <tryUpdate>true</tryUpdate> + </configuration> + <executions> + <execution> + <id>scm-publish</id> + <phase>site-deploy</phase><!-- deploy site with maven-scm-publish-plugin --> + <goals> + <goal>publish-scm</goal> + </goals> + </execution> + </executions> + </plugin> + + </plugins> + </build> + + <reporting> + <!-- N.B. plugins defined here in the <reporting> section ignore what's defined in <pluginManagement> + in the <build> section above, so we have to define the versions here. --> + <plugins> + <!-- org.apache.maven.plugins, alpha order by artifact id --> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-changes-plugin</artifactId> + <version>${commons.changes.version}</version> + <configuration> + <xmlPath>${basedir}/src/changes/changes.xml</xmlPath> + <columnNames>Fix Version,Key,Component,Summary,Type,Resolution,Status</columnNames> + <!-- Sort cols in natural order when using JQL for JIRA 5.1 --> + <sortColumnNames>Fix Version DESC,Type,Key DESC</sortColumnNames> + <resolutionIds>Fixed</resolutionIds> + <statusIds>Resolved,Closed</statusIds> + <!-- Don't include sub-task --> + <typeIds>Bug,New Feature,Task,Improvement,Wish,Test</typeIds> + <!-- For JIRA >= 5.1 --> + <useJql>true</useJql> + <onlyCurrentVersion>${commons.changes.onlyCurrentVersion}</onlyCurrentVersion> + <maxEntries>${commons.changes.maxEntries}</maxEntries> + <runOnlyAtExecutionRoot>${commons.changes.runOnlyAtExecutionRoot}</runOnlyAtExecutionRoot> + </configuration> + <reportSets> + <reportSet> + <reports> + <report>changes-report</report> + <report>jira-report</report> + </reports> + </reportSet> + </reportSets> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-javadoc-plugin</artifactId> + <version>${commons.javadoc.version}</version> + <configuration> + <!-- keep only errors and warnings --> + <quiet>true</quiet> + <source>${maven.compiler.source}</source> + <encoding>${commons.encoding}</encoding> + <docencoding>${commons.docEncoding}</docencoding> + <notimestamp>true</notimestamp> + <linksource>true</linksource> + <!-- prevent svnpub to be too much noisy --> + <notimestamp>true</notimestamp> + <links> + <link>${commons.javadoc.java.link}</link> + <link>${commons.javadoc.javaee.link}</link> + </links> + </configuration> + <!-- Suppress test Javadocs --> + <reportSets> + <reportSet> + <id>default</id> + <reports> + <report>javadoc</report> + </reports> + </reportSet> + </reportSets> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-jxr-plugin</artifactId> + <version>${commons.jxr.version}</version> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-project-info-reports-plugin</artifactId> + <version>${commons.project-info.version}</version> + <!-- + Unfortunately it does not appear to be possible to override + reports configured in a parent POM. + See https://jira.codehaus.org/browse/MPIR-241 + and https://issues.apache.org/jira/browse/MPOM-32 + So we define here all those reports that are suitable for + all components. + Components can add extra reports if they wish, but cannot disable any. + --> + <reportSets> + <reportSet> + <reports> + <report>index</report> + <report>summary</report> + <report>modules</report> +<!-- <report>license</report> site must link to ASF page instead --> + <report>project-team</report> + <report>scm</report> + <report>issue-tracking</report> + <report>mailing-list</report> + <report>dependency-info</report> + <report>dependency-management</report> + <report>dependencies</report> + <report>dependency-convergence</report> + <report>cim</report> +<!-- <report>plugin-management</report> not very useful for end users --> +<!-- <report>plugins</report> not very useful for end users --> + <report>distribution-management</report> + </reports> + </reportSet> + </reportSets> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-site-plugin</artifactId> + <version>${commons.site-plugin.version}</version> + <configuration> + <!-- Exclude the navigation file for Maven 1 sites + and the changes file used by the changes-plugin, + as they interfere with the site generation. --> + <moduleExcludes> + <xdoc>navigation.xml,changes.xml</xdoc> + </moduleExcludes> + </configuration> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-surefire-report-plugin</artifactId> + <version>${commons.surefire-report.version}</version> + <configuration> + <aggregate>${commons.surefire-report.aggregate}</aggregate> + </configuration> + </plugin> + <!-- Other plugins, alpha order by groupId and artifactId --> + <plugin> + <groupId>org.apache.rat</groupId> + <artifactId>apache-rat-plugin</artifactId> + <version>${commons.rat.version}</version> + <!-- Should agree with config in build section --> + <configuration> + <!-- + If you wish to override this list in the component (child) pom, ensure you use + <excludes combine.children="merge"> + so that the child pom entries replace the parent entries + --> + <excludes combine.children="append"> + <exclude>site-content/**</exclude> + <exclude>.checkstyle</exclude> + <exclude>.fbprefs</exclude> + <exclude>.pmd</exclude> + <exclude>src/site/resources/download_*.cgi</exclude> + <exclude>src/site/resources/profile.*</exclude> + </excludes> + </configuration> + </plugin> + <plugin> + <groupId>org.codehaus.mojo</groupId> + <artifactId>clirr-maven-plugin</artifactId> + <version>${commons.clirr.version}</version> + <configuration> + <minSeverity>${minSeverity}</minSeverity> + </configuration> + </plugin> + <plugin> + <groupId>org.codehaus.mojo</groupId> + <artifactId>jdepend-maven-plugin</artifactId> + <version>${commons.jdepend.version}</version> + </plugin> + </plugins> + </reporting> + + <profiles> + + <profile> + <!-- + Make the version parts of the maven.compiler.target property + available as separate properties, so that they can be used to define + the java signature artifactId used by animal-sniffer etc. + --> + <id>parse-target-version</id> + <activation> + <property> + <!-- + This property should always be defined. + The intention is to ensure that the profile is always enabled. + (activeByDefault only applies if other profiles are not enabled) + --> + <name>user.home</name> + </property> + </activation> + <build> + <plugins> + <plugin> + <groupId>org.codehaus.mojo</groupId> + <artifactId>build-helper-maven-plugin</artifactId> + <executions> + <execution> + <id>parse-version</id> + <!-- default is: <phase>validate</phase> --> + <goals> + <goal>parse-version</goal> + </goals> + <configuration> + <propertyPrefix>javaTarget</propertyPrefix> + <versionString>${maven.compiler.target}</versionString> + </configuration> + </execution> + </executions> + </plugin> + </plugins> + </build> + </profile> + + <!-- + Runs the Animal Sniffer plugin to check that generated code does not included references + to methods/classes etc that are not present in the standard Java runtime for the defined target version. + To bypass the checks, define "animal.sniffer.skip" as true, or create the file "src/site/resources/profile.noanimal" + --> + + <profile> + <id>animal-sniffer</id> + <activation> + <!-- active unless the file is found --> + <file> + <missing>src/site/resources/profile.noanimal</missing> + </file> + </activation> + + <properties> + <!-- define this as a property to allow command-line override --> + <animal-sniffer.signature>java${javaTarget.majorVersion}${javaTarget.minorVersion}</animal-sniffer.signature> + </properties> + + <build> + <plugins> + + <!-- Run the Animal Sniffer checks --> + <plugin> + <groupId>org.codehaus.mojo</groupId> + <artifactId>animal-sniffer-maven-plugin</artifactId> + <version>${commons.animal-sniffer.version}</version> + <executions> + <execution> + <id>checkAPIcompatibility</id> + <!-- default is: <phase>process-classes</phase> --> + <!-- Note: if the plugin is ever enhanced to check test classes + it will presumably need to be bound to process-test-classes instead + --> + <goals> + <goal>check</goal> + </goals> + </execution> + </executions> + <configuration> + <signature> + <groupId>org.codehaus.mojo.signature</groupId> + <artifactId>${animal-sniffer.signature}</artifactId> + <version>${commons.animal-sniffer.signature.version}</version> + </signature> + </configuration> + </plugin> + + </plugins> + </build> + </profile> + + <profile> + <id>jacoco</id> + <activation> + <!-- + N.B. in spite of what the Maven docs may say, + activation conditions are ORed together, see: + http://jira.codehaus.org/browse/MNG-4565 + Fairly useless, but that's what was done in + http://jira.codehaus.org/browse/MNG-3106 + + So we cannot also check for Java 1.5+ + This should not be a problem now as the profile is optional. + Components that still target Java 1.4 or earlier + just need to ensure they don't use JaCoCo by default. + --> + <file> + <exists>src/site/resources/profile.jacoco</exists> + </file> + </activation> + <build> + <plugins> + <plugin> + <groupId>org.jacoco</groupId> + <artifactId>jacoco-maven-plugin</artifactId> + <version>${commons.jacoco.version}</version> + <!-- Note that since JaCoCo relies on an agent to perform tests, + it changes the surefire arguments line. If a component also + needs to change the argument line of maven-surefire-plugin, + then it must add ${argLine} property (which is set by JaCoCo) + in the argLine configuration element of maven-surefire-plugin + to preserve JaCoCo settings. --> + <executions> + <execution> + <id>prepare-agent</id> + <phase>process-test-classes</phase> + <goals> + <goal>prepare-agent</goal> + </goals> + </execution> + <execution> + <id>report</id> + <phase>site</phase> + <goals> + <goal>report</goal> + </goals> + </execution> + <execution> + <id>check</id> + <goals> + <goal>check</goal> + </goals> + <configuration> + <rules> + <rule> + <element>BUNDLE</element> + <limits> + <limit> + <counter>CLASS</counter> + <value>COVEREDRATIO</value> + <minimum>${commons.jacoco.classRatio}</minimum> + </limit> + <limit> + <counter>INSTRUCTION</counter> + <value>COVEREDRATIO</value> + <minimum>${commons.jacoco.instructionRatio}</minimum> + </limit> + <limit> + <counter>METHOD</counter> + <value>COVEREDRATIO</value> + <minimum>${commons.jacoco.methodRatio}</minimum> + </limit> + <limit> + <counter>BRANCH</counter> + <value>COVEREDRATIO</value> + <minimum>${commons.jacoco.branchRatio}</minimum> + </limit> + <limit> + <counter>LINE</counter> + <value>COVEREDRATIO</value> + <minimum>${commons.jacoco.lineRatio}</minimum> + </limit> + <limit> + <counter>COMPLEXITY</counter> + <value>COVEREDRATIO</value> + <minimum>${commons.jacoco.complexityRatio}</minimum> + </limit> + </limits> + </rule> + </rules> + <haltOnFailure>${commons.jacoco.haltOnFailure}</haltOnFailure> + </configuration> + </execution> + </executions> + </plugin> + </plugins> + </build> + <reporting> + <plugins> + <plugin> + <groupId>org.jacoco</groupId> + <artifactId>jacoco-maven-plugin</artifactId> + <version>${commons.jacoco.version}</version> + </plugin> + </plugins> + </reporting> + </profile> + + <profile> + <id>cobertura</id> + <activation> + <file> + <exists>src/site/resources/profile.cobertura</exists> + </file> + </activation> + <reporting> + <plugins> + <plugin> + <groupId>org.codehaus.mojo</groupId> + <artifactId>cobertura-maven-plugin</artifactId> + <version>${commons.cobertura.version}</version> + </plugin> + </plugins> + </reporting> + </profile> + + <!-- + Profile for Commons releases via Nexus. + Assembles artifacts, creates source and javadoc jars, signs them and adds hashes. + --> + <profile> + <id>release</id> + <build> + <plugins> + <!-- We want to sign the artifact, the POM, and all attached artifacts --> + <plugin> + <artifactId>maven-gpg-plugin</artifactId> + <configuration> + <passphrase>${gpg.passphrase}</passphrase> + </configuration> + <executions> + <execution> + <id>sign-artifacts</id> + <phase>verify</phase> + <goals> + <goal>sign</goal> + </goals> + </execution> + </executions> + </plugin> + <plugin> + <artifactId>maven-install-plugin</artifactId> + <configuration> + <createChecksum>true</createChecksum> + </configuration> + </plugin> + <plugin> + <artifactId>maven-source-plugin</artifactId> + <executions> + <execution> + <id>create-source-jar</id> + <goals> + <goal>jar</goal> + <goal>test-jar</goal> + </goals> + </execution> + </executions> + </plugin> + <plugin> + <artifactId>maven-jar-plugin</artifactId> + <executions> + <execution> + <goals> + <goal>test-jar</goal> + </goals> + <configuration> + <!-- Avoids an error when releasing the parent pom --> + <skipIfEmpty>true</skipIfEmpty> + </configuration> + </execution> + </executions> + </plugin> + <plugin> + <artifactId>maven-release-plugin</artifactId> + <configuration> + <!-- Pass these arguments to the deploy plugin. --> + <arguments>-Prelease</arguments> + </configuration> + </plugin> + <plugin> + <artifactId>maven-javadoc-plugin</artifactId> + <executions> + <execution> + <id>create-javadoc-jar</id> + <goals> + <goal>javadoc</goal> + <goal>jar</goal> + </goals> + <phase>package</phase> + </execution> + </executions> + <configuration> + <source>${maven.compiler.source}</source> + </configuration> + </plugin> + <plugin> + <artifactId>maven-assembly-plugin</artifactId> + <inherited>true</inherited> + <executions> + <execution> + <goals> + <goal>single</goal> + </goals> + <phase>package</phase> + </execution> + </executions> + </plugin> + </plugins> + </build> + </profile> + + <!-- + profile to update the Apache parent pom profile of the same name + to better suit the requirements of Apache Commons. + [Requires further work] + --> + <profile> + <id>apache-release</id> + <build> + <plugins> + <plugin> + <artifactId>maven-release-plugin</artifactId> + <configuration> + <releaseProfiles>apache-release</releaseProfiles> + </configuration> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-source-plugin</artifactId> + <executions> + <execution> + <id>attach-test-sources</id> + <goals> + <goal>test-jar</goal> + </goals> + </execution> + </executions> + </plugin> + <plugin> + <artifactId>maven-install-plugin</artifactId> + <configuration> + <createChecksum>true</createChecksum> + </configuration> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-jar-plugin</artifactId> + <executions> + <execution> + <goals> + <goal>test-jar</goal> + </goals> + </execution> + </executions> + </plugin> + </plugins> + </build> + </profile> + + <!-- + Profile for running the build using JDK 1.3 + (JAVA_1_3_HOME needs to be defined, e.g. in settings.xml or an environment variable) + --> + <profile> + <id>java-1.3</id> + <properties> + <commons.compiler.fork>true</commons.compiler.fork> + <commons.compiler.compilerVersion>1.3</commons.compiler.compilerVersion> + <commons.compiler.javac>${JAVA_1_3_HOME}/bin/javac</commons.compiler.javac> + <commons.surefire.java>${JAVA_1_3_HOME}/bin/java</commons.surefire.java> + </properties> + </profile> + + <!-- + Profile for running the build using JDK 1.4 + (JAVA_1_4_HOME needs to be defined, e.g. in settings.xml or an environment variable) + --> + <profile> + <id>java-1.4</id> + <properties> + <commons.compiler.fork>true</commons.compiler.fork> + <commons.compiler.compilerVersion>1.4</commons.compiler.compilerVersion> + <commons.compiler.javac>${JAVA_1_4_HOME}/bin/javac</commons.compiler.javac> + <commons.surefire.java>${JAVA_1_4_HOME}/bin/java</commons.surefire.java> + <!-- later versions of surefire don't support Java 1.4 --> + <commons.surefire.version>2.11</commons.surefire.version> + </properties> + </profile> + + <!-- + Profile for running the build using JDK 1.5 + (JAVA_1_5_HOME needs to be defined, e.g. in settings.xml or an environment variable) + --> + <profile> + <id>java-1.5</id> + <properties> + <commons.compiler.fork>true</commons.compiler.fork> + <commons.compiler.compilerVersion>1.5</commons.compiler.compilerVersion> + <commons.compiler.javac>${JAVA_1_5_HOME}/bin/javac</commons.compiler.javac> + <commons.surefire.java>${JAVA_1_5_HOME}/bin/java</commons.surefire.java> + </properties> + </profile> + + <!-- + Profile for running the build using JDK 1.6 + (JAVA_1_6_HOME needs to be defined, e.g. in settings.xml or an environment variable) + --> + <profile> + <id>java-1.6</id> + <properties> + <commons.compiler.fork>true</commons.compiler.fork> + <commons.compiler.compilerVersion>1.6</commons.compiler.compilerVersion> + <commons.compiler.javac>${JAVA_1_6_HOME}/bin/javac</commons.compiler.javac> + <commons.surefire.java>${JAVA_1_6_HOME}/bin/java</commons.surefire.java> + </properties> + </profile> + + <!-- + Profile for running the build using JDK 1.7 + (JAVA_1_7_HOME needs to be defined, e.g. in settings.xml or an environment variable) + --> + <profile> + <id>java-1.7</id> + <properties> + <commons.compiler.fork>true</commons.compiler.fork> + <commons.compiler.compilerVersion>1.7</commons.compiler.compilerVersion> + <commons.compiler.javac>${JAVA_1_7_HOME}/bin/javac</commons.compiler.javac> + <commons.surefire.java>${JAVA_1_7_HOME}/bin/java</commons.surefire.java> + </properties> + </profile> + + <!-- + Profile for running the build using JDK 1.8 + (JAVA_1_8_HOME needs to be defined, e.g. in settings.xml or an environment variable) + --> + <profile> + <id>java-1.8</id> + <properties> + <commons.compiler.fork>true</commons.compiler.fork> + <commons.compiler.compilerVersion>1.8</commons.compiler.compilerVersion> + <commons.compiler.javac>${JAVA_1_8_HOME}/bin/javac</commons.compiler.javac> + <commons.surefire.java>${JAVA_1_8_HOME}/bin/java</commons.surefire.java> + </properties> + </profile> + + <!-- + Profile for running the build using JDK 1.9 + (JAVA_1_9_HOME needs to be defined, e.g. in settings.xml or an environment variable) + --> + <profile> + <id>java-1.9</id> + <properties> + <commons.compiler.fork>true</commons.compiler.fork> + <commons.compiler.compilerVersion>1.9</commons.compiler.compilerVersion> + <commons.compiler.javac>${JAVA_1_9_HOME}/bin/javac</commons.compiler.javac> + <commons.surefire.java>${JAVA_1_9_HOME}/bin/java</commons.surefire.java> + </properties> + </profile> + + <!-- N.B. when adding new java profiles, be sure to update + the _removeheaders list in the maven_bundle_plugin configuration --> + + <!-- + | Profile to allow testing of deploy phase + | e.g. + | mvn deploy -Ptest-deploy -Prelease -Dgpg.skip + --> + <profile> + <id>test-deploy</id> + <properties> + <altDeploymentRepository>id::default::file:target/deploy</altDeploymentRepository> + </properties> + </profile> + + <profile> + <!-- + Generate release notes in top-level directory from src/changes/changes.xml + Usage: + mvn changes:announcement-generate -Prelease-notes [-Dchanges.version=nnn] + + Defining changes.version allows one to create the RN without first removing the SNAPSHOT suffix. + + Requires file src/changes/release-notes.vm. + A sample template is available from: + https://svn.apache.org/repos/asf/commons/proper/commons-parent/trunk/src/changes/release-notes.vm + --> + <id>release-notes</id> + <build> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-changes-plugin</artifactId> + <version>${commons.changes.version}</version> + <configuration> + <template>release-notes.vm</template> + <templateDirectory>src/changes</templateDirectory> + <runOnlyAtExecutionRoot>true</runOnlyAtExecutionRoot> + <announcementDirectory>.</announcementDirectory> + <announcementFile>RELEASE-NOTES.txt</announcementFile> + <announceParameters> + <releaseVersion>${commons.release.version}</releaseVersion> + </announceParameters> + </configuration> + <executions> + <execution> + <id>create-release-notes</id> + <phase>generate-resources</phase> + <goals> + <goal>announcement-generate</goal> + </goals> + </execution> + </executions> + </plugin> + </plugins> + </build> + </profile> + + <!-- + Automatically run the buildnumber plugin unless the buildNumber.skip property is defined as true + --> + <profile> + <id>svn-buildnumber</id> + <activation> + <property> + <name>!buildNumber.skip</name> + <value>!true</value> + </property> + </activation> + <build> + <plugins> + <plugin> + <groupId>org.codehaus.mojo</groupId> + <artifactId>buildnumber-maven-plugin</artifactId> + <executions> + <execution> + <phase>generate-resources</phase> + <goals> + <goal>create</goal> + </goals> + </execution> + </executions> + <configuration> + <!-- Use committed revision so it does not change every time svn update is run --> + <useLastCommittedRevision>true</useLastCommittedRevision> + <!-- default revision number if unavailable --> + <revisionOnScmFailure>??????</revisionOnScmFailure> + <doCheck>false</doCheck> + <doUpdate>false</doUpdate> + </configuration> + </plugin> + </plugins> + </build> + </profile> + <!-- optional profile to use javasvn instead of the SVN CLI for the buildNumber plugin --> + <profile> + <id>javasvn</id> + <build> + <plugins> + <plugin> + <groupId>org.codehaus.mojo</groupId> + <artifactId>buildnumber-maven-plugin</artifactId> + <configuration> + <providerImplementations> + <svn>javasvn</svn> + </providerImplementations> + </configuration> + </plugin> + </plugins> + </build> + </profile> + <!-- profile to allow the use of plugin versions that require Java 7+ --> + <profile> + <id>jdk7-plugin-fix-version</id> + <activation> + <jdk>[1.7,)</jdk> + </activation> + <properties> + <!-- TODO should these be separately overrideable properties? + early versions are unlikely to be updated, but current latest will be + --> + <commons.findbugs.version>3.0.0</commons.findbugs.version> + <!-- Since 1.13 running maven with Java7 is required, 1.14 also supports Java8 class files (ASM 5.0) --> + <commons.animal-sniffer.version>1.14</commons.animal-sniffer.version> + </properties> + </profile> + + <!-- allow simple creation of the site without any optional reports --> + <profile> + <id>site-basic</id> + <properties> + <skipTests>true</skipTests> + <maven.javadoc.skip>true</maven.javadoc.skip> + <cobertura.skip>true</cobertura.skip> + <findbugs.skip>true</findbugs.skip> + <checkstyle.skip>true</checkstyle.skip> + <clirr.skip>true</clirr.skip> + <changes.jira.skip>true</changes.jira.skip> + <rat.skip>true</rat.skip> <!-- from version 0.12 --> + <jacoco.skip>true</jacoco.skip> + <skipSurefireReport>true</skipSurefireReport> + </properties> + </profile> + + </profiles> + + <properties> + <!-- configuration bits for cutting a release candidate, must be overridden by components --> + <commons.release.version>${project.version}</commons.release.version> + <commons.rc.version>RC1</commons.rc.version> + <commons.jira.id>COMMONSSITE</commons.jira.id> + + <!-- Default configuration for compiler source and target JVM --> + <!-- Do NOT change this; it must remain as 1.3 --> + <maven.compiler.source>1.3</maven.compiler.source> + <maven.compiler.target>1.3</maven.compiler.target> + + <!-- compiler and surefire plugin settings for "java" profiles --> + <commons.compiler.fork>false</commons.compiler.fork> + <commons.compiler.compilerVersion /> + <commons.compiler.javac /> + <commons.surefire.java /> + + <!-- plugin versions (allows same value in reporting and build sections) --> + <commons.surefire.version>2.18.1</commons.surefire.version> + <commons.surefire-report.version>2.18.1</commons.surefire-report.version> + <commons.javadoc.version>2.10.3</commons.javadoc.version> + <commons.rat.version>0.11</commons.rat.version> + <commons.changes.version>2.11</commons.changes.version> + <commons.clirr.version>2.6.1</commons.clirr.version> + <commons.jxr.version>2.5</commons.jxr.version> + <commons.project-info.version>2.8</commons.project-info.version> + <commons.wagon-ssh.version>2.8</commons.wagon-ssh.version> + <commons.site-plugin.version>3.4</commons.site-plugin.version> + <commons.jacoco.version>0.7.5.201505241946</commons.jacoco.version> + <commons.cobertura.version>2.7</commons.cobertura.version> + <commons.jdepend.version>2.0</commons.jdepend.version> + <commons.compiler.version>3.3</commons.compiler.version> + <commons.scm-publish.version>1.1</commons.scm-publish.version> + <commons.findbugs.version>2.5.5</commons.findbugs.version> + <!-- plugin versions 1.12 and 1.13 currently require Java 7 --> + <commons.animal-sniffer.version>1.11</commons.animal-sniffer.version> + <!-- Almost all signatures use version 1.0. Allow override just in case --> + <commons.animal-sniffer.signature.version>1.0</commons.animal-sniffer.signature.version> + + <!-- Default values for the download-page generation by commons-build-plugin --> + <commons.release.name>${project.artifactId}-${commons.release.version}</commons.release.name> + <commons.release.desc /> + <commons.binary.suffix>-bin</commons.binary.suffix> + <commons.release.2.name>${project.artifactId}-${commons.release.2.version}</commons.release.2.name> + <commons.release.2.desc /> + <commons.release.2.binary.suffix>-bin</commons.release.2.binary.suffix> + <commons.release.3.name>${project.artifactId}-${commons.release.3.version}</commons.release.3.name> + <commons.release.3.desc /> + <commons.release.3.binary.suffix>-bin</commons.release.3.binary.suffix> + + <!-- Default values for the jacoco-maven-plugin reports --> + <commons.jacoco.classRatio>1.00</commons.jacoco.classRatio> + <commons.jacoco.instructionRatio>0.90</commons.jacoco.instructionRatio> + <commons.jacoco.methodRatio>0.95</commons.jacoco.methodRatio> + <commons.jacoco.branchRatio>0.85</commons.jacoco.branchRatio> + <commons.jacoco.complexityRatio>0.85</commons.jacoco.complexityRatio> + <commons.jacoco.lineRatio>0.90</commons.jacoco.lineRatio> + <commons.jacoco.haltOnFailure>false</commons.jacoco.haltOnFailure> + + <!-- Commons Component Id --> + <commons.componentid>${project.artifactId}</commons.componentid> + + <!-- Configuration properties for the OSGi maven-bundle-plugin --> + <commons.osgi.symbolicName>org.apache.commons.${commons.componentid}</commons.osgi.symbolicName> + <commons.osgi.export>org.apache.commons.*;version=${project.version};-noimport:=true</commons.osgi.export> + <commons.osgi.import>*</commons.osgi.import> + <commons.osgi.dynamicImport /> + <commons.osgi.private /> + <commons.osgi.excludeDependencies>true</commons.osgi.excludeDependencies> + + <!-- location of any manifest file used by maven-jar-plugin --> + <commons.manifestfile>${project.build.directory}/osgi/MANIFEST.MF</commons.manifestfile> + + <!-- + Make the deployment protocol pluggable. This allows to switch to + other protocols like scpexe, which some users prefer over scp. + --> + <commons.deployment.protocol>scp</commons.deployment.protocol> + + <!-- + Encoding of Java source files: ensures that the compiler and + the javadoc generator use the right encoding. Subprojects may + overwrite this, if they are using another encoding. + --> + <commons.encoding>iso-8859-1</commons.encoding> + <!-- used in this pom to provide the Javadoc HTML file encoding --> + <commons.docEncoding>${commons.encoding}</commons.docEncoding> + <!-- Define source encoding for filtering; used by general plugins --> + <project.build.sourceEncoding>${commons.encoding}</project.build.sourceEncoding> + <!-- This is used by reporting plugins --> + <project.reporting.outputEncoding>${commons.encoding}</project.reporting.outputEncoding> + + <!-- Javadoc link to Java API. Default is Java 1.7; components can override to other versions --> + <commons.javadoc.java.link>http://docs.oracle.com/javase/7/docs/api/</commons.javadoc.java.link> + <commons.javadoc.javaee.link>http://docs.oracle.com/javaee/6/api/</commons.javadoc.javaee.link> + + <!-- build meta inf --> + <maven.build.timestamp.format>yyyy-MM-dd HH:mm:ssZ</maven.build.timestamp.format> + <implementation.build>${scmBranch}@r${buildNumber}; ${maven.build.timestamp}</implementation.build> + + <!-- Allow Clirr severity to be overriden by the command-line option -DminSeverity=level --> + <minSeverity>info</minSeverity> + + <!-- Control number of issues retrieved from JIRA with changes plugin --> + <commons.changes.maxEntries>100</commons.changes.maxEntries> + + <!-- Allow surefire-report aggregation to be easily configured for multi-module projects --> + <commons.surefire-report.aggregate>false</commons.surefire-report.aggregate> + + <!-- Allow changes Jira report to be restricted to just the current version (plugin default is false)--> + <commons.changes.onlyCurrentVersion>false</commons.changes.onlyCurrentVersion> + <!-- Allow changes Jira report maxEntries to be overridden (plugin default 100) --> + <commons.changes.maxEntries>100</commons.changes.maxEntries> + <!-- Allow changes Jira report runOnlyAtExecutionRoot to be overridden (plugin default is false) --> + <commons.changes.runOnlyAtExecutionRoot>false</commons.changes.runOnlyAtExecutionRoot> + + <!-- scm publish plugin configuration --> + <commons.site.cache>${user.home}/commons-sites</commons.site.cache> + <!-- value modules can override it --> + <commons.site.path>${project.artifactId}</commons.site.path> + + <commons.scmPubUrl>https://svn.apache.org/repos/infra/websites/production/commons/content/proper/${project.artifactId}</commons.scmPubUrl> + <commons.scmPubCheckoutDirectory>${commons.site.cache}/${commons.site.path}</commons.scmPubCheckoutDirectory> + <commons.scmPubServer>commons.site</commons.scmPubServer> + + <sonar.host.url>https://analysis.apache.org/</sonar.host.url> + + </properties> + +</project>