{"id":20471585,"url":"https://github.com/backbase/blimp","last_synced_at":"2025-04-13T11:08:17.272Z","repository":{"id":40246836,"uuid":"370729185","full_name":"Backbase/blimp","owner":"Backbase","description":"Backbase Liquibase Integration Maven Plugin","archived":false,"fork":false,"pushed_at":"2022-12-14T20:53:58.000Z","size":270,"stargazers_count":4,"open_issues_count":1,"forks_count":1,"subscribers_count":9,"default_branch":"devel","last_synced_at":"2024-04-16T10:58:17.696Z","etag":null,"topics":["code-generation","liquibase","maven-plugin"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Backbase.png","metadata":{"files":{"readme":"README.md","changelog":"ChangeLog.md","contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-05-25T14:51:01.000Z","updated_at":"2024-04-16T10:58:17.697Z","dependencies_parsed_at":"2022-08-17T18:30:55.573Z","dependency_job_id":null,"html_url":"https://github.com/Backbase/blimp","commit_stats":null,"previous_names":[],"tags_count":10,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Backbase%2Fblimp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Backbase%2Fblimp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Backbase%2Fblimp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Backbase%2Fblimp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Backbase","download_url":"https://codeload.github.com/Backbase/blimp/tar.gz/refs/heads/devel","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":224792471,"owners_count":17370788,"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":["code-generation","liquibase","maven-plugin"],"created_at":"2024-11-15T14:16:34.112Z","updated_at":"2024-11-15T14:16:34.942Z","avatar_url":"https://github.com/Backbase.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# BLIMP\n\n           _..--=--..._\n        .-'            '-.  .-.\n       /.'              '.\\/  /\n      |=-                -=| (\n       \\'.              .'/\\  \\\n        '-.,_____ _____.-'  '-'\n             [_____]=8\n\n## Description\n\nThe Backbase Liquibase Integration Maven Plugin is here to eliminate the boilerplate `\u003cexecution/\u003e` elements needed to generate the SQL create/update scripts.\n\n---\n\n## Goal \"blimp:generate\"\n\nGenerates all SQL scripts for all specified databases.\n\nThis mojo executes the following actions\n\n  1.  generates the full creation script\n  2.  collects all groups of changesets\n  3.  for each group, generates one script containing all changes in that group\n\nWhat is a group?\n\nA group is a collection of changesets that are supposed to included in a\nrelease; they can be either the labels of the changes or the contexts depending on\nthe `groupingStrategy` configuration.\n\n### Available parameters\n\n##### addResource\n\nWhether to add the SQL scripts as a resource of the project.\n\n*Default*: `false`\n\n*User property*: `blimp.addResource`\n\n##### addTestResource\n\nWhether to add the SQL scripts as a test resource of the project.\nUse it when the generated SQL should be visible to the testing classpath, but not to the artifact classpath.\n\n*Default*: `false`\n\n*User property*: `blimp.addTestResource`\n\n##### changeLogDirectory\n\nThe base directory of the changelog files.\n\n*Default*: `${project.basedir}/src/main/resources`\n\n*Required*: Yes\n\n*User property*: `blimp.changeLogDirectory`\n\n##### changeLogFile\n\nThe location of the changelog to execute.\nUsually a file name relative to the input directory but it can also point to a classpath resource.\n\n*User property*: `blimp.changeLogFile`\n\n*Required*: Yes\n\n*Default*: `db.changelog-main.xml`\n\n##### databases\n\nThe database list for which SQL scripts are generated.\n\n*Default*: `mysql`\n\n*Required*: Yes\n\n*User property*: `blimp.databases`\n\n##### encoding\n\nThe file encoding used for SQL files.\n\n*Default*: `UTF-8`\n\n*User property*: `blimp.encoding`\n\n##### groupingStrategy\n\nControls how to group the changesets to generate one SQL script for a given context or label.\n\nThe following options are available\n\n- `CONTEXTS`: use the changeset context to group changes.\n- `LABELS`: use the changeset label to group changes.\n- `AUTO`: tries to identify if the changes use contexts or labels; if both are present, then contexts is preferred.\n\nNote that when a context or label contains multiple values, only the first one is considered.\n\n*Default*: `AUTO`\n\n*User property*: blimp.groupingStrategy\n\n##### inputPatterns\n\nList of glob patterns specifing the changelog files. Not needed by Liquibase, but used by the plugin to avoid unnecessary executions of the goal.\n\n*Default*: `**/*.sql,**/db.changelog*.xml,**/db.changelog*.yml`\n\n*Required*: Yes\n\n*User property*: `blimp.inputPatterns`\n\n##### properties\n\nSpecifies a map of properties you want to pass to Liquibase.\n\n*User property*: `blimp.properties`\n\n##### scriptsDirectory\n\nThe location of the output directory.\n\n*Default*: `${project.build.directory}/generated-resources/blimp`\n\n*Required*: Yes\n\n*User property*: `blimp.scriptsDirectory`\n\n##### serviceName\n\nThe name of the service.\n\n*Default*: `${project.artifactId}`\n\n*Required*: Yes\n\n*User property*: `blimp.serviceName`\n\n##### skip\n\nSkip the execution.\n\n*Default*: `false`\n\n*User property*: `blimp.skip`\n\n##### sqlFileNameFormat\n\nSpecifies how to generate the name of SQL script.\n\nThe following placeholders are available:\n\n- `database`: the database type\n- `group`: the name of the group for which the goal generates the SQL script.\n- `service`: the service name taken from the [serviceName](#servicename) parameter.\n\nThe group name of the creation script is `create`.\n\n*Default*: `@{database}/@{group}/@{service}.sql`\n\n*User property*: `blimp.sqlFileNameFormat`\n\n##### stripComments\n\nSet to true to remove comments from SQL scripts.\n\n*Default*: `false`\n\n*User property*: `blimp.stripComments`\n\n##### withInitialVersion\n\nGenerates a script for the initial version when there is more than one\ngroup. Having more than one group means a database has been already created for\nthe initial version, so only the upgrade scripts should be generated.\n\n*Default*: `false`\n\n*User property*: `blimp.withInitialVersion`\n\n### Full Configuration with default values\n\n```xml\n\u003cplugin\u003e\n    \u003cgroupId\u003ecom.backbase.oss\u003c/groupId\u003e\n    \u003cartifactId\u003eblimp-maven-plugin\u003c/artifactId\u003e\n    \u003cconfiguration\u003e\n        \u003cskip\u003efalse\u003c/skip\u003e\n        \u003cserviceName\u003e${project.artifactId}\u003c/serviceName\u003e\n    \u003c/configuration\u003e\n    \u003cexecutions\u003e\n        \u003cexecution\u003e\n            \u003cgoals\u003e\n                \u003cgoal\u003egenerate\u003c/goal\u003e\n            \u003c/goals\u003e\n            \u003cconfiguration\u003e\n                \u003caddResource\u003efalse\u003c/addResource\u003e\n                \u003caddTestResource\u003efalse\u003c/addTestResource\u003e\n                \u003cchangeLogFile\u003edb.changelog-persistence.xml\u003c/changeLogFile\u003e\n                \u003cchangeLogDirectory\u003e${project.basedir}/src/main/resources\u003c/changeLogDirectory\u003e\n                \u003cdatabases\u003e\n                    \u003cdatabase\u003emysql\u003c/database\u003e\n                \u003c/databases\u003e\n                \u003cencoding\u003eUTF-8\u003c/encoding\u003e\n                \u003cgroupingStrategy\u003eAUTO\u003c/groupingStrategy\u003e\n                \u003cinputPatterns\u003e\n                    \u003cinputPattern\u003e**/*.sql\u003c/inputPattern\u003e\n                    \u003cinputPattern\u003e**/db.changelog*.xml\u003c/inputPattern\u003e\n                    \u003cinputPattern\u003e**/db.changelog*.yml\u003c/inputPattern\u003e\n                \u003c/inputPatterns\u003e\n                \u003cscriptsDirectory\u003e${project.build.directory}/generated-resources/blimp\u003c/scriptsDirectory\u003e\n                \u003csqlFileNameFormat\u003e@{database}/@{group}/@{service}.sql\u003c/sqlFileNameFormat\u003e\n                \u003cstripComments\u003efalse\u003c/stripComments\u003e\n                \u003cwithInitialVersion\u003efalse\u003c/withInitialVersion\u003e\n            \u003c/configuration\u003e\n        \u003c/execution\u003e\n    \u003c/executions\u003e\n\u003c/plugin\u003e\n```\n\n---\n\n## Goal blimp:lint\n\nVerifies the changelog compliance with a predefined set of rules.\n\nBy default, the linter comes with a very relaxed set of rules that can be customised using a file described in the [Lint Rules](blimp-lint/README.md) page..\n\n### Available parameters\n\n##### changeLogDirectory\n\nThe base directory of the changelog files.\n\n*Default*: `${project.basedir}/src/main/resources`\n\n*Required*: Yes\n\n*User property*: `blimp.changeLogDirectory`\n\n##### changeLogFile\n\nThe location of the changelog to execute. This is the path of the changelog file relative to\nthe `changeLogDirectory` parameter.\n\n**NOTE**: this is not a classpath resource but a local file; the execution of the goal is skipped otherwise.\n\n*Default*: `db.changelog-main.xml`\n\n*User property*: `blimp.changeLogFile`\n\n*Required*: Yes\n\n##### databases\n\nThe database list for which changelogs are checked.\n\n*Default*: `mysql`\n\n*User property*: `blimp.databases`\n\n*Required*: Yes\n\n##### failOnSeverity\n\nCauses an build failure if a rule with the specified severity is violated.\n\n*User property*: `blimp.lint.failOnSeverity`\n\n##### lintDatabase\n\nVerifies the changelogs only for the specified database; if this configuration is missing, all changelogs specified by the `\u003cdatabases/\u003e` configuration are checked.\n\nIf the changelogs are not database dependent, specify one of the supported databases here to avoid running lint for each database.\n\n*User property*: `blimp.lint.database`\n\n##### lintProperties\n\nSpecifies a map of properties you want to pass to Liquibase.\n\n*User property*: `blimp.lint.properties`\n\n##### reportFile\n\nThe location of the lint report file.\n\n*User property*: `blimp.lint.reportFile`\n\n*Required*: Yes\n\n*Default*: `${project.reporting.outputDirectory}/blimp.csv`\n\n##### rules\n\nThe location of the rules definitions; it can be the full path of a local file or a classpath resource.\n\n*User property*: `blimp.lint.rules`\n\n### Overriding rules\n\nThere are cases when the rules provided by the [rules](#rules) parameter must be overriden. In such cases the behaviour\nof any rule can be modified by specifying the associated Liquibase properties.\n\nFor instance, a team may consider that the rule for foreign key names enforced by `rules` parameter is too\nrestrictive for a legacy project and may want to relax it:\n\n```yml\nblimp:\n  lint:\n    foreign-key-name:\n      severity: ERROR\n      required: true\n      matches: FK_.+\n```\n\nThere are two options\n\n- disable the rule\n\n```xml\n    \u003cconfiguration\u003e\n        \u003clintProperties\u003e\n            \u003cblimp.lint.foreign-key-name.enabled\u003efalse\u003c/blimp.lint.foreign-key-name.enabled\u003e\n        \u003c/lintProperties\u003e\n        \u003cfailOnSeverity\u003eERROR\u003c/failOnSeverity\u003e\n    \u003c/configuration\u003e\n```\n\n- change the rule severity\n\n```xml\n    \u003cconfiguration\u003e\n        \u003clintProperties\u003e\n            \u003cblimp.lint.foreign-key-name.severity\u003eINFO\u003c/blimp.lint.foreign-key-name.severity\u003e\n        \u003c/lintProperties\u003e\n        \u003cfailOnSeverity\u003eERROR\u003c/failOnSeverity\u003e\n    \u003c/configuration\u003e\n```\n\n---\n\n## Goal blimp:test-generate\n\nThe equivalent of `blimp:generate`, but bound to the Maven testing lifecycle.\n\n### Available parameters\n\n##### addTestResource\n\nWhether to add the SQL scripts as a test resource of the project.\n\n*Default*: `false`\n\n*User property*: `blimp.addTestResource`\n\n##### databases\n\nThe database list for which SQL scripts are generated.\n\n*Default*: `mysql`\n\n*Required*: Yes\n\n*User property*: `blimp.databases`\n\n##### encoding\n\nThe file encoding used for SQL files.\n\n*Default*: `UTF-8`\n\n*User property*: `blimp.encoding`\n\n##### groupingStrategy\n\nControls how to group the changesets to generate one SQL script for a given context or label.\n\nThe following options are available\n\n- `CONTEXTS`: use the changeset context to group changes.\n- `LABELS`: use the changeset label to group changes.\n- `AUTO`: tries to identify if the changes use contexts or labels; if both are present, then contexts is preferred.\n\nNote that when a context or label contains multiple values, only the first one is considered.\n\n*Default*: `AUTO`\n\n*User property*: `blimp.groupingStrategy`\n\n##### inputPatterns\n\nList of glob patterns specifing the changelog files. Not needed by Liquibase, but used by the plugin to avoid unnecessary executions of the goal.\n\n*Default*: `**/*.sql,**/db.changelog*.xml,**/db.changelog*.yml`\n\n*Required*: Yes\n\n*User property*: `blimp.inputPatterns`\n\n##### properties\n\nSpecifies a map of properties you want to pass to Liquibase.\n\n*User property*: `blimp.properties`\n\n##### serviceName\n\nThe name of the service.\n\n*Default*: `${project.artifactId}`\n\n*Required*: Yes\n\n*User property*: `blimp.serviceName`\n\n##### skip\n\nSkip the execution.\n\n*Default*: `false`\n\n*User property*: `blimp.skip`\n\n##### sqlFileNameFormat\n\nSpecifies how to generate the name of SQL script.\n\nThe following placeholders are available:\n\n- `database`: the database type\n- `group`: the name of the group for which the goal generates the SQL script.\n- `service`: the service name taken from the [serviceName](#servicename-1) parameter.\n\nThe group name of the creation script is `create`.\n\n*Default*: `@{database}/@{group}/@{service}.sql`\n\n*User property*: `blimp.sqlFileNameFormat`\n\n##### stripComments\n\nSet to true to remove comments from SQL scripts.\n\n*Default*: `false`\n\n*User property*: `blimp.stripComments`\n\n##### testChangeLogDirectory\n\nThe base directory of the changelog files.\n\n*Default*: `${project.basedir}/src/test/resources`\n\n*Required*: Yes\n\n*User property*: `blimp.testChangeLogDirectory`\n\n##### testChangeLogFile\n\nThe location of the changelog to execute.\nUsually a file name relative to the input directory but it can also point\nto a classpath resource.\n\n*Default*: `db.changelog-test.xml`\n\n*Required*: Yes\n\n*User property*: `blimp.testChangeLogFile`\n\n##### testScriptsDirectory\n\nThe location of the test output directory.\n\n*Default*: `${project.build.directory}/generated-test-resources/blimp`\n\n*Required*: Yes\n\n*User property*: `blimp.testScriptsDirectory`\n\n##### withInitialVersion\n\nGenerates a script for the initial version when there is more than one\ngroup. Having more than one group means a database has been already created for\nthe initial version, so only the upgrade scripts should be generated.\n\n*Default*: `false`\n\n*User property*: `blimp.withInitialVersion`\n\n### Full Configuration with default values\n\n```xml\n\u003cplugin\u003e\n    \u003cgroupId\u003ecom.backbase.oss\u003c/groupId\u003e\n    \u003cartifactId\u003eblimp-maven-plugin\u003c/artifactId\u003e\n    \u003cconfiguration\u003e\n        \u003cskip\u003efalse\u003c/skip\u003e\n        \u003cserviceName\u003e${project.artifactId}\u003c/serviceName\u003e\n    \u003c/configuration\u003e\n    \u003cexecutions\u003e\n        \u003cexecution\u003e\n            \u003cgoals\u003e\n                \u003cgoal\u003etest-generate\u003c/goal\u003e\n            \u003c/goals\u003e\n            \u003cconfiguration\u003e\n                \u003caddTestResource\u003efalse\u003c/addTestResource\u003e\n                \u003cdatabases\u003e\n                    \u003cdatabase\u003emysql\u003c/database\u003e\n                \u003c/databases\u003e\n                \u003cencoding\u003eUTF-8\u003c/encoding\u003e\n                \u003cgroupingStrategy\u003eAUTO\u003c/groupingStrategy\u003e\n                \u003cinputPatterns\u003e\n                    \u003cinputPattern\u003e**/*.sql\u003c/inputPattern\u003e\n                    \u003cinputPattern\u003e**/db.changelog*.xml\u003c/inputPattern\u003e\n                    \u003cinputPattern\u003e**/db.changelog*.yml\u003c/inputPattern\u003e\n                \u003c/inputPatterns\u003e\n                \u003csqlFileNameFormat\u003e@{database}/@{group}/@{service}.sql\u003c/sqlFileNameFormat\u003e\n                \u003cstripComments\u003efalse\u003c/stripComments\u003e\n                \u003ctestChangeLogFile\u003edb.changelog-persistence.xml\u003c/testChangeLogFile\u003e\n                \u003ctestChangeLogDirectory\u003e${project.basedir}/src/test/resources\u003c/testChangeLogDirectory\u003e\n                \u003ctestScriptsDirectory\u003e${project.build.directory}/generated-test-resources/blimp\u003c/testScriptsDirectory\u003e\n                \u003cwithInitialVersion\u003efalse\u003c/withInitialVersion\u003e\n            \u003c/configuration\u003e\n        \u003c/execution\u003e\n    \u003c/executions\u003e\n\u003c/plugin\u003e\n```\n\n---\n\n## Goal blimp:assemble\n\nCreates an archive containing the generated SQL files.\n\n###  Available parameters\n\n##### attach\n\nWhether to attach the produced archives as artifacts.\n\n*Default*: `true`\n\n*User property*: `blimp.attach`\n\n##### classifier\n\nThe classifier of the archive artifact.\n\n*Default*: `sql`\n\n*User property*: `blimp.classifier`\n\n##### formats\n\nSpecifies the formats of the archive.\n\nMultiple formats can be supplied and the goal assemble will generate an\narchive for each desired formats.\n\nA format is specified by supplying one of the following values in a `\u003cformat/\u003e` subelement:\n\n- zip creates a ZIP file format\n- tar creates a TAR file format\n- tar.gz creates a Gzip TAR file format\n- tar.xz creates a Xz TAR file format\n- tar.bz2 creates a Bzip2 TAR file format\n\n*Default*: `zip`\n\n*User property*: `blimp.formats`\n\n##### scriptsDirectory\n\nLocation of the output directory.\n\n*Default*: `${project.build.directory}/generated-resources/blimp`\n\n*Required*: Yes\n\n*User property*: `blimp.scriptsDirectory`\n\n##### serviceName\n\nThe name of the service.\n\n*Default*: `${project.artifactId}`\n\n*Required*: Yes\n\n*User property*: `blimp.serviceName`\n\n##### skip\n\nSkip the execution.\n\n*Default*: `false`\n\n*User property*: `blimp.skip`\n\n### Full Configuration with default values\n\n```xml\n\u003cplugin\u003e\n    \u003cgroupId\u003ecom.backbase.oss\u003c/groupId\u003e\n    \u003cartifactId\u003eblimp-maven-plugin\u003c/artifactId\u003e\n    \u003cconfiguration\u003e\n        \u003cskip\u003efalse\u003c/skip\u003e\n        \u003cserviceName\u003e${project.artifactId}\u003c/serviceName\u003e\n    \u003c/configuration\u003e\n    \u003cexecutions\u003e\n        \u003cexecution\u003e\n            \u003cgoals\u003e\n                \u003cgoal\u003eassemble\u003c/goal\u003e\n            \u003c/goals\u003e\n            \u003cconfiguration\u003e\n                \u003cformats\u003e\n                    \u003cformat\u003ezip\u003c/format\u003e\n                \u003c/formats\u003e\n                \u003cclassifier\u003esql\u003c/classifier\u003e\n                \u003cattach\u003etrue\u003c/attach\u003e\n            \u003c/configuration\u003e\n        \u003c/execution\u003e\n    \u003c/executions\u003e\n\u003c/plugin\u003e\n```\n\n---\n\n## Goal \"blimp:help\"\n\nDisplay help information on backbase-blimp-plugin.\n\nCall `mvn blimp:help -Ddetail=true -Dgoal=\u003cgoal-name\u003e` to display parameter details.\n\n### Available parameters\n\n##### detail\n\nIf `true`, display all settable properties for each goal.\n\n*Default*: `false`\n\n*User property*: `detail`\n\n##### goal\n\nThe name of the goal for which to show help. If unspecified, all goals will be displayed.\n\n*User property*: `goal`\n\n##### indentSize\n\nThe number of spaces per indentation level, should be positive.\n\n*Default*: `2`\n\n*User property*: i`ndentSize`\n\n##### lineLength\n\nThe maximum length of a display line, should be positive.\n\n*Default*: `80`\n\n*User property*: `lineLength`\n\n---\n\n## SQL Formatting\n\nThe plugin by default formats the SQL generated by Liquibase. The formatter can disabled by setting the property `blimp.formatter.enabled` to `false` in the [properties[(#properties) configuration of the plugin.\n\n```xml\n\u003cbuild\u003e\n    \u003cplugins\u003e\n        \u003cplugin\u003e\n            \u003cgroupId\u003ecom.backbase.oss\u003c/groupId\u003e\n            \u003cartifactId\u003eblimp-maven-plugin\u003c/artifactId\u003e\n            \u003cconfiguration\u003e\n                \u003cproperties\u003e\n                    \u003cblimp.formatter.enabled\u003efalse\u003c/blimp.formatter.enabled\u003e\n                \u003cproperties\u003e\n            \u003cconfiguration\u003e\n        \u003c/plugin\u003e\n    \u003c/plugins\u003e\n\u003c/build\u003e\n```\n\n## Configuration Examples\n\nThe most concise example:\n\n```xml\n\u003cplugin\u003e\n    \u003cgroupId\u003ecom.backbase.oss\u003c/groupId\u003e\n    \u003cartifactId\u003eblimp-maven-plugin\u003c/artifactId\u003e\n    \u003cexecutions\u003e\n        \u003cexecution\u003e\n            \u003cgoals\u003e\n                \u003cgoal\u003egenerate\u003c/goal\u003e\n                \u003cgoal\u003etest-generate\u003c/goal\u003e\n                \u003cgoal\u003eassemble\u003c/goal\u003e\n            \u003c/goals\u003e\n        \u003c/execution\u003e\n    \u003c/executions\u003e\n\u003c/plugin\u003e\n```\n\nMore examples can be found in the integration test resources folder.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbackbase%2Fblimp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbackbase%2Fblimp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbackbase%2Fblimp/lists"}