Skip to content
Commits on Source (5)
classes
workbook.xls
bak
build.number
*.el
scripts
untitled1.jpx
log*.*
*.log
forrest.properties
compile-lib/
ooxml-lib/
# Eclipse
/bin
.settings
# Tests
junit*.properties
TEST-org.apache.poi*.xml
# Sonar
.sonar
sonar/main/src/
sonar/ooxml/src/
sonar/scratchpad/src/
sonar/ooxml-schema-security/src/
sonar/examples/src/
sonar/excelant/src/
sonar/target
sonar/*/target
# IntelliJ
/out/
.idea
*.iml
*.iws
*.ipr
# Gradle
.gradle
# Ant
.ant-targets-build.xml
build
dist
lib/
This diff is collapsed.
Apache POI
======================
A Java library for reading and writing Microsoft Office binary and OOXML file formats.
The Apache POI Project's mission is to create and maintain Java APIs for manipulating various file formats based upon the Office Open XML standards (OOXML) and Microsoft's OLE 2 Compound Document format (OLE2). In short, you can read and write MS Excel files using Java. In addition, you can read and write MS Word and MS PowerPoint files using Java. Apache POI is your Java Excel solution (for Excel 97-2008). We have a complete API for porting other OOXML and OLE2 formats and welcome others to participate.
OLE2 files include most Microsoft Office files such as XLS, DOC, and PPT as well as MFC serialization API based file formats. The project provides APIs for the OLE2 Filesystem (POIFS) and OLE2 Document Properties (HPSF).
Office OpenXML Format is the new standards based XML file format found in Microsoft Office 2007 and 2008. This includes XLSX, DOCX and PPTX. The project provides a low level API to support the Open Packaging Conventions using openxml4j.
For each MS Office application there exists a component module that attempts to provide a common high level Java api to both OLE2 and OOXML document formats. This is most developed for Excel workbooks (SS=HSSF+XSSF). Work is progressing for Word documents (WP=HWPF+XWPF) and PowerPoint presentations (SL=HSLF+XSLF).
The project has some support for Outlook (HSMF). Microsoft opened the specifications to this format in October 2007. We would welcome contributions.
There are also projects for Visio (HDGF and XDGF), TNEF (HMEF), and Publisher (HPBF).
This library includes the following components, roughly in descending order of maturity:
* Excel spreadsheets (Common SS = HSSF, XSSF, and SXSSF)
* PowerPoint slideshows (Common SL = HSLF and XSLF)
* Word processing documents (Common WP = HWPF and XWPF)
* Outlook email (HSMF and HMEF)
* Visio diagrams (HDGF and XDGF)
* Publisher (HPBF)
And lower-level, supporting components:
* OLE2 Filesystem (POIFS)
* OLE2 Document Properties (HPSF)
* TNEF (HMEF) for Outlook winmail.dat files
* OpenXML4J (OOXML)
| Components named H??F are for reading or writing OLE2 binary formats.
| Components named X??F are for reading or writing OpenOffice XML (OOXML) formats.
Getting started
------------------
Website: https://poi.apache.org/
`Mailing lists`_:
* `Developers`_
* `Users`_
* `General`_ (release announcements)
Bug tracker:
* `Bugzilla`_
* `GitHub pull requests`_
Source code:
* Official `Apache Subversion repo`_ at apache.org
* `ViewVC repo browser`_ at apache.org
* Official `Apache git mirror`_ at apache.org
* Unofficial `GitHub git mirror`_ at github.com
Requires Java 1.6 or later.
Contributing
------------------
* Download and install svn or git, Java JDK 1.6+, and Apache Ant 1.8+ or Gradle
* Check out the code from svn or git
* Import the project into Eclipse or your favorite IDE
* Write a unit test:
* Binary formats and Common APIs: src/testcases/org/apache/poi/
* OOXML APIs only: src/ooxml/testcases/org/apache/poi/
* Scratchpad (Binary formats): src/scratchpad/testcases/org/apache/poi/
* test files: test-data/
* Navigate the source, make changes, and run unit tests to verify
* Binary formats and Common APIs: src/java/org/apache/poi/
* OOXML APIs only: src/ooxml/java/org/apache/poi/
* Scratchpad (Binary formats): src/scratchpad/src/org/apache/poi/
* Examples: src/examples/src/org/apache/poi/
Building jar files
------------------
To build the jar files for poi, poi-ooxml, poi-ooxml-schemas, and poi-examples::
ant jar
.. _Mailing lists: https://poi.apache.org/mailinglists.html
.. _Developers: https://lists.apache.org/list.html?dev@poi.apache.org
.. _Users: https://lists.apache.org/list.html?user@poi.apache.org
.. _General: https://lists.apache.org/list.html?general@poi.apache.org
.. _Bugzilla: https://bz.apache.org/bugzilla/buglist.cgi?product=POI
.. _GitHub pull requests: https://github.com/apache/poi/pulls
.. _Apache Subversion repo: https://svn.apache.org/repos/asf/poi/trunk
.. _ViewVC repo browser: https://svn.apache.org/viewvc/poi/trunk
.. _Apache git mirror: https://git.apache.org/poi.git/
.. _GitHub git mirror: https://github.com/apache/poi
/* ====================================================================
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.
==================================================================== */
buildscript {
repositories {
maven { url "https://plugins.gradle.org/m2/" }
}
dependencies {
classpath 'me.champeau.gradle:japicmp-gradle-plugin:0.1.2' // 2.x requires Gradle >=4
classpath "org.sonarsource.scanner.gradle:sonarqube-gradle-plugin:2.2.1"
}
}
// Only add the plugin for Sonar if enabled as it requires Java 8
if (project.hasProperty('enableSonar')) {
println 'Enabling Sonar support'
apply plugin: "org.sonarqube"
}
// For help converting an Ant build to a Gradle build, see
// https://docs.gradle.org/current/userguide/ant.html
ant.importBuild 'build.xml'
/**
Define properties for all projects, including this one
*/
allprojects {
apply plugin: 'eclipse'
task wrapper(type: Wrapper) {
gradleVersion = '3.4.1'
}
task adjustWrapperPropertiesFile {
doLast {
ant.replaceregexp(match:'^#.*', replace:'', flags:'g', byline:true) {
fileset(dir: project.projectDir, includes: 'gradle/wrapper/gradle-wrapper.properties')
}
new File(project.projectDir, 'gradle/wrapper/gradle-wrapper.properties').with { it.text = it.readLines().findAll { it }.sort().join('\n') }
ant.fixcrlf(file: 'gradle/wrapper/gradle-wrapper.properties', eol: 'lf')
}
}
wrapper.finalizedBy adjustWrapperPropertiesFile
}
/**
Define things that are only necessary in sub-projects, but not in the master-project itself
*/
subprojects {
//Put instructions for each sub project, but not the master
apply plugin: 'java'
apply plugin: 'jacoco'
// See https://github.com/melix/japicmp-gradle-plugin
apply plugin: 'me.champeau.gradle.japicmp'
version = '3.16-beta3'
ext {
japicmpversion = '3.15'
}
tasks.withType(JavaCompile) {
options.encoding = 'UTF-8'
}
sourceCompatibility = 1.6
repositories {
mavenCentral()
}
jar {
manifest {
attributes 'Implementation-Title': 'Apache POI', 'Implementation-Version': version
}
}
test {
// Exclude some tests that are not actually tests or do not run cleanly on purpose
exclude '**/BaseTestBorderStyle.class'
exclude '**/BaseTestCellUtil.class'
exclude '**/TestUnfixedBugs.class'
exclude '**/TestOneFile.class'
systemProperties = System.properties
// set heap size for the test JVM(s)
minHeapSize = "128m"
maxHeapSize = "768m"
// show standard out and standard error of the test JVM(s) on the console
//testLogging.showStandardStreams = true
// http://forums.gradle.org/gradle/topics/jacoco_related_failure_in_multiproject_build
systemProperties['user.dir'] = workingDir
systemProperties['POI.testdata.path'] = '../../test-data'
//systemProperties['user.language'] = 'en'
//systemProperties['user.country'] = 'US'
}
test.beforeSuite { TestDescriptor suite ->
System.setProperty('user.language', 'en')
System.setProperty('user.country', 'US')
}
jacoco {
toolVersion = '0.7.8'
}
// ensure the build-dir exists
projectDir.mkdirs()
if (project.hasProperty('enableSonar')) {
sonarqube {
properties {
// as we currently use build/<module>/ as project-basedir, we need to tell Sonar to use
// the root-folder as "basedir" for the projects
property "sonar.projectBaseDir", "$projectDir/../.."
}
}
}
}
project('main') {
sourceSets.main.java.srcDirs = ['../../src/java']
sourceSets.main.resources.srcDirs = ['../../src/resources/main']
sourceSets.test.java.srcDirs = ['../../src/testcases']
dependencies {
compile 'commons-codec:commons-codec:1.10'
compile 'commons-logging:commons-logging:1.2'
compile 'org.apache.commons:commons-collections4:4.1'
testCompile 'junit:junit:4.12'
}
// Create a separate jar for test-code to depend on it in other projects
// See http://stackoverflow.com/questions/5144325/gradle-test-dependency
task testJar(type: Jar, dependsOn: testClasses) {
baseName = "test-${project.archivesBaseName}"
from sourceSets.test.output
}
configurations {
tests
}
artifacts {
tests testJar
}
// TOOD: we should not duplicate this task in each project, but I did not figure out how to inject the artifactId for each project
task japicmp(type: me.champeau.gradle.ArtifactJapicmpTask, dependsOn: jar) {
baseline = 'org.apache.poi:poi:' + japicmpversion + '@jar'
to = jar.archivePath
onlyModified = true
onlyBinaryIncompatibleModified = true
failOnModification = false
txtOutputFile = file("$buildDir/reports/japi.txt")
htmlOutputFile = file("$buildDir/reports/japi.html")
}
}
project('ooxml') {
sourceSets.main.java.srcDirs = ['../../src/ooxml/java']
sourceSets.main.resources.srcDirs = ['../../src/ooxml/resources', '../../src/resources/ooxml']
sourceSets.test.java.srcDirs = ['../../src/ooxml/testcases']
// for now import the ant-task for building the jars from build.xml
// we need to rename the tasks as e.g. task "jar" conflicts with :ooxml:jar
ant.importBuild('../../build.xml') { antTargetName ->
'ant-' + antTargetName
}
compileJava.dependsOn 'ant-compile-ooxml-xsds'
dependencies {
compile 'org.apache.xmlbeans:xmlbeans:2.6.0'
compile 'org.apache.commons:commons-collections4:4.1'
compile 'org.apache.santuario:xmlsec:2.0.6'
compile 'org.bouncycastle:bcpkix-jdk15on:1.54'
compile 'com.github.virtuald:curvesapi:1.04'
// for ooxml-lite, should we move this somewhere else?
compile 'junit:junit:4.12'
compile project(':main')
compile project(':scratchpad') // TODO: get rid of this dependency!
compile files('../../ooxml-lib/ooxml-schemas-1.3.jar')
compile files('../../ooxml-lib/ooxml-security-1.1.jar')
testCompile 'junit:junit:4.12'
testCompile project(path: ':main', configuration: 'tests')
// Keep using 1.15 until we switch to Java 7
testCompile 'org.openjdk.jmh:jmh-core:1.15'
testCompile 'org.openjdk.jmh:jmh-generator-annprocess:1.15'
}
// TOOD: we should not duplicate this task in each project, but I did not figure out how to inject the artifactId for each project
task japicmp(type: me.champeau.gradle.ArtifactJapicmpTask, dependsOn: jar) {
baseline = 'org.apache.poi:poi-ooxml:' + japicmpversion + '@jar'
to = jar.archivePath
onlyModified = true
onlyBinaryIncompatibleModified = true
failOnModification = false
txtOutputFile = file("$buildDir/reports/japi.txt")
htmlOutputFile = file("$buildDir/reports/japi.html")
}
}
project('examples') {
sourceSets.main.java.srcDirs = ['../../src/examples/src']
dependencies {
compile project(':main')
compile project(':ooxml')
}
}
project('excelant') {
sourceSets.main.java.srcDirs = ['../../src/excelant/java']
sourceSets.main.resources.srcDirs = ['../../src/excelant/resources']
sourceSets.test.java.srcDirs = ['../../src/excelant/testcases']
dependencies {
compile 'org.apache.ant:ant:1.9.4'
compile project(':main')
compile project(':ooxml')
testCompile project(path: ':main', configuration: 'tests')
}
// TOOD: we should not duplicate this task in each project, but I did not figure out how to inject the artifactId for each project
task japicmp(type: me.champeau.gradle.ArtifactJapicmpTask, dependsOn: jar) {
baseline = 'org.apache.poi:poi-excelant:' + japicmpversion + '@jar'
to = jar.archivePath
onlyModified = true
onlyBinaryIncompatibleModified = true
failOnModification = false
txtOutputFile = file("$buildDir/reports/japi.txt")
htmlOutputFile = file("$buildDir/reports/japi.html")
}
}
project('integrationtest') {
sourceSets.test.java.srcDirs = ['../../src/integrationtest']
dependencies {
compile 'org.apache.ant:ant:1.9.4'
compile project(':main')
compile project(':ooxml')
compile project(':scratchpad')
compile project(':examples')
testCompile 'junit:junit:4.12'
}
test {
// exclude these from the normal test-run
exclude '**/TestAllFiles.class'
exclude '**/*FileHandler.class'
exclude '**/RecordsStresser.class'
}
task integrationTest(type: Test) {
// these are just tests used during development of more test-code
exclude '**/*FileHandler.class'
exclude '**/RecordStresser.class'
}
}
project('scratchpad') {
sourceSets.main.java.srcDirs = ['../../src/scratchpad/src']
sourceSets.main.resources.srcDirs = ['../../src/resources/scratchpad']
sourceSets.test.java.srcDirs = ['../../src/scratchpad/testcases']
dependencies {
compile project(':main')
// cyclic-dependency here: compile project(':ooxml')
testCompile 'junit:junit:4.12'
testCompile project(path: ':main', configuration: 'tests')
}
// TOOD: we should not duplicate this task in each project, but I did not figure out how to inject the artifactId for each project
task japicmp(type: me.champeau.gradle.ArtifactJapicmpTask, dependsOn: jar) {
baseline = 'org.apache.poi:poi-scratchpad:' + japicmpversion + '@jar'
to = jar.archivePath
onlyModified = true
onlyBinaryIncompatibleModified = true
failOnModification = false
txtOutputFile = file("$buildDir/reports/japi.txt")
htmlOutputFile = file("$buildDir/reports/japi.html")
}
}
This diff is collapsed.
......@@ -5,20 +5,71 @@
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:asfext="http://projects.apache.org/ns/asfext#"
xmlns:foaf="http://xmlns.com/foaf/0.1/">
<Project rdf:about="http://poi.apache.org">
<!--
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 rdf:about="https://poi.apache.org">
<created>2006-01-26</created>
<license rdf:resource="http://usefulinc.com/doap/licenses/asl20" />
<license rdf:resource="https://spdx.org/licenses/Apache-2.0" />
<name>Apache POI</name>
<homepage rdf:resource="http://poi.apache.org" />
<asfext:pmc rdf:resource="http://poi.apache.org" />
<homepage rdf:resource="https://poi.apache.org" />
<asfext:pmc rdf:resource="https://poi.apache.org" />
<shortdesc>Java API To Access Microsoft Document File Formats</shortdesc>
<description>APIs for manipulating various file formats based upon Open Office XML (ECMA-376) and Microsoft's OLE 2 Compound Document formats using pure Java. Apache POI is your Java Excel, Word and PowerPoint solution. We have a complete API for porting other OOXML and OLE 2 Compound Document formats and welcome others to participate.</description>
<bug-database rdf:resource="http://issues.apache.org/bugzilla/buglist.cgi?product=POI" />
<mailing-list rdf:resource="http://poi.apache.org/mailinglists.html" />
<download-page rdf:resource="http://www.apache.org/dyn/closer.cgi/poi/" />
<bug-database rdf:resource="https://issues.apache.org/bugzilla/buglist.cgi?product=POI" />
<mailing-list rdf:resource="https://poi.apache.org/mailinglists.html" />
<download-page rdf:resource="https://www.apache.org/dyn/closer.lua/poi/" />
<programming-language>Java</programming-language>
<category rdf:resource="http://projects.apache.org/category/content" />
<category rdf:resource="http://projects.apache.org/category/library" />
<category rdf:resource="https://projects.apache.org/category/content" />
<category rdf:resource="https://projects.apache.org/category/library" />
<release>
<Version>
<name>Apache POI 3.16</name>
<created>2017-04-19</created>
<revision>3.16</revision>
</Version>
</release>
<release>
<Version>
<name>Apache POI 3.15</name>
<created>2016-09-21</created>
<revision>3.15</revision>
</Version>
</release>
<release>
<Version>
<name>Apache POI 3.14</name>
<created>2016-03-05</created>
<revision>3.14</revision>
</Version>
</release>
<release>
<Version>
<name>Apache POI 3.13</name>
<created>2015-09-29</created>
<revision>3.13</revision>
</Version>
</release>
<release>
<Version>
<name>Apache POI 3.12</name>
<created>2015-05-11</created>
<revision>3.12</revision>
</Version>
</release>
<release>
<Version>
<name>Apache POI 3.11</name>
......@@ -84,14 +135,14 @@
</release>
<repository>
<SVNRepository>
<location rdf:resource="http://svn.apache.org/repos/asf/poi/"/>
<browse rdf:resource="http://svn.apache.org/viewvc/poi/"/>
<location rdf:resource="https://svn.apache.org/repos/asf/poi/"/>
<browse rdf:resource="https://svn.apache.org/viewvc/poi/"/>
</SVNRepository>
</repository>
<maintainer>
<foaf:Person>
<foaf:name>Yegor Kozlov</foaf:name>
<foaf:mbox rdf:resource="mailto:yegor@apache.org"/>
<foaf:name>POI Committers</foaf:name>
<foaf:mbox rdf:resource="mailto:dev@poi.apache.org"/>
</foaf:Person>
</maintainer>
</Project>
......
# JaCoCo Agent
sun.instrument.InstrumentationImpl.loadClassAndStartAgent
org.jacoco.agent.rt.internal_14f7ee5.output.FileOutput.openFile
# Ant Junit
org.apache.tools.ant.taskdefs.optional.junit.XMLJUnitResultFormatter.getDocumentBuilder
# JVM
sun.security.jca.ProviderConfig.doLoadProvider
javax.xml.parsers.FactoryFinder.findJarServiceProvider
com.sun.org.apache.xerces.internal.utils.SecuritySupport.getResourceBundle
# Codepage support loads classes
java.nio.charset.Charset.lookupViaProviders
# Ant
org.apache.tools.ant.Main.getAntVersion
javax.xml.parsers.FactoryFinder.findJarServiceProvider
org.apache.tools.ant.taskdefs.Antlib.createAntlib
# XML Parser
com.sun.org.apache.xerces.internal.utils.SecuritySupport.getResourceBundle
com.sun.org.apache.xml.internal.serializer.OutputPropertiesFactory.loadPropertiesFile
com.sun.xml.internal.bind.v2.runtime.property.ArrayElementNodeProperty.<init>
com.sun.xml.internal.bind.v2.runtime.property.AttributeProperty.<init>
com.sun.xml.internal.bind.v2.runtime.property.SingleElementNodeProperty.<init>
javax.xml.stream.FactoryFinder.findJarServiceProvider
# XMLBeans
org.apache.xmlbeans.impl.regex.RegexParser.setLocale
org.apache.xmlbeans.impl.schema.SchemaTypeSystemImpl$XsbReader.getLoaderStream
# JCA
sun.security.jca.ProviderConfig.getProvider
javax.crypto.JceSecurity.setupJurisdictionPolicies
javax.crypto.Cipher.getMaxAllowedKeyLength
# IntelliJ
com.intellij.junit4.JUnit4TestRunnerUtil.<clinit>
# Java
sun.util.resources.LocaleData.getBundle
sun.util.LocaleServiceProviderPool.<init>
sun.util.calendar.LocalGregorianCalendar.getLocalGregorianCalendar
sun.net.www.protocol.jar.JarURLConnection.getInputStream
sun.text.normalizer.ICUData.getStream
sun.font.T2KFontScaler.initNativeScaler
sun.font.SunFontManager.loadFonts
sun.font.FontManagerFactory.getInstance
sun.font.TrueTypeFont.open
sun.reflect.misc.MethodUtil.<clinit>
java.util.logging.Logger.findSystemResourceBundle
java.text.BreakIterator.getBundle
sun.java2d.SunGraphicsEnvironment.<init>
org.kohsuke.file_leak_detector.AgentMain.runHttpServer
# 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.
##############
# Properties used by forrest.build.xml for building the website
# These are the defaults, un-comment them only if you need to change them.
#
# You can even have a completely empty file, to assist with maintenance.
# This file is required, even if empty.
#
# The file obtained from 'forrest seed-sample' shows the defaults.
##############
# Prints out a summary of Forrest settings for this project
......@@ -9,41 +29,60 @@ forrest.echo=true
#project.name=my-project
# Specifies name of Forrest skin to use
#project.skin=forrest-site
#project.skin=avalon-tigris
#project.skin=krysalis-site
project.skin=poi-site
# See list at http://forrest.apache.org/docs/skins.html
#project.skin=pelt
project.bugtracking-url=https://bz.apache.org/bugzilla/
project.github-url=https://github.com/apache/poi
# codename: Dispatcher
# Dispatcher is using a fallback mechanism for theming.
# You can configure the theme name and its extension here
#project.theme-extension=.fv
#project.theme=pelt
# Descriptors for plugins and skins
# comma separated list, file:// is supported
#forrest.skins.descriptors=http://forrest.apache.org/skins/skins.xml,file:///c:/myskins/skins.xml
#forrest.plugins.descriptors=http://forrest.apache.org/plugins/plugins.xml,http://forrest.apache.org/plugins/whiteboard-plugins.xml
##############
# behavioural properties
#project.menu-scheme=tab_attributes
#project.menu-scheme=directories
##############
# layout properties
# Properties that must be set to override the default locations
# Properties that can be set to override the default locations
#
# Parent properties must be set. This usually means uncommenting
# project.content-dir if any other property using it is uncommented
#project.status=status.xml
#project.content-dir=src/documentation
#project.content-dir=${project.home}/src/documentation
#project.raw-content-dir=${project.content-dir}/content
#project.conf-dir=${project.content-dir}/conf
#project.sitemap=${project.content-dir}/sitemap.xmap
project.configfile=${project.home}/src/documentation/cli.xconf
#project.sitemap-dir=${project.content-dir}
#project.xdocs-dir=${project.content-dir}/content/xdocs
#project.stylesheets-dir=${project.content-dir}/resources/stylesheets
#project.images-dir=${project.content-dir}/resources/images
#project.schema-dir=${project.content-dir}/resources/schema
#project.resources-dir=${project.content-dir}/resources
#project.stylesheets-dir=${project.resources-dir}/stylesheets
#project.images-dir=${project.resources-dir}/images
#project.schema-dir=${project.resources-dir}/schema
#project.skins-dir=${project.content-dir}/skins
#project.skinconf=${project.content-dir}/skinconf.xml
#project.lib-dir=${project.content-dir}/lib
#project.classes-dir=${project.content-dir}/classes
#project.translations-dir=${project.content-dir}/translations
#project.build-dir=${project.home}/build
#project.site=site
#project.site-dir=${project.build-dir}/${project.site}
#project.temp-dir=${project.build-dir}/tmp
##############
# Cocoon catalog entity resolver properties
# A local catalog to supplement the default Forrest catalog
#project.catalog=${project.schema-dir}/catalog
# A local OASIS catalog file to supplement the default Forrest catalog
#project.catalog=${project.schema-dir}/catalog.xcat
# The verbosity level for the entity resolver (1..10)
#forrest.catalog.verbosity=1
......@@ -52,49 +91,74 @@ project.github-url=https://github.com/apache/poi
##############
# validation properties
# These props determine if validation is performed at all
# This set of properties determine if validation is performed
# Values are inherited unless overridden.
# Eg, if forrest.validate=false, then all others are false unless set to true.
# e.g. if forrest.validate=false then all others are false unless set to true.
#forrest.validate=true
#forrest.validate.xdocs=${forrest.validate}
#forrest.validate.skinconf=${forrest.validate}
#YK: validation of sitemap and skins must be turned off to run forrest on JDK 1.6+, see https://issues.apache.org/jira/browse/FOR-984
forrest.validate.sitemap=false
forrest.validate.stylesheets=false
forrest.validate.skins=false
forrest.validate.skins.stylesheets=false
# Key:
# *.failonerror=(true|false) stop when an XML file is invalid
# *.includes=(pattern) Comma-separated list of path patterns to validate
# *.excludes=(pattern) Comma-separated list of path patterns to not validate
#forrest.validate.sitemap=${forrest.validate}
#forrest.validate.stylesheets=${forrest.validate}
#forrest.validate.skins=${forrest.validate}
#forrest.validate.skins.stylesheets=${forrest.validate.skins}
# *.failonerror=(true|false) - stop when an XML file is invalid
#forrest.validate.failonerror=true
#forrest.validate.includes=**/*
#forrest.validate.excludes=
#
#forrest.validate.xdocs.failonerror=${forrest.validate.failonerror}
#
#forrest.validate.xdocs.includes=**/*.x*
# *.excludes=(pattern) - comma-separated list of path patterns to not validate
# Note: If you do add an "excludes" list then you need to specify site.xml too.
# e.g.
#forrest.validate.xdocs.excludes=site.xml, samples/subdir/**, samples/faq.xml
#forrest.validate.xdocs.excludes=site.xml
#
#forrest.validate.skinconf.includes=${skinconf-file}
#forrest.validate.skinconf.excludes=
#forrest.validate.skinconf.failonerror=${forrest.validate.failonerror}
#
#forrest.validate.sitemap.includes=${sitemap-file}
#forrest.validate.sitemap.excludes=
#forrest.validate.sitemap.failonerror=${forrest.validate.failonerror}
#
#forrest.validate.stylesheets.includes=**/*.xsl
#forrest.validate.stylesheets.excludes=
#forrest.validate.stylesheets.failonerror=${forrest.validate.failonerror}
#
#forrest.validate.skins.includes=**/*
#forrest.validate.skins.excludes=**/*.xsl
#forrest.validate.skins.failonerror=${forrest.validate.failonerror}
#
#forrest.validate.skins.stylesheets.includes=**/*.xsl
#forrest.validate.skins.stylesheets.excludes=
#forrest.validate.skins.stylesheets.failonerror=${forrest.validate.skins.failonerror}
##############
# General Forrest properties
# The URL to start crawling from
#project.start-uri=linkmap.html
# Set logging level for messages printed to the console
# (DEBUG, INFO, WARN, ERROR, FATAL_ERROR)
#project.debuglevel=ERROR
# Max memory to allocate to Java
#forrest.maxmemory=64m
# Any other arguments to pass to the JVM. For example, to run on an X-less
# server, set to -Djava.awt.headless=true
#forrest.jvmargs=
# The bugtracking URL - the issue number will be appended
# Projects would use their own issue tracker, of course.
project.bugtracking-url=https://bz.apache.org/bugzilla/
project.github-url=https://github.com/apache/poi
# The issues list as rss
#project.issues-rss-url=
#I18n Property. Based on the locale request for the browser.
#If you want to use it for static site then modify the JVM system.language
# and run once per language
#project.i18n=false
# The names of plugins that are required to build the project
# comma separated list (no spaces)
# You can request a specific version by appending "-VERSION" to the end of
# the plugin name. If you exclude a version number, the latest released version
# will be used. However, be aware that this may be a development version. In
# a production environment it is recommended that you specify a known working
# version.
# Run "forrest available-plugins" for a list of plug-ins currently available.
project.required.plugins=org.apache.forrest.plugin.output.pdf
# codename: Dispatcher
# Add the following plugins to project.required.plugins:
#org.apache.forrest.plugin.internal.dispatcher
# Proxy configuration
# - proxy.user and proxy.password are only needed if the proxy is an authenticated one...
# proxy.host=myproxy.example.org
# proxy.port=<ProxyPort, if not the default : 80>
# proxy.user=<login, if authenticated proxy>
# proxy.password=<password, if authenticated proxy>
// This script is used as input to the Jenkins Job DSL plugin to create all the build-jobs that
// Apache POI uses on the public Jenkins instance at https://builds.apache.org/view/P/view/POI/
//
// See https://github.com/jenkinsci/job-dsl-plugin/wiki for information about the DSL, you can
// use http://job-dsl.herokuapp.com/ to validate the code before checkin
//
def triggerSundays = '''
# only run this once per week on Sundays
H H * * 0
'''
def findbugs2Url = 'http://downloads.sourceforge.net/project/findbugs/findbugs/2.0.3/findbugs-noUpdateChecks-2.0.3.zip?download='
def findbugs2Lib = 'lib/findbugs-noUpdateChecks-2.0.3.zip'
def findbugs3Url = 'http://downloads.sourceforge.net/project/findbugs/findbugs/3.0.1/findbugs-noUpdateChecks-3.0.1.zip?download='
def findbugs3Lib = 'lib/findbugs-noUpdateChecks-3.0.1.zip'
def xercesUrl = 'http://repo1.maven.org/maven2/xerces/xercesImpl/2.6.1/xercesImpl-2.6.1.jar'
def xercesLib = 'compile-lib/xercesImpl-2.6.1.jar'
def poijobs = [
[ name: 'POI-DSL-1.6',
// workaround as Sourceforge does not accept any of the SSL ciphers in JDK 6 any more and thus we cannot download this jar
// as part of the Ant build
addShell: "wget -O ${findbugs2Lib} ${findbugs2Url}"
],
[ name: 'POI-DSL-1.8', jdk: '1.8', trigger: 'H */12 * * *'
],
[ name: 'POI-DSL-OpenJDK', jdk: 'OpenJDK', trigger: 'H */12 * * *',
// H13-H20 (Ubuntu 16.04) do not have OpenJDK 6 installed, see https://issues.apache.org/jira/browse/INFRA-12880
slaveAdd: '&&!beam1&&!beam2&&!beam3&&!beam4&&!beam5&&!beam6&&!beam7&&!beam8&&!H12&&!H13&&!H14&&!H15&&!H16&&!H17&&!H18&&!H19&&!H20&&!H21&&!H22&&!H23&&!H24&&!H25&&!H26&&!H27&&!qnode1&&!qnode2&&!qnode3&&!ubuntu-eu2&&!ubuntu-eu3&&!ubuntu-us1',
// the JDK is missing on some slaves so builds are unstable
skipcigame: true
],
[ name: 'POI-DSL-1.9', jdk: '1.9', trigger: triggerSundays,
properties: ['-Dmaxpermsize=-Dthis.is.a.dummy=true',
'-Djava9addmods=--add-modules=java.xml.bind',
'-Djavadoc9addmods=--add-modules=java.xml.bind',
'-Djava9addmodsvalue=-Dsun.reflect.debugModuleAccessChecks=true',
'-Djava9addopens1=--add-opens=java.xml/com.sun.org.apache.xerces.internal.util=ALL-UNNAMED',
'-Djava9addopens2=--add-opens=java.base/java.io=ALL-UNNAMED',
'-Djava9addopens3=--add-opens=java.base/java.nio=ALL-UNNAMED',
'-Djava9addopens4=--add-opens=java.base/java.lang=ALL-UNNAMED',
'-Djava9addopens5=--add-opens=java.base/jdk.internal.ref=ALL-UNNAMED',
'-Djava.locale.providers=JRE,CLDR'],
skipcigame: true
],
[ name: 'POI-DSL-IBM-JDK', jdk: 'IBMJDK', trigger: triggerSundays,
// some OOXML tests fail with strange XML parsing errors and missing JCE unlimited strength requirements
disabled: true, skipcigame: true
],
[ name: 'POI-DSL-old-Xerces', trigger: triggerSundays,
shell: "mkdir -p compile-lib && test -f ${xercesLib} || wget -O ${xercesLib} ${xercesUrl}\n",
// the property triggers using Xerces as XML Parser and previously showed some exception that can occur
properties: ["-Dadditionaljar=${xercesLib}"],
// workaround as Sourceforge does not accept any of the SSL ciphers in JDK 6 any more and thus we cannot download this jar
// as part of the Ant build
addShell: "wget -O ${findbugs2Lib} ${findbugs2Url}"
],
[ name: 'POI-DSL-Maven', trigger: 'H */4 * * *', maven: true
],
[ name: 'POI-DSL-regenerate-javadoc', trigger: triggerSundays, javadoc: true
],
[ name: 'POI-DSL-API-Check', jdk: '1.7', trigger: '@daily', apicheck: true
],
[ name: 'POI-DSL-Gradle', jdk: '1.7', trigger: triggerSundays, email: 'centic@apache.org', gradle: true,
// Gradle will not run any tests if the code is up-to-date, therefore manually mark the files as updated
addShell: 'touch --no-create build/*/build/test-results/TEST-*.xml build/*/build/test-results/test/TEST-*.xml'
],
[ name: 'POI-DSL-no-scratchpad', trigger: triggerSundays, noScratchpad: true
],
[ name: 'POI-DSL-SonarQube', jdk: '1.8', trigger: 'H 9 * * *', maven: true, sonar: true, skipcigame: true
],
[ name: 'POI-DSL-SonarQube-Gradle', jdk: '1.8', trigger: 'H 9 * * *', gradle: true, sonar: true, skipcigame: true
],
[ name: 'POI-DSL-Windows-1.6', jdk: '1.6', trigger: 'H */12 * * *', windows: true, slaves: 'Windows',
addShell: "@if not exist ${findbugs2Lib} powershell -Command wget -Uri \"${findbugs2Url}\" -OutFile ${findbugs2Lib} -UserAgent [Microsoft.PowerShell.Commands.PSUsergAgent]::Chrome"
],
[ name: 'POI-DSL-Windows-1.7', jdk: '1.7', trigger: 'H */12 * * *', windows: true, slaves: 'Windows',
addShell: "@if not exist ${findbugs3Lib} powershell -Command wget -Uri \"${findbugs3Url}\" -OutFile ${findbugs3Lib} -UserAgent [Microsoft.PowerShell.Commands.PSUsergAgent]::Chrome"
],
[ name: 'POI-DSL-Windows-1.8', jdk: '1.8', trigger: 'H */12 * * *', windows: true, slaves: 'Windows'
],
]
def svnBase = 'https://svn.apache.org/repos/asf/poi/trunk'
def defaultJdk = '1.6'
def defaultTrigger = 'H/15 * * * *' // check SCM every 60/15 = 4 minutes
def defaultEmail = 'dev@poi.apache.org'
def defaultAnt = 'Ant 1.9.9'
// currently a lot of H?? slaves don't have Ant installed ... H21 seems to have a SVN problem
def defaultSlaves = 'ubuntu&&!cloud-slave&&!H15&&!H17&&!H18&&!H24&&!ubuntu-4&&!H21'
def jdkMapping = [
'1.6': 'JDK 1.6 (latest)',
'1.7': 'JDK 1.7 (latest)',
'1.8': 'JDK 1.8 (latest)',
'1.9': 'JDK 9 b179 (early access build)',
'OpenJDK': 'OpenJDK 6 (on Ubuntu only) ', // blank is required here until the name in the Jenkins instance is fixed!
'IBMJDK': 'IBM 1.8 64-bit (on Ubuntu only)',
]
def shellEx(def context, String cmd, def poijob) {
if (poijob.windows) {
context.batchFile(cmd)
} else {
context.shell(cmd)
}
}
def defaultDesc = '''
<img src="https://poi.apache.org/resources/images/project-logo.jpg" />
<p>
Apache POI - the Java API for Microsoft Documents
</p>
<p>
<b>This is an automatically generated Job Config, do not edit it here!
Instead change the Jenkins Job DSL at <a href="https://svn.apache.org/repos/asf/poi/trunk/jenkins">https://svn.apache.org/repos/asf/poi/trunk/jenkins</a>,
see <a href="https://github.com/jenkinsci/job-dsl-plugin/wiki">https://github.com/jenkinsci/job-dsl-plugin/wiki</a>
for more details about the DSL.</b>
</p>'''
def apicheckDesc = '''
<p>
<b><a href="https://builds.apache.org/analysis/dashboard?id=org.apache.poi%3Apoi-parent&did=1" target="_blank">Sonar reports</a></b> -
<p>
<b><a href="lastSuccessfulBuild/artifact/build/main/build/reports/japi.html">API Check POI</a></b>
<b><a href="lastSuccessfulBuild/artifact/build/ooxml/build/reports/japi.html">API Check POI-OOXML</a></b>
<b><a href="lastSuccessfulBuild/artifact/build/excelant/build/reports/japi.html">API Check POI-Excelant</a></b>
<b><a href="lastSuccessfulBuild/artifact/build/scratchpad/build/reports/japi.html">API Check POI-Scratchpad</a></b>
</p>
'''
def sonarDesc = '''
<p>
<b><a href="lastSuccessfulBuild/findbugsResult/" target="_blank">Findbugs report of latest build</a></b> -
<b><a href="https://builds.apache.org/analysis/dashboard?id=org.apache.poi%3Apoi-parent&did=1" target="_blank">Sonar reports</a></b> -
<b><a href="lastSuccessfulBuild/artifact/build/coverage/index.html" target="_blank">Coverage of latest build</a></b>
</p>
'''
def shellCmdsUnix =
'''# show which files are currently modified in the working copy
svn status
# print out information about which exact version of java we are using
echo Java-Home: $JAVA_HOME
ls -al $JAVA_HOME/
$JAVA_HOME/bin/java -version
POIJOBSHELL
# ignore any error message
exit 0'''
def shellCmdsWin =
'''@echo off
:: show which files are currently modified in the working copy
svn status
:: print out information about which exact version of java we are using
echo Java-Home: %JAVA_HOME%
dir "%JAVA_HOME:\\\\=\\%"
"%JAVA_HOME%/bin/java" -version
POIJOBSHELL
:: ignore any error message
exit /b 0'''
poijobs.each { poijob ->
def jdkKey = poijob.jdk ?: defaultJdk
def trigger = poijob.trigger ?: defaultTrigger
def email = poijob.email ?: defaultEmail
def slaves = poijob.slaves ?: defaultSlaves + (poijob.slaveAdd ?: '')
def antRT = defaultAnt + (poijob.windows ? ' (Windows)' : '')
job(poijob.name) {
if (poijob.disabled) {
disabled()
}
description( defaultDesc + (poijob.apicheck ? apicheckDesc : sonarDesc) )
logRotator {
numToKeep(5)
artifactNumToKeep(1)
}
label(slaves)
environmentVariables {
env('LANG', 'en_US.UTF-8')
if(jdkKey == '1.9') {
// when using JDK 9 for running Ant, we need to provide more packages for the forbidden-api-checks task
env('ANT_OPTS', '--add-modules=java.xml.bind --add-opens=java.xml/com.sun.org.apache.xerces.internal.util=ALL-UNNAMED --add-opens=java.base/java.lang=ALL-UNNAMED')
}
}
wrappers {
timeout {
absolute(180)
abortBuild()
writeDescription('Build was aborted due to timeout')
}
if(poijob.sonar) {
configure { project ->
project / buildWrappers << 'hudson.plugins.sonar.SonarBuildWrapper' {}
}
}
}
jdk(jdkMapping.get(jdkKey))
scm {
svn(svnBase) { svnNode ->
svnNode / browser(class: 'hudson.scm.browsers.ViewSVN') /
url << 'http://svn.apache.org/viewcvs.cgi/?root=Apache-SVN'
}
}
triggers {
scm(trigger)
}
def shellcmds = (poijob.windows ? shellCmdsWin : shellCmdsUnix).replace('POIJOBSHELL', poijob.shell ?: '')
// Create steps and publishers depending on the type of Job that is selected
if(poijob.maven) {
steps {
shellEx(delegate, shellcmds, poijob)
maven {
goals('clean')
rootPOM('sonar/pom.xml')
localRepository(LocalRepositoryLocation.LOCAL_TO_WORKSPACE)
mavenInstallation('maven-3.2.1')
}
/* Currently not done, let's see if it is still necessary:
# Maven-Download fails for strange reasons, try to workaround...
mkdir -p sonar/ooxml-schema-security/target/schemas && wget -O sonar/ooxml-schema-security/target/schemas/xmldsig-core-schema.xsd http://www.w3.org/TR/2002/REC-xmldsig-core-20020212/xmldsig-core-schema.xsd
*/
maven {
if(poijob.sonar) {
goals('compile $SONAR_MAVEN_GOAL -Dsonar.host.url=$SONAR_HOST_URL')
} else {
goals('package')
}
rootPOM('sonar/pom.xml')
mavenOpts('-Xmx2g')
mavenOpts('-Xms256m')
mavenOpts('-XX:MaxPermSize=512m')
mavenOpts('-XX:-OmitStackTraceInFastThrow')
localRepository(LocalRepositoryLocation.LOCAL_TO_WORKSPACE)
mavenInstallation('maven-3.2.1')
}
}
publishers {
if (!poijob.skipcigame) {
configure { project ->
project / publishers << 'hudson.plugins.cigame.GamePublisher' {}
}
}
mailer(email, false, false)
}
} else if (poijob.javadoc) {
steps {
shellEx(delegate, shellcmds, poijob)
ant {
targets(['clean', 'javadocs'] + (poijob.properties ?: []))
prop('coverage.enabled', true)
// Properties did not work, so I had to use targets instead
//properties(poijob.properties ?: '')
antInstallation(antRT)
}
shellEx(delegate, 'zip -r build/javadocs.zip build/tmp/site/build/site/apidocs', poijob)
}
publishers {
if (!poijob.skipcigame) {
configure { project ->
project / publishers << 'hudson.plugins.cigame.GamePublisher' {}
}
}
mailer(email, false, false)
}
} else if (poijob.apicheck) {
steps {
shellEx(delegate, shellcmds, poijob)
gradle {
tasks('japicmp')
useWrapper(false)
}
}
publishers {
archiveArtifacts('build/*/build/reports/japi.html')
if (!poijob.skipcigame) {
configure { project ->
project / publishers << 'hudson.plugins.cigame.GamePublisher' {}
}
}
mailer(email, false, false)
}
} else if(poijob.sonar) {
steps {
shellEx(delegate, shellcmds, poijob)
gradle {
switches('-PenableSonar')
switches('-Dsonar.host.url=$SONAR_HOST_URL')
tasks('sonarqube')
useWrapper(false)
}
}
publishers {
if (!poijob.skipcigame) {
configure { project ->
project / publishers << 'hudson.plugins.cigame.GamePublisher' {}
}
}
mailer(email, false, false)
}
} else {
steps {
shellEx(delegate, shellcmds, poijob)
if(poijob.addShell) {
shellEx(delegate, poijob.addShell, poijob)
}
// For Jobs that should still have the default set of publishers we can configure different steps here
if(poijob.gradle) {
gradle {
tasks('check')
useWrapper(false)
}
} else if (poijob.noScratchpad) {
ant {
targets(['clean', 'compile-all'] + (poijob.properties ?: []))
prop('coverage.enabled', true)
antInstallation(antRT)
}
ant {
targets(['-Dscratchpad.ignore=true', 'jacocotask', 'test-all', 'testcoveragereport'] + (poijob.properties ?: []))
prop('coverage.enabled', true)
antInstallation(antRT)
}
} else {
ant {
targets(['clean', 'jenkins'] + (poijob.properties ?: []))
prop('coverage.enabled', true)
// Properties did not work, so I had to use targets instead
//properties(poijob.properties ?: '')
antInstallation(antRT)
}
ant {
targets(['run'] + (poijob.properties ?: []))
buildFile('src/integrationtest/build.xml')
// Properties did not work, so I had to use targets instead
//properties(poijob.properties ?: '')
antInstallation(antRT)
}
}
}
publishers {
findbugs('build/findbugs.xml', false) {
healthLimits(3, 20)
thresholdLimit('low')
defaultEncoding('UTF-8')
}
// in archive, junit and jacoco publishers, matches beneath build/*/build/... are for Gradle-build results
archiveArtifacts('build/dist/*.tar.gz,build/findbugs.html,build/coverage/**,build/integration-test-results/**,ooxml-lib/**,build/*/build/libs/*.jar')
warnings(['Java Compiler (javac)', 'JavaDoc Tool'], null) {
resolveRelativePaths()
}
archiveJunit('build/ooxml-test-results/*.xml,build/scratchpad-test-results/*.xml,build/test-results/*.xml,build/excelant-test-results/*.xml,build/integration-test-results/*.xml,build/*/build/test-results/test/TEST-*.xml,build/*/build/test-results/TEST-*.xml') {
testDataPublishers {
publishTestStabilityData()
}
}
jacocoCodeCoverage {
classPattern('build/classes,build/excelant-classes,build/ooxml-classes,build/scratchpad-classes,build/*/build/classes')
execPattern('build/*.exec,build/*/build/jacoco/*.exec')
sourcePattern('src/java,src/excelant/java,src/ooxml/java,src/scratchpad/src')
exclusionPattern('com/microsoft/**,org/openxmlformats/**,org/etsi/**,org/w3/**,schemaorg*/**,schemasMicrosoft*/**,org/apache/poi/hdf/model/hdftypes/definitions/*.class,org/apache/poi/hwpf/model/types/*.class,org/apache/poi/hssf/usermodel/DummyGraphics2d.class,org/apache/poi/sl/draw/binding/*.class')
}
if (!poijob.skipcigame) {
configure { project ->
project / publishers << 'hudson.plugins.cigame.GamePublisher' {}
}
}
mailer(email, false, false)
}
}
}
}
/* I tried to put the view into a sub-folder/sub-view, but failed, there are multiple related
plugins so this is all a bit confusing :(, see also https://issues.apache.org/jira/browse/INFRA-14002
dashboardView("P/POI-new") {
columns {
status()
weather()
configureProject()
buildButton()
cronTrigger()
lastBuildConsole()
name()
lastSuccess()
lastFailure()
lastDuration()
//lastSuccessDescription()
jacoco()
}
description("Jobs related to building/testing Apache POI")
filterBuildQueue(false)
filterExecutors(false)
// Job selection
jobs {*/
//regex(/.*POI.*/)
/*}
// Layout
topPortlets {
jenkinsJobsList {
displayName('POI jobs')
}
}
leftPortlets {
testStatisticsChart()
}
rightPortlets {
testTrendChart()
}
bottomPortlets {
testStatisticsGrid()
buildStatistics()
}
}*/
This diff is collapsed.
Apache POI
Copyright 2003-2015 The Apache Software Foundation
Copyright 2003-2017 The Apache Software Foundation
This product includes software developed by
The Apache Software Foundation (http://www.apache.org/).
The Apache Software Foundation (https://www.apache.org/).
This product contains parts that were originally based on software from BEA.
Copyright (c) 2000-2003, BEA Systems, <http://www.bea.com/>.
Copyright (c) 2000-2003, BEA Systems, <http://www.bea.com/> (dead link),
which was acquired by Oracle Corporation in 2008.
<http://www.oracle.com/us/corporate/Acquisitions/bea/index.html>
<https://en.wikipedia.org/wiki/BEA_Systems>
This product contains W3C XML Schema documents. Copyright 2001-2003 (c)
World Wide Web Consortium (Massachusetts Institute of Technology, European
......@@ -18,6 +21,7 @@ This product contains the chunks_parse_cmds.tbl file from the vsdump program.
Copyright (C) 2006-2007 Valek Filippov (frob@df.ru)
This product contains parts of the eID Applet project
(http://eid-applet.googlecode.com). Copyright (c) 2009-2014
<http://eid-applet.googlecode.com> and <https://github.com/e-Contract/eid-applet>.
Copyright (c) 2009-2014
FedICT (federal ICT department of Belgium), e-Contract.be BVBA (https://www.e-contract.be),
Bart Hanssens from FedICT
......@@ -17,6 +17,10 @@
#
# create md5 checksums and gpg signatures
echo "If you use gpg2 you need to set GPG_BIN accordingly"
GPG_BIN=gpg
stty -echo
echo "enter your GPG passphrase"
read passphrase
......@@ -32,8 +36,8 @@ LACKING_SHA1SUM=$?
for i in *; do
echo ""
echo Signing $i
echo $passphrase | gpg --passphrase-fd 0 --output $i.asc --detach-sig --armor $i
gpg --verify $i.asc $i
echo $passphrase | $GPG_BIN --passphrase-fd 0 --output $i.asc --detach-sig --armor $i
$GPG_BIN --verify $i.asc $i
echo Hashing $i
if [ "$LACKING_MD5SUM" = "1" ]; then
......
......@@ -69,5 +69,10 @@
<artifactId>poi-ooxml-schemas</artifactId>
<version>@VERSION@</version>
</dependency>
<dependency>
<groupId>com.github.virtuald</groupId>
<artifactId>curvesapi</artifactId>
<version>1.04</version>
</dependency>
</dependencies>
</project>
......@@ -62,7 +62,7 @@
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.1.3</version>
<version>1.2</version>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
......@@ -76,7 +76,7 @@
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
<version>1.9</version>
<version>1.10</version>
</dependency>
<dependency>
......@@ -91,6 +91,11 @@
<scope>test</scope>
<version>4.12</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-collections4</artifactId>
<version>4.1</version>
</dependency>
</dependencies>
</project>
......@@ -72,4 +72,57 @@
<delete file="${patch.file}.tmp"/>
</target>
<target name="apply"
description="apply patch.tar.gz files generated by patchpackage">
<!--
extract patch.tar.gz to svn working copy
$ tar xvzf patch.tar.gz
-->
<echo message="extracting ${patch.file} to working copy"/>
<untar src="${patch.package}"
dest="."
failOnEmptyArchive="true"
compression="gzip">
</untar>
<!--
Apply the changes from patch.txt
$ svn patch patch.txt
-->
<echo message="svn patch ${patch.file}"/>
<fail unless="svn.found" message="You need a version of svn to create the patch"/>
<exec executable="svn">
<arg value="patch"/>
<arg value="${patch.file}"/>
</exec>
<delete file="${patch.file}"/>
<!--
get a list of all new files in patch.tar.gz and store in tar.file.list filelist
$ tar tf patch.tar.gz | grep -v patch\.txt | xargs svn add
-->
<echo message="Getting ${patch.file} file list"/>
<delete dir="${patch.package}.tmp" quiet="false" failonerror="false" />
<untar src="${patch.package}"
dest="${patch.package}.tmp"
failOnEmptyArchive="true"
compression="gzip">
</untar>
<fileset dir="${patch.package}.tmp"
id="tar.file.list"
excludes="${patch.file}"/>
<!-- add new files -->
<echo message="Adding new files to svn working copy"/>
<apply executable="svn"
relative="true">
<arg value="add"/>
<fileset refid="tar.file.list"/>
</apply>
<delete dir="${patch.package}.tmp"/>
</target>
</project>
rootProject.name = 'poi'
include 'main', 'ooxml', 'excelant', 'examples', 'scratchpad', 'integrationtest'
project(':main').projectDir = new File(settingsDir, 'build/main')
project(':ooxml').projectDir = new File(settingsDir, 'build/ooxml')
project(':excelant').projectDir = new File(settingsDir, 'build/excelant')
project(':examples').projectDir = new File(settingsDir, 'build/examples')
project(':scratchpad').projectDir = new File(settingsDir, 'build/scratchpad')
project(':integrationtest').projectDir = new File(settingsDir, 'build/integrationtest')
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.