{"id":28851497,"url":"https://github.com/netgrif/apps-packager-maven-plugin","last_synced_at":"2025-07-04T19:35:04.930Z","repository":{"id":296235913,"uuid":"990636103","full_name":"netgrif/apps-packager-maven-plugin","owner":"netgrif","description":null,"archived":false,"fork":false,"pushed_at":"2025-05-29T16:34:37.000Z","size":40,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-05-29T17:19:57.093Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/netgrif.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.txt","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-05-26T12:08:26.000Z","updated_at":"2025-05-29T16:34:40.000Z","dependencies_parsed_at":"2025-05-29T17:20:04.430Z","dependency_job_id":null,"html_url":"https://github.com/netgrif/apps-packager-maven-plugin","commit_stats":null,"previous_names":["netgrif/apps-packager-maven-plugin"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/netgrif/apps-packager-maven-plugin","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/netgrif%2Fapps-packager-maven-plugin","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/netgrif%2Fapps-packager-maven-plugin/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/netgrif%2Fapps-packager-maven-plugin/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/netgrif%2Fapps-packager-maven-plugin/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/netgrif","download_url":"https://codeload.github.com/netgrif/apps-packager-maven-plugin/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/netgrif%2Fapps-packager-maven-plugin/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":260831301,"owners_count":23069452,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-06-19T21:05:16.872Z","updated_at":"2025-07-04T19:35:04.924Z","avatar_url":"https://github.com/netgrif.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Petriflow Packaging Maven Plugin\n\n[![Java](https://img.shields.io/badge/Java-21-red)](https://openjdk.java.net/projects/jdk/21/)\n[![Petriflow 1.0.1](https://img.shields.io/badge/Petriflow-1.0.1-0aa8ff)](https://petriflow.com)\n[![GitHub release (latest SemVer)](https://img.shields.io/github/v/release/netgrif/apps-packager-maven-plugin?sort=semver\u0026display_name=tag)](https://github.com/netgrif/apps-packager-maven-plugin/releases)\n[![Publish package to Maven](https://github.com/netgrif/apps-packager-maven-plugin/actions/workflows/release-build.yaml/badge.svg)](https://github.com/netgrif/apps-packager-maven-plugin/actions/workflows/release-build.yaml)\n---\n\nA Maven plugin for packaging [Petriflow](https://github.com/netgrif/petriflow) application XML files into distributable ZIP archives, including automatic manifest generation and flexible configuration.\n\n---\n\n## What Does This Plugin Do?\n\n* Packages all `.xml` Petri net files (except excluded) into a ZIP.\n* Generates a `manifest.xml` with all configured metadata.\n* Supports multi-app and multi-directory setups.\n* Resulting ZIPs are in your configured output directory.\n\n---\n\n## Features\n\n* Package one or more Petriflow applications into ZIP archives.\n* Automatic `manifest.xml` generation with app metadata and process listing.\n* Support for multi-app projects (each subdirectory packaged separately).\n* Regex-based exclusion of processes.\n* Flexible configuration via Maven properties.\n* Verbose logging of included/excluded processes.\n\n---\n\n## Requirements\n\n* Java 21 or newer\n* Maven 3+\n\n---\n\n## Running the Plugin\n\nThe plugin runs automatically during the `package` phase:\n\n```shell\nmvn clean package\n```\n\nOr run manually:\n\n```shell\nmvn com.netgrif:apps-packager-maven-plugin:package-petriflow\n```\n\n---\n\n## Plugin Configuration Options\n\n| Parameter          | Default Value                                | Description                                                 |\n| ------------------ | -------------------------------------------- | ----------------------------------------------------------- |\n| `inputDirectory`   | `src/main/resources/petriNets`               | Path to the directory with Petri net XML files              |\n| `inputDirectories` | *(none)*                                     | List of directories to process (overrides `inputDirectory`) |\n| `outputDirectory`  | `${project.build.directory}/petriflow-zips`  | Output folder for ZIP files                                 |\n| `multiApplication` | `false`                                      | If true, treats subfolders as separate applications         |\n| `appId`            | `${project.artifactId}`                      | Application ID for manifest                                 |\n| `appName`          | `${project.name}`                            | Application name                                            |\n| `appDescription`   | `${project.description}`                     | Application description                                     |\n| `appVersion`       | `${project.version}`                         | Application version                                         |\n| `appAuthor`        | `${project.developers[0].name}` or `unknown` | Application author                                          |\n| `exclude`          | *(none)*                                     | List of regex patterns to exclude processes (by file name)  |\n| `zipPrefix`        | *(none)*                                     | Prefix for ZIP file names                                   |\n\nExample only the `\u003cconfiguration\u003e` block:\n\n```xml\n\u003cconfiguration\u003e\n    \u003cmultiApplication\u003etrue\u003c/multiApplication\u003e\n    \u003cexclude\u003e\n        \u003cpattern\u003e.*Test.*\u003c/pattern\u003e\n        \u003cpattern\u003eSampleProcess\u003c/pattern\u003e\n    \u003c/exclude\u003e\n    \u003czipPrefix\u003erelease\u003c/zipPrefix\u003e\n\u003c/configuration\u003e\n```\n\n---\n\n## Example `pom.xml` Configuration\n\nBelow is a sample Maven module configuration using this plugin:\n\n```xml\n\u003cproject xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n         xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd\"\u003e\n    \u003cmodelVersion\u003e4.0.0\u003c/modelVersion\u003e\n    \u003cparent\u003e\n        \u003cgroupId\u003eorg.example\u003c/groupId\u003e\n        \u003cartifactId\u003eExampleModule\u003c/artifactId\u003e\n        \u003cversion\u003e0.0.1\u003c/version\u003e\n    \u003c/parent\u003e\n    \u003cartifactId\u003eprocesses\u003c/artifactId\u003e\n    \u003cname\u003eExample Processes\u003c/name\u003e\n    \u003cdescription\u003eThis module contains example Petriflow process definitions for demonstration, testing, and integration\n        within the Netgrif Application Engine ecosystem.\n    \u003c/description\u003e\n    \u003cversion\u003e0.0.1\u003c/version\u003e\n    \u003curl\u003ehttps://example.com/processes\u003c/url\u003e\n    \u003cdevelopers\u003e\n        \u003cdeveloper\u003e\n            \u003cname\u003eNetgrif\u003c/name\u003e\n            \u003cemail\u003eexample@test.com\u003c/email\u003e\n        \u003c/developer\u003e\n    \u003c/developers\u003e\n    \u003cbuild\u003e\n        \u003cplugins\u003e\n            \u003cplugin\u003e\n                \u003cgroupId\u003ecom.netgrif\u003c/groupId\u003e\n                \u003cartifactId\u003eapps-packager-maven-plugin\u003c/artifactId\u003e\n                \u003cversion\u003e1.0.0\u003c/version\u003e\n                \u003cconfiguration\u003e\n                    \u003coutputDirectory\u003e../Example-Apps\u003c/outputDirectory\u003e\n                    \u003cmultiApplication\u003etrue\u003c/multiApplication\u003e\n                    \u003cexclude\u003e\n                        \u003cpattern\u003eThisPetriNetExclude\u003c/pattern\u003e \u003c!-- REGEX pattern: exclude processes with this name --\u003e\n                    \u003c/exclude\u003e\n                    \u003czipPrefix\u003erelease\u003c/zipPrefix\u003e\n                \u003c/configuration\u003e\n                \u003cexecutions\u003e\n                    \u003cexecution\u003e\n                        \u003cgoals\u003e\n                            \u003cgoal\u003epackage-petriflow\u003c/goal\u003e\n                        \u003c/goals\u003e\n                    \u003c/execution\u003e\n                \u003c/executions\u003e\n            \u003c/plugin\u003e\n        \u003c/plugins\u003e\n    \u003c/build\u003e\n\u003c/project\u003e\n```\n\n---\n\n## Example Project Structure\n\n```\nproject-root/\n └── src/\n     └── main/\n         └── resources/\n             └── petriNets/\n                 ├── app1/\n                 │    ├── Invoice.xml\n                 │    └── Payment.xml\n                 └── app2/\n                      └── Order.xml\n```\n\nWith `multiApplication=true`, each subfolder (`app1`, `app2`) is packaged as a separate application ZIP.\n\n---\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnetgrif%2Fapps-packager-maven-plugin","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnetgrif%2Fapps-packager-maven-plugin","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnetgrif%2Fapps-packager-maven-plugin/lists"}