{"id":22845455,"url":"https://github.com/idealista/property-merger","last_synced_at":"2026-05-15T23:10:21.543Z","repository":{"id":56508877,"uuid":"306619824","full_name":"idealista/property-merger","owner":"idealista","description":"Property-merger is a Maven project built to compute differences and merge property files","archived":false,"fork":false,"pushed_at":"2020-11-03T11:12:41.000Z","size":96,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":24,"default_branch":"develop","last_synced_at":"2026-01-13T21:52:45.578Z","etag":null,"topics":["i18n","internacionalization","java","l10n","localization","maven","properties","property-files"],"latest_commit_sha":null,"homepage":"","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/idealista.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":".github/CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":".github/CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-10-23T11:46:11.000Z","updated_at":"2020-11-03T11:12:44.000Z","dependencies_parsed_at":"2022-08-15T20:01:05.495Z","dependency_job_id":null,"html_url":"https://github.com/idealista/property-merger","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/idealista/property-merger","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/idealista%2Fproperty-merger","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/idealista%2Fproperty-merger/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/idealista%2Fproperty-merger/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/idealista%2Fproperty-merger/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/idealista","download_url":"https://codeload.github.com/idealista/property-merger/tar.gz/refs/heads/develop","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/idealista%2Fproperty-merger/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33082919,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-15T20:25:35.270Z","status":"ssl_error","status_checked_at":"2026-05-15T20:25:34.732Z","response_time":103,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["i18n","internacionalization","java","l10n","localization","maven","properties","property-files"],"created_at":"2024-12-13T03:17:19.308Z","updated_at":"2026-05-15T23:10:21.529Z","avatar_url":"https://github.com/idealista.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"![Logo](https://raw.githubusercontent.com/idealista/property-merger/main/logo.gif)\n\n# Property-merger\n\nProperty-merger is a Maven project built to compute differences and merge property files.\n\n## What is a Property File?\n\n[Property files](https://en.wikipedia.org/wiki/.properties) are mainly used in Java related technologies to store configurable parameters of and application and [i18n/l10n](https://en.wikipedia.org/wiki/Internationalization_and_localization) strings (known as _'Property Resource Bundles'_). Each parameter is stored as key/value pairs; one storing the name of the parameter (key) and the other storing the value.\n\nProperty files normally uses the _.properties_ filename extension.\n\n## How it's used\n\nWith Property-merger mainly you can compute differences between two Java Property files and merge this differences.\n\n### How to generate an executable Jar file from sources\n\n1. Clone this repository\n\n```\n$ git clone https://github.com/idealista/property-merger.git\n```\n\n2. Run Maven Package to package this Maven project into an executable Jar file\n\n```\n$ ./mvnw package\n```\n\nThis command will produce a jar in the target folder -\u003e ./target/property-merger-1.1.0-jar-with-dependencies.jar\n\n3. Execute the Jar generated in the second step\n\n```\n$ java -jar ./target/property-merger-1.1.0-jar-with-dependencies.jar -h\nusage: java -jar \u003cproperty_merger_jar_path\u003e --help | java -jar \u003cproperty_merger_jar_path\u003e --version | java -jar \u003cproperty_merger_jar_path\u003e -l \u003cleft_file_path\u003e -r \u003cright_file_path\u003e\n            -o \u003cDIFF | MERGE [--with-addition] [--with-deletion] [--with-modification] [--with-remove-base-escapes]\u003e\nGitHub Page: https://www.github.com/idealista/property-merger\n -h,--help                        print this message\n -l,--leftFilePath \u003cFILE PATH\u003e    left file path\n -o,--operation \u003cDIFF|MERGE\u003e      operation to execute\n -r,--rightFilePath \u003cFILE PATH\u003e   right file path\n -v,--version                     print version\n    --with-addition               addition configured for merge (default to false)\n    --with-deletion               deletion configured for merge (default to false)\n    --with-modification           modification configured for merge (default to false)\n    --with-remove-base-escapes    remove escape character from base file (default to false)\n```\n\n### Operations\n\n#### Diff Operation\n\nGiven two property files, Property-merger generates an output describing which parameters are added, modified or deleted (comparing base file to other file). \n\n| Result | Description |\n| --- | --- |\n| Added Parameter | New parameter (new key) appears in the second file |\n| Modified Parameter | Same parameter (same key) appears with different values in both files |\n| Deleted Parameter | A parameter that appears in the first file doesn't appear in the second one |\n\n**Example**\n\n**Base File (base.properties)**\n\n```\n#\n# other comment\n#\nfoo.bar=baz {0}\nqux.quux=waldo {0}, fred {1}\n```\n\n**Other File (other.properties)**\n\n```\n#\n# example comment\n#\nqux.quux=corge {0}, grault {1}\nnorf.plugh=wyzzy {0}\n```\n\nWill produce:\n\n```\n$ java -jar ./target/property-merger-1.1.0-jar-with-dependencies.jar -l ./samples/base.properties -r ./samples/other.properties -o DIFF\n------ [1] Added Properties ------\nnorf.plugh = wyzzy {0}\n\n------ [1] Modified Properties ------\nqux.quux = corge {0}, grault {1}\n\n------ [1] Deleted Properties ------\nfoo.bar = baz {0}\n```\n\n**Note:** The diff operation **ignores** comments and does not take into account the order in which the parameters were defined. \n\nUsing the files below the diff command won't display any change:\n\n**Base File (base.properties)**\n\n```\n#\n# example comment\n#\nfoo.bar=baz {0}\nqux.quux=corge {0}, grault {1}\n```\n\n**Other File (other.properties)**\n\n```\n#\n# other comment\n#\nqux.quux=corge {0}, grault {1}\nfoo.bar=baz {0}\n```\n\nWill produce:\n\n```\n$ java -jar ./target/property-merger-1.1.0-jar-with-dependencies.jar -l ./samples/base.properties -r ./samples/other.properties -o DIFF\n------ [0] Added Properties ------\n\n------ [0] Modified Properties ------\n\n------ [0] Deleted Properties ------\n\n```\n\n## Requirements\n\nThe library has been tested with _Apache Maven 3.3.9_ (Maven Wrapper is included to provide a fully encapsulated build setup) and _JDK 1.8_. Newer versions of _Apache Maven/JDK_ should work but could also present issues. \n\n## License\n\n![Apache 2.0 Licence](https://img.shields.io/hexpm/l/plug.svg)\n\nThis project is licensed under the [Apache 2.0](https://www.apache.org/licenses/LICENSE-2.0) license - see the [LICENSE](LICENSE) file for details.\n\n## Contributing\n\nPlease read [CONTRIBUTING.md](.github/CONTRIBUTING.md) for details on our code of conduct, and the process for submitting pull requests to us.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fidealista%2Fproperty-merger","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fidealista%2Fproperty-merger","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fidealista%2Fproperty-merger/lists"}