{"id":23854857,"url":"https://github.com/jbosstm/narayana","last_synced_at":"2025-05-13T20:11:07.907Z","repository":{"id":2071728,"uuid":"3010630","full_name":"jbosstm/narayana","owner":"jbosstm","description":"The codebase for the narayana project","archived":false,"fork":false,"pushed_at":"2025-04-07T16:09:51.000Z","size":98865,"stargazers_count":244,"open_issues_count":1,"forks_count":176,"subscribers_count":23,"default_branch":"main","last_synced_at":"2025-04-22T13:23:45.838Z","etag":null,"topics":["hacktoberfest"],"latest_commit_sha":null,"homepage":"http://www.jboss.org/narayana/","language":"Java","has_issues":false,"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/jbosstm.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2011-12-19T08:13:03.000Z","updated_at":"2025-04-07T16:10:05.000Z","dependencies_parsed_at":"2023-02-14T15:15:44.925Z","dependency_job_id":"fd0fc917-2f9a-4e5a-b5c0-9b23acc07881","html_url":"https://github.com/jbosstm/narayana","commit_stats":{"total_commits":2998,"total_committers":76,"mean_commits":39.44736842105263,"dds":0.6641094062708472,"last_synced_commit":"d2e07052270dcd64c7a485152bee35d07352c1cd"},"previous_names":[],"tags_count":183,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jbosstm%2Fnarayana","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jbosstm%2Fnarayana/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jbosstm%2Fnarayana/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jbosstm%2Fnarayana/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jbosstm","download_url":"https://codeload.github.com/jbosstm/narayana/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251298101,"owners_count":21566953,"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":["hacktoberfest"],"created_at":"2025-01-03T00:17:49.654Z","updated_at":"2025-04-28T10:46:54.248Z","avatar_url":"https://github.com/jbosstm.png","language":"Java","funding_links":[],"categories":["数据库开发"],"sub_categories":[],"readme":"[![Narayana](https://design.jboss.org/narayana/logo/final/narayana_logo_600px.png)](https://narayana.io/)\n\n[![Version](https://img.shields.io/maven-central/v/org.jboss.narayana/narayana-all?logo=apache-maven\u0026style=for-the-badge)](https://search.maven.org/artifact/org.jboss.narayana/narayana-all)\n\n# Narayana\n\nWebsite: https://narayana.io\n\nTwitter: https://twitter.com/narayana_io, using twitter handle [#narayanaio](https://twitter.com/search?q=%23narayanaio)\n\n## Getting help\n\nIf you need help with using Narayana, please visit our forums at:\nhttps://groups.google.com/g/narayana-users\nor ask a question on our zulip channel (https://narayana.zulipchat.com/#).\n\nIf you would like to contribute a pull request to help the project out the file [CONTRIBUTING.md](https://github.com/jbosstm/narayana/blob/main/CONTRIBUTING.md) contains some guidance on how to do so.\n\nIf you have a performance optimization that you would like to suggest to us, please read our document over here:\nhttps://developer.jboss.org/wiki/PerformanceGatesForAcceptingPerformanceFixesInNarayana\n\n### Support Guarantees\n\nAlthough there are no formal guarantees to support this software the team and, we hope, the broader community will make every effort to resolve queries, fix bugs and add agreed upon features as quickly as resources allow. Community fixes and enhancements can only be expected to be considered for merging onto the main branch.\n\n## Requirements\n\nTo build this project you will need a JDK (Java Development Kit) with a minimum version of 17 and a Maven with a minimum version specified in the [maven wrapper properties file](.mvn/wrapper/maven-wrapper.properties)\n\nThe commands to do this will vary depending upon which operating system you are building on.\n\n## Building Narayana\n\nTo build Narayana you should call:\n\n\t./build.[sh|bat] \u003cmaven_goals, default is install\u003e\n\t\nTo build Narayana without running tests you can call:\n\n\t./build.[sh|bat] -DskipTests\n\n\nIf you are building the \"community\" profile and are using a different maven installation to the one provided by maven wrapper `./mvn` you need to make sure you have the following options:\n\n\t-Dorson.jar.location=/full/path/to/checkout/location/ext/\n\t\nThe distribution is then available in:\n\n\t./narayana-full/target/narayana-full-\u003cVERSION\u003e-bin.zip\n\t\nThe uber jar for the JDK ORB is available here:\n\n\t./ArjunaJTS/narayana-jts-idlj/target/narayana-jts-idlj-\u003cVERSION\u003e.jar\n\nThe user jar for local JTA is here:\n\n\t./ArjunaJTA/narayana-jta/target/narayana-jta-\u003cVERSION\u003e.jar\n\nIf you just need the facilities provided by ArjunaCore:\n\n\t./ArjunaCore/arjunacore/target/arjunacore-\u003cVERSION\u003e.jar\n\t\n## Building specific components\n\nIf you would like to build an individual module (say arjuna) with its dependencies you would type:\n\n\t./build.[sh|bat] [clean] install -pl :arjuna -am\n\t\nOther interesting specific components can be built using:\n\nArjunaCore: `./build.[sh|bat] -am -pl :arjunacore`\n\nNarayanaJTA: `./build.[sh|bat] -am -pl :narayana-jta`\n\nNarayanaJTS (idlj): `./build.[sh|bat] -am -pl :narayana-jts-idlj`\n\nXTS: `./build.[sh|bat] -am -pl :jboss-xts`\n\nSTM: `./build.[sh|bat] -am -pl :stm`\n\n## Narayana (BOM) Bill Of Materials\n\nmaven BOM dependency used to encapsulate all the dependencies required by Narayana.\n\n    \u003cdependencyManagement\u003e\n     \u003cdependencies\u003e\n       \u003cdependency\u003e\n         \u003cgroupId\u003eorg.jboss.narayana\u003c/groupId\u003e\n         \u003cartifactId\u003enarayana-bom\u003c/artifactId\u003e\n         \u003cversion\u003e6.0.1.Final-SNAPSHOT\u003c/version\u003e\n         \u003ctype\u003epom\u003c/type\u003e\n         \u003cscope\u003eimport\u003c/scope\u003e\n       \u003c/dependency\u003e\n     \u003c/dependencies\u003e\n   \u003c/dependencyManagement\u003e\n\n## Testing Narayana\n\nThere are three types of tests in the Narayana repository.\n\n* Unit tests which are run with maven surefire and they do not need any special setup.\n  Unit tests are run automatically when Narayana is build and if it's not specified otherwise (e.g. with maven flag `-DskipTests`)\n* Integration tests are run with maven surefire or maven failsafe. They are run with use of the Arquillian\n  and you need to explicitly enable them by activating profile `arq` (maven flag `-Parq`).\n  There is a difficulty that each module have different requirements for the integration tests to be run.\n  Most of them requires environmental variable `JBOSS_HOME` to be defined and points to an existing\n  directory of [WildFly](https://wildfly.org/downloads/). But some of them requires additional steps\n  for WildFly being configured. The best way to find out details is to check the [narayana.sh script](scripts/hudson/narayana.sh)\n  which is used to run CI tests.\n* Integration qa suite resides in the directory `qa/` and contains form of integration tests.\n  These are built but not run automatically. See [qa/README.txt](qa/README.txt) for usage. In brevity launching tests\n  is about running commands:\n\n      cd qa/\n      ant -f run-tests.xml ci-tests\n\n\n## Code Coverage Testing\n\n      ./build.[sh|bat] -PcodeCoverage (the output is in ${project.build.directory}/coverage.html)\n\n## Checkstyle\n\nNarayana expect usage of the style of code defined by WildFly checkstyle (maven artifact \n[org.wildfly.checkstyle:wildfly-checkstyle-config](https://github.com/wildfly/wildfly-checkstyle-config)).\n\nBecause of historical reasons the checkstyle is applied only at newly developed Narayana modules.\nThe old ones are left without strict code style rules. There is only a recommendation to follow\ncode style used in the particular file you edit.\n\nCheckstyle checking is bound to maven install phase and if the file does not comply with the defined rules\nthe compilation fails.\n\nTo get your developer life easier use the checkstyle plugins for your IDE\n\n* clone the repo with the\n  [checkstyle.xml](https://github.com/wildfly/wildfly-checkstyle-config/blob/master/src/main/resources/wildfly-checkstyle/checkstyle.xml)\n  file https://github.com/wildfly/wildfly-checkstyle-config\n* install checkstyle plugin to your favourite IDE\n    - IntelliJ IDEA: https://plugins.jetbrains.com/plugin/1065-checkstyle-idea\n    - Eclipse: https://checkstyle.org/eclipse-cs/#!/\n* configure plugin to consume the *checkstyle.xml* and being applied to the particular module\n\nThe WildFly provides a formatter complying with the checkstyle rules. If interested check the IDE configs\nat project [wildfly-core](https://github.com/wildfly/wildfly-core/tree/main/ide-configs).\n\n## Now The Gory Details.\n\nEach module contains a set of maven build scripts, which chiefly just inherits and selectively overrides the parent\n pom.xml  Understanding this approach requires some knowledge of maven's inheritance.\n\nTop level maven builds always start from scratch. Individual module builds on the other hand are incremental,\nsuch that you may rebuild a single module by traversing into its directory and running 'mvn', but only if you\nhave first built any pre-req modules e.g. via a parent build.\n\nIn addition to driving the build of individual modules, the build files in the bundles directories (ArjunaCore,\nArjunaJTA, ArjunaJTS) contain steps to assemble the release directory structure, including docs, scripts,\nconfig files and other ancillaries. These call each other in some cases, as JTS is largely a superset of\nJTA and JTA in turn a superset of Core.\n\n3rd party dependency management is done via maven. Note that versions of most 3rd party components are resolved via the WildFly component-matrix\npom.xml, even when building standalone releases. The version of WildFly to use is determined by the top level pom.xml\n\nMaven is provided via [maven wrapper](https://github.com/takari/maven-wrapper) with command `./mvnw`.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjbosstm%2Fnarayana","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjbosstm%2Fnarayana","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjbosstm%2Fnarayana/lists"}