| <!-- |
| 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. |
| --> |
| |
| <!-- markdownlint-disable first-line-heading --> |
| <!-- markdownlint-disable line-length --> |
| <!-- markdownlint-disable no-inline-html --> |
| [<img src="https://daffodil.apache.org/assets/themes/apache/img/apache-daffodil-logo.svg" height="85" align="left" alt="Apache Daffodil"/>][Website] |
| [<img src="https://img.shields.io/github/actions/workflow/status/apache/daffodil/main.yml?branch=main" align="right"/>][GitHub Actions] |
| <br clear="right" /> |
| [<img src="https://img.shields.io/codecov/c/github/apache/daffodil/main.svg" align="right"/>][CodeCov] |
| <br clear="right" /> |
| [<img src="https://img.shields.io/maven-central/v/org.apache.daffodil/daffodil-core_3.svg?color=brightgreen&label=version" align="right"/>][Releases] |
| <br clear="both" /> |
| |
| Apache Daffodil is an open-source implementation of the [DFDL |
| specification] that uses DFDL data descriptions to parse fixed format |
| data into an infoset. This infoset is commonly converted into XML or |
| JSON to enable the use of well-established XML or JSON technologies |
| and libraries to consume, inspect, and manipulate fixed format data in |
| existing solutions. Daffodil is also capable of serializing or |
| "unparsing" data back to the original data format. The DFDL infoset |
| can also be converted directly to/from the data structures carried by |
| data processing frameworks so as to bypass any XML/JSON overheads. |
| |
| For more information about Daffodil, see <https://daffodil.apache.org/>. |
| |
| ## Build Requirements |
| |
| * Java 8 or higher |
| * sbt 0.13.8 or higher |
| * C compiler C99 or higher |
| * Mini-XML Version 3.0 or higher |
| |
| See [BUILD.md](BUILD.md) for more details and [DEVELOP.md](DEVELOP.md) |
| for a developer guide. |
| |
| ## Getting Started |
| |
| [sbt] is the officially supported tool to build Daffodil. Below are |
| some of the more commonly used commands for Daffodil development. |
| |
| ### Compile |
| |
| Compile source code: |
| |
| sbt compile |
| |
| ### Test |
| |
| Check all unit tests pass: |
| |
| sbt test |
| |
| Check all integration tests pass: |
| |
| sbt daffodil-test-integration/test |
| |
| ### Format |
| |
| Check format of source and sbt files: |
| |
| sbt scalafmtCheckAll scalafmtSbtCheck |
| |
| Reformat source and sbt files if necessary: |
| |
| sbt scalafmtAll scalafmtSbt |
| |
| ### Build |
| |
| Build the Daffodil command line interface (Linux and Windows shell |
| scripts in `daffodil-cli/target/universal/stage/bin/`; see the |
| [Command Line Interface] documentation for details on their usage): |
| |
| sbt daffodil-cli/stage |
| |
| Publish the Daffodil jars to a Maven repository (for Java projects) or |
| Ivy repository (for Scala or schema projects). |
| |
| Maven (for Java or mvn): |
| |
| sbt publishM2 |
| |
| Ivy (for Scala or sbt): |
| |
| sbt publishLocal |
| |
| ### Check Licenses |
| |
| Run [Apache RAT] (license audit report in `target/rat.txt` and error |
| if any unapproved licenses are found): |
| |
| sbt ratCheck |
| |
| ### Check Coverage |
| |
| Run [sbt-scoverage] (report in `target/scala-ver/scoverage-report/`): |
| |
| sbt clean coverage test daffodil-test-integration/test |
| sbt coverageAggregate |
| |
| ## Getting Help |
| |
| You can ask questions on the dev@daffodil.apache.org or |
| users@daffodil.apache.org mailing lists. You can report bugs via the |
| [Daffodil JIRA]. |
| |
| ## License |
| |
| Apache Daffodil is licensed under the [Apache License, v2.0]. |
| |
| [Apache License, v2.0]: https://www.apache.org/licenses/LICENSE-2.0 |
| |
| [Apache RAT]: https://creadur.apache.org/rat/ |
| |
| [CodeCov]: https://app.codecov.io/gh/apache/daffodil |
| |
| [Command Line Interface]: https://daffodil.apache.org/cli/ |
| |
| [DFDL specification]: https://daffodil.apache.org/docs/dfdl/ |
| |
| [Daffodil JIRA]: https://issues.apache.org/jira/projects/DAFFODIL/ |
| |
| [Github Actions]: https://github.com/apache/daffodil/actions?query=branch%3Amain+ |
| |
| [Releases]: http://daffodil.apache.org/releases/ |
| |
| [Website]: https://daffodil.apache.org/ |
| |
| [sbt-scoverage]: https://github.com/scoverage/sbt-scoverage/ |
| |
| [sbt]: https://www.scala-sbt.org/ |