Files
common-plugin/README.md

163 lines
5.0 KiB
Markdown

# Common Plugin.
<!-- TOC -->
* [Common Plugin.](#common-plugin)
* [Plugins.](#plugins)
* [Common.](#common)
* [Plugin Common.](#plugin-common)
* [Plugin Common Build.](#plugin-common-build)
* [Plugin Common Detekt.](#plugin-common-detekt)
* [Plugin Common Ktlint.](#plugin-common-ktlint)
* [Plugin Common Project.](#plugin-common-project)
* [Library.](#library)
* [Plugin Library.](#plugin-library)
* [Plugin Library Manifest.](#plugin-library-manifest)
* [Plugin Library publish.](#plugin-library-publish)
* [Service](#service)
* [Plugin Service](#plugin-service)
* [Plugin Service Container](#plugin-service-container)
* [Configuration](#configuration)
* [Gradle Tasks](#gradle-tasks)
* [Plugin Service Test Integration](#plugin-service-test-integration)
* [Plugin Service Process Resource](#plugin-service-process-resource)
* [Publish gradle plugin locally.](#publish-gradle-plugin-locally)
* [Releasing gradle plugin.](#releasing-gradle-plugin)
* [Publish gradle plugin to repository.](#publish-gradle-plugin-to-repository)
* [Global gradle properties.](#global-gradle-properties)
<!-- TOC -->
## Plugins.
### Common.
#### Plugin Common.
id `ltd.lulz.plugin.common-plugin.common`
Set core Java and Kotlin settings and overweight project version with git version.
#### Plugin Common Build.
id `ltd.lulz.plugin.common-plugin.common-build`
Display name and version, add `buildInfo` to `build` task.
#### Plugin Common Detekt.
id `ltd.lulz.plugin.common-plugin.common-detekt`
Detect is a code smell analysis for your Kotlin projects.
#### Plugin Common Ktlint.
id `ltd.lulz.plugin.common-plugin.common-ktlint`
Ktlint enforces consistent code style and formatting across Kotlin codebases.
#### Plugin Common Project.
id `ltd.lulz.plugin.common-plugin.common-project`
Display project, Gradle, and Java information.
### Library.
#### Plugin Library.
id `ltd.lulz.plugin.common-plugin.library`
Default setting and tasks for libraries.
#### Plugin Library Manifest.
id `ltd.lulz.plugin.common-plugin.library-manifest`
Extend manifest in library jar file.
#### Plugin Library publish.
id `ltd.lulz.plugin.common-plugin.library-publish`
Configuration for publishing project artifacts to a remote Maven repository.
### Service
#### Plugin Service
id `ltd.lulz.plugin.common-plugin.service`
Default setting and tasks for services.
#### Plugin Service Container
id `ltd.lulz.plugin.common-plugin.service-container`
Configuration for running project in docker locally during development.
##### Configuration
* properties `container.network`, environment `CONTAINER_NETWORK`, or default `develop`
* properties `container.port.expose`, environment `CONTAINER_PORT_EXPOSE`, or default `8080`
* properties `container.port.host`, environment `CONTAINER_PORT_HOST`, or default `8080`
* properties `container.profiles`, environment `CONTAINER_PROFILES`, or default `docker`
* properties `docker.port.expose`, environment `DOCKER_PORT_EXPOSE`, or default `8080`
container and docker ports can be a single port (e.g., 8080) or multiple ports separated by commas (e.g., 8080,8443)
##### Gradle Tasks
* `containerCreate` create docker container with network and spring boot profile.
* `containerStart` starts docker container.
* `containerStop` stops docker container.
* `containerNetworkCheck` check if network exist.
* `containerNetworkCreate` creates network.
* `containerNetworkRemove` removes network.
#### Plugin Service Test Integration
id `ltd.lulz.plugin.common-plugin.service-test-integration`
Adding task `testIntegration` to run integration test, add to `verification` group and add to task `check`.
Adding intellij support `src/test-integration/java`, `src/test-integration/kotlin`, and `src/test-integration/resources` as test module in intellij.
Adding dependencies support `testIntegrationImplementation()`, and `testIntegrationRuntimeOnly()` as part of Gradle.
#### Plugin Service Process Resource
id `ltd.lulz.plugin.common-plugin.service-process-resource`
Assign values to `application.yml` from Gradle.
## Publish gradle plugin locally.
```shell
./gradlew clean publishToMavenLocal
```
## Releasing gradle plugin.
Run release pipeline from `master` branch.
### Publish gradle plugin to repository.
```shell
./gradlew clean publishAllPublicationsToGiteaPackagesRepository
```
## Global gradle properties.
To authenticate with Gradle to access repositories that require authentication, you can set your user and token in the `gradle.properties` file.
Here's how you can do it:
1. Open or create the `gradle.properties` file in your Gradle user home directory:
- On Unix-like systems (Linux, macOS), this directory is typically `~/.gradle/`.
- On Windows, this directory is typically `C:\Users\<YourUsername>\.gradle\`.
2. Add the following lines to the `gradle.properties` file:
```properties
repository.<name>.user=your_user
repository.<name>.token=your_token_value
```
or use environment variables `REPOSITORY_USER` and `REPOSITORY_TOKEN`