Skip to content

Commit a819679

Browse files
committed
feat(archetype): 🔨 create archetype microservices
create archetype microservices - java - maven - springboot
1 parent 1bc82c0 commit a819679

31 files changed

+1193
-11
lines changed

README.md

Lines changed: 48 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,70 @@
11
# archetype-api-microservices
2+
23
archetype-api-microservices
34

5+
## Clonar el Proyecto
6+
7+
Para clonar este proyecto, utiliza el siguiente comando:
8+
9+
```bash
10+
git clone https://github.com/dbacilio88/archetype-api-microservices.git
11+
```
12+
13+
## Requisitos
14+
15+
Asegúrate de tener instalado:
16+
17+
- Java 11 + (o la versión necesaria)
18+
- Maven 3.x
19+
20+
## Construcción del Proyecto
21+
22+
```bash
23+
cd archetype-api-microservices
24+
mvn clean install
25+
```
26+
427
## Construir en Terminal bash
28+
529
```shell
630
mvn archetype:generate \
731
-DarchetypeGroupId=com.bacsystem \
832
-DarchetypeArtifactId=archetype-api-microservices \
933
-DarchetypeVersion=1.0.0 \
10-
-DgroupId=com.bacsystem \
11-
-DartifactId=archetype-demo \
34+
-DgroupId=com.example \
35+
-DartifactId=archetype-example \
36+
-Dversion=1.0.0 \
1237
-Dversion=1.0.0 \
38+
-DpackageName=microservice/application \
39+
-Dpackage=com.example \
1340
-DinteractiveMode=false
1441
```
1542

1643
## Construir en Terminal cmd
44+
1745
```shell
1846
mvn archetype:generate ^
1947
-DarchetypeGroupId=com.bacsystem ^
2048
-DarchetypeArtifactId=archetype-api-microservices ^
2149
-DarchetypeVersion=1.0.0 ^
22-
-DgroupId=com.bacsystem ^
23-
-DartifactId=archetype-demo ^
50+
-DgroupId=com.example ^
51+
-DartifactId=archetype-example ^
2452
-Dversion=1.0.0 ^
53+
-Dversion=1.0.0 ^
54+
-DpackageName=microservice/application ^
55+
-Dpackage=com.example ^
2556
-DinteractiveMode=false
2657

27-
```
58+
```
59+
60+
## 👨🏻‍💻 Contributors
61+
62+
¿Cómo puedes ayudar?
63+
64+
1. [ ] Prueba el arquetipo y compárteme tus impresiones.
65+
2. [ ] Contribuye con código, ideas o mejoras.
66+
3. [ ] Comparte este mensaje con tus colegas y en tus redes sociales.
67+
68+
Tu apoyo puede hacer una gran diferencia y juntos podemos construir algo increíble. ¡Espero contar contigo!
69+
70+
[dbacilio88](https://github.com/dbacilio88)

pom.xml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
<groupId>com.bacsystem</groupId>
77
<artifactId>archetype-api-microservices</artifactId>
88
<version>1.0.0</version>
9+
<description>archetype component spring-boot</description>
910

1011
<developers>
1112
<developer>
@@ -25,6 +26,8 @@
2526
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
2627
</properties>
2728

29+
30+
2831
<build>
2932
<extensions>
3033
<extension>

src/main/resources/META-INF/maven/archetype-metadata.xml

Lines changed: 45 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,54 @@
33
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
44
xsi:schemaLocation="http://maven.apache.org/plugins/maven-archetype-plugin/archetype-descriptor/1.1.0 https://maven.apache.org/xsd/archetype-descriptor-1.1.0.xsd"
55
name="quickstart">
6+
7+
<requiredProperties>
8+
<requiredProperty key="groupId">
9+
<!--<default>com.bacsystem</default>-->
10+
</requiredProperty>
11+
<requiredProperty key="artifactId">
12+
<!--<default>archetype-demo</default>-->
13+
</requiredProperty>
14+
<requiredProperty key="package">
15+
<!-- <defaultValue>com.bacsystem</defaultValue>-->
16+
</requiredProperty>
17+
<!-- <requiredProperty key="className"/>-->
18+
<requiredProperty key="packageName"/>
19+
</requiredProperties>
20+
621
<fileSets>
722

23+
24+
<fileSet filtered="true" packaged="true" encoding="UTF-8">
25+
<directory>src/main/java</directory>
26+
<includes>
27+
<include>**/*.java</include>
28+
</includes>
29+
</fileSet>
30+
31+
<fileSet filtered="true" encoding="UTF-8">
32+
<directory>src/main/resources</directory>
33+
<includes>
34+
<include>**/*.yml</include>
35+
<include>**/*.xml</include>
36+
<include>**/*.properties</include>
37+
</includes>
38+
</fileSet>
39+
840
<fileSet filtered="true" packaged="true" encoding="UTF-8">
9-
<directory>src</directory>
41+
<directory>src/test/java</directory>
42+
<includes>
43+
<include>**/*.java</include>
44+
</includes>
45+
</fileSet>
46+
47+
<fileSet filtered="true" encoding="UTF-8">
48+
<directory>src/test/resources</directory>
49+
<includes>
50+
<include>**/*.yml</include>
51+
<include>**/*.xml</include>
52+
<include>**/*.properties</include>
53+
</includes>
1054
</fileSet>
1155

1256
<fileSet filtered="false" encoding="UTF-8">
Lines changed: 106 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,108 @@
11
plugins {
22
id 'java'
3-
}
3+
id 'jacoco'
4+
id 'io.spring.dependency-management' version '1.1.5'
5+
id 'org.springframework.boot' version '3.3.0'
6+
}
7+
8+
9+
group = '${groupId}'
10+
version = '${version}'
11+
description = '${description}'
12+
13+
java {
14+
sourceCompatibility = '21'
15+
}
16+
// configurations:
17+
configurations {
18+
19+
compileOnly {
20+
canBeResolved = true
21+
extendsFrom annotationProcessor
22+
}
23+
configureEach {
24+
25+
exclude module: 'spring-boot-starter-logging'
26+
27+
resolutionStrategy.dependencySubstitution.all {
28+
dependency ->
29+
if (dependency.requested instanceof ModuleComponentSelector && dependency.requested.module == 'spring-boot-starter-logging') {
30+
dependency.useTarget("org.springframework.boot:spring-boot-starter-log4j2:$dependency.requested.version", "Use Log4j2 instead of Logback")
31+
}
32+
}
33+
34+
resolutionStrategy.eachDependency {
35+
DependencyResolveDetails details ->
36+
if (details.requested.group == 'org.apache.logging.log4j') {
37+
details.useVersion "2.23.1"
38+
}
39+
}
40+
}
41+
}
42+
43+
44+
// repositories
45+
repositories {
46+
mavenCentral()
47+
}
48+
49+
//Test and report coverage spot-bugs:
50+
jacoco {
51+
toolVersion = '0.8.11'
52+
}
53+
54+
jacocoTestReport {
55+
reports {
56+
xml.required = true
57+
html.required = true
58+
}
59+
}
60+
61+
test {
62+
useJUnitPlatform()
63+
finalizedBy jacocoTestReport
64+
}
65+
66+
jacocoTestReport {
67+
dependsOn test
68+
}
69+
70+
dependencies {
71+
72+
// dependencies app build
73+
implementation group: 'org.springframework.boot', name: 'spring-boot-starter', version: '3.3.0'
74+
implementation group: 'org.springframework.boot', name: 'spring-boot-starter-webflux', version: '3.3.0'
75+
implementation group: 'org.springframework.boot', name: 'spring-boot-starter-actuator', version: '3.3.0'
76+
implementation group: 'org.springframework.boot', name: 'spring-boot-starter-validation', version: '3.3.0'
77+
implementation group: 'org.springframework.boot', name: 'spring-boot-starter-data-jpa', version: '3.3.0'
78+
79+
// dependencies app logging
80+
implementation group: 'org.springframework.boot', name: 'spring-boot-starter-log4j2', version: '3.3.0'
81+
implementation group: 'org.apache.logging.log4j', name: 'log4j-api', version: '2.23.1'
82+
implementation group: 'org.apache.logging.log4j', name: 'log4j-core', version: '2.23.1'
83+
84+
// dependencies app database
85+
implementation group: 'org.postgresql', name: 'postgresql', version: '42.7.2'
86+
87+
// dependencies app documentation swagger
88+
implementation group: 'org.springdoc', name: 'springdoc-openapi-starter-webflux-ui', version: '2.6.0'
89+
implementation group: 'org.springdoc', name: 'springdoc-openapi-starter-webflux-api', version: '2.6.0'
90+
91+
//compiled annotation processor
92+
annotationProcessor group: 'org.springframework.boot', name: 'spring-boot-configuration-processor', version: '3.3.0'
93+
compileOnly group: 'org.projectlombok', name: 'lombok', version: '1.18.32'
94+
annotationProcessor group: 'org.projectlombok', name: 'lombok', version: '1.18.32'
95+
compileOnly group: 'org.mapstruct', name: 'mapstruct', version: '1.5.5.Final'
96+
annotationProcessor group: 'org.mapstruct', name: 'mapstruct-processor', version: '1.5.5.Final'
97+
implementation group: 'org.modelmapper', name: 'modelmapper', version: '3.2.0'
98+
compileOnly group: 'org.modelmapper', name: 'modelmapper', version: '3.2.0'
99+
100+
// dependencies app develop
101+
developmentOnly group: 'org.springframework.boot', name: 'spring-boot-devtools', version: '3.3.0'
102+
103+
// test
104+
testImplementation group: 'org.springframework.boot', name: 'spring-boot-starter-test', version: '3.3.0'
105+
testImplementation group: 'com.h2database', name: 'h2', version: '2.1.214'
106+
}
107+
108+
Lines changed: 54 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,54 @@
1-
# Guía de procedimientos para despliegue de una app:
1+
# Guía de procedimientos para despliegue de una app:
2+
3+
<!-- TOC -->
4+
* [Guía de procedimientos para despliegue de una app:](#guía-de-procedimientos-para-despliegue-de-una-app)
5+
* [Contenido:](#contenido)
6+
* [🛠️ Componente microservice](#-componente-microservice)
7+
* [📦 Creación de la base](#-creación-de-la-base)
8+
* [⚙️ Configuración](#-configuración)
9+
* [👨🏻‍💻 Contributors](#-contributors)
10+
<!-- TOC -->
11+
12+
# Contenido:
13+
14+
# 🛠️ Componente microservice
15+
16+
| Componente | Version | Recurso |
17+
|------------|--------------------------------|---------------------------------------------------|
18+
| Spring | org.springframework.boot 3.3.0 | [console](https://spring.io/projects/spring-boot) |
19+
| Gradle | gradle-8.5 | [console](https://gradle.org/) |
20+
| Lombok | 1.18.32 | [console](https://projectlombok.org/) |
21+
22+
# 📦 Creación de la base
23+
24+
Para este proyecto trabajaremos con la base de datos postgresql, teniendo en cuenta que esta demostración está destinada
25+
para desarrollo, y no para usos productivos.
26+
27+
| DB | Image Version | Recurso |
28+
|------------|--------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
29+
| docker | Docker Desktop 4.34.2 | [console](https://www.docker.com/get-started/) |
30+
| postgresql | postgres:16.3-alpine3.20 | [console](https://hub.docker.com/layers/library/postgres/13.16-alpine3.20/images/sha256-0658c4f5521f043f62d7e3431ad523261b9108ecbfb3f58a2350ac4e29ce1147?context=explore) |
31+
32+
# ⚙️ Configuración
33+
34+
Para crear la base de datos postgresql:
35+
36+
Requerimientos previos:
37+
38+
- Docker instalado
39+
- Revisar
40+
documentación, [docker-postgresql](https://github.com/dbacilio88/devops/blob/master/documentation/docker/database/pg/postgres.md)
41+
- Configurar las credenciales de acceso a base de datos con la credential definida
42+
43+
# 👨🏻‍💻 Contributors
44+
45+
¿Cómo puedes ayudar?
46+
47+
1. [ ] Prueba el arquetipo y compárteme tus impresiones.
48+
2. [ ] Contribuye con código, ideas o mejoras.
49+
3. [ ] Comparte este mensaje con tus colegas y en tus redes sociales.
50+
51+
Tu apoyo puede hacer una gran diferencia y juntos podemos construir algo increíble. ¡Espero contar contigo!
52+
53+
[dbacilio88](https://github.com/dbacilio88)
54+
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
{
2+
"id": "1658a2a5-1132-47cb-9160-5bbc593aaabd",
3+
"name": "archetype-dev",
4+
"values": [
5+
{
6+
"key": "api-microservice-host",
7+
"value": "localhost:8000/${artifactId}/v1",
8+
"type": "default",
9+
"enabled": true
10+
}
11+
],
12+
"_postman_variable_scope": "environment",
13+
"_postman_exported_at": "2024-09-28T22:31:56.949Z",
14+
"_postman_exported_using": "Postman/11.14.0"
15+
}

src/main/resources/archetype-resources/docs/collections/collection-postman.json

Lines changed: 0 additions & 1 deletion
This file was deleted.

src/main/resources/archetype-resources/docs/collections/environment-postman.json

Lines changed: 0 additions & 1 deletion
This file was deleted.

0 commit comments

Comments
 (0)