Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions .devcontainer/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
FROM mcr.microsoft.com/devcontainers/java:21

USER root

RUN apt-get update \
&& apt-get install -y --no-install-recommends ripgrep \
&& rm -rf /var/lib/apt/lists/*

USER vscode
19 changes: 19 additions & 0 deletions .devcontainer/devcontainer-lock.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
{
"features": {
"ghcr.io/devcontainers-extra/features/zsh-plugins:0": {
"version": "0.0.5",
"resolved": "ghcr.io/devcontainers-extra/features/zsh-plugins@sha256:4dcc8e97307345cff26c2b4dfd840c2947b8b5bb20f492a68bdb9fbe9ccb67ba",
"integrity": "sha256:4dcc8e97307345cff26c2b4dfd840c2947b8b5bb20f492a68bdb9fbe9ccb67ba"
},
"ghcr.io/devcontainers/features/java:1": {
"version": "1.8.0",
"resolved": "ghcr.io/devcontainers/features/java@sha256:9663ce0219ff85786e87901ce5f0a59f488edd5f99b46015192cda48468b233a",
"integrity": "sha256:9663ce0219ff85786e87901ce5f0a59f488edd5f99b46015192cda48468b233a"
},
"ghcr.io/devcontainers/features/node:1": {
"version": "1.7.1",
"resolved": "ghcr.io/devcontainers/features/node@sha256:8c0de46939b61958041700ee89e3493f3b2e4131a06dc46b4d9423427d06e5f6",
"integrity": "sha256:8c0de46939b61958041700ee89e3493f3b2e4131a06dc46b4d9423427d06e5f6"
}
}
}
197 changes: 197 additions & 0 deletions .devcontainer/devcontainer.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,197 @@
{
"name": "Transbank SDK Java Development Container",
"build": {
"dockerfile": "Dockerfile",
"context": ".."
},
"workspaceFolder": "/workspaces/${localWorkspaceFolderBasename}",
"postCreateCommand": "bash .devcontainer/post-create.sh",
"forwardPorts": [
8080
],
"remoteUser": "vscode",
"mounts": [
"source=transbank-maven-cache,target=/home/vscode/.m2,type=volume",
"source=${localEnv:HOME}/.ssh,target=/home/vscode/.ssh,type=bind,consistency=cached"
],
"features": {
"ghcr.io/devcontainers/features/java:1": {
"version": "none",
"installMaven": "true",
"installGradle": "false"
},
"ghcr.io/devcontainers/features/node:1": {
"version": "24",
"installYarn": "false"
},
"ghcr.io/devcontainers-extra/features/zsh-plugins:0": {
"plugins": "git zsh-autosuggestions zsh-syntax-highlighting",
"omzPlugins": "https://github.com/zsh-users/zsh-autosuggestions https://github.com/zsh-users/zsh-syntax-highlighting"
}
},
"customizations": {
"vscode": {
"extensions": [
"redhat.java", // Language Support for Java
"vscjava.vscode-java-pack", // Extension Pack for Java (Language Support, Debugger, Test Runner, Maven)
"GabrielBB.vscode-lombok", // Lombok Annotations Support
"sonarsource.sonarlint-vscode", // SonarLint (mismo análisis que el CI)
"usernamehw.errorlens", // Error Lens - Muestra errores inline en el código
"ryanluker.vscode-coverage-gutters", // Coverage Gutters - Visualiza cobertura de tests
"ms-vsliveshare.vsliveshare", // Live Share - Colaboración en tiempo real
"gruntfuggly.todo-tree", // TODO Tree - Gestiona TODOs, FIXMEs, etc
"aaron-bond.better-comments", // Better Comments - Comentarios coloreados
"redhat.vscode-xml", // Soporte XML para pom.xml
"fill-labs.dependi", // Dependi - Gestor de dependencias
"vscode-icons-team.vscode-icons", // Iconos para archivos
"github.vscode-github-actions", // GitHub Actions - Si usan CI/CD con GitHub
"ms-azuretools.vscode-docker", // Docker support
"adpyke.codesnap", // CodeSnap - Screenshots de código para docs
"editorconfig.editorconfig", // EditorConfig - Consistencia de código
"esbenp.prettier-vscode", // Prettier - Solo para JSON, YAML, MD (NO Java)
"yzhang.markdown-all-in-one", // Markdown All in One
"shd101wyy.markdown-preview-enhanced" // Markdown Preview Enhanced
],
"settings": {
"java.configuration.runtimes": [
{
"name": "JavaSE-21",
"path": "/usr/lib/jvm/msopenjdk-current",
"default": true
}
],
"java.compile.nullAnalysis.mode": "automatic",
"java.test.config": {
"vmArgs": [
"-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005"
]
},
// Lombok: habilitar procesador de anotaciones
"java.jdt.ls.lombokSupport.enabled": true,
"remote.extensionKind": {
"redhat.java": [
"workspace"
],
"vscjava.vscode-java-test": [
"workspace"
],
"vscjava.vscode-maven": [
"workspace"
],
"redhat.vscode-xml": [
"workspace"
],
"GabrielBB.vscode-lombok": [
"workspace"
],
"gruntfuggly.todo-tree": [
"workspace"
],
"ms-azuretools.vscode-docker": [
"workspace"
],
"github.vscode-github-actions": [
"workspace"
],
"editorconfig.editorconfig": [
"workspace"
],
"esbenp.prettier-vscode": [
"workspace"
],
"github.copilot": [
"ui"
],
"github.copilot-chat": [
"ui"
],
"sonarsource.sonarlint-vscode": [
"workspace"
]
},
"github.copilot.nextEditSuggestions.enabled": true,
"git.enableCommitSigning": false,
"maven.executable.preferMavenWrapper": false,
"maven.terminal.useJavaHome": true,
"maven.view": "hierarchical",
"explorer.confirmDelete": false,
"explorer.confirmDragAndDrop": false,
"editor.bracketPairColorization.enabled": true,
"editor.guides.bracketPairs": true,
"editor.guides.bracketPairsHorizontal": true,
"editor.autoClosingBrackets": "always",
"editor.linkedEditing": true,
"editor.fontLigatures": true,
"editor.suggestSelection": "first",
"editor.inlineSuggest.enabled": true,
"editor.codeLens": true,
"editor.formatOnSave": true,
"editor.rulers": [
120
],
"editor.unicodeHighlight.invisibleCharacters": false,
"editor.codeActionsOnSave": {
"source.organizeImports": "explicit"
},
"todo-tree.ripgrep.ripgrep": "/usr/bin/rg",
"terminal.integrated.defaultProfile.linux": "zsh",
"terminal.integrated.profiles.linux": {
"zsh": {
"path": "/usr/bin/zsh"
}
},
"[java]": {
"editor.defaultFormatter": "redhat.java",
"editor.formatOnSave": true,
"editor.tabSize": 4,
"editor.insertSpaces": true
},
"[xml]": {
"editor.defaultFormatter": "redhat.vscode-xml",
"editor.tabSize": 2,
"editor.formatOnSave": true
},
"[json]": {
"editor.defaultFormatter": "esbenp.prettier-vscode",
"editor.tabSize": 2
},
"files.insertFinalNewline": true,
"files.trimTrailingWhitespace": true,
"files.watcherExclude": {
"**/target/**": true,
"**/node_modules/**": true,
"**/vendor/**": true,
"**/.git/objects/**": true,
"**/.git/subtree-cache/**": true,
"**/.m2/repository/**": true,
"**/var/cache/**": true
},
"files.associations": {
"*.java": "java",
"pom.xml": "xml"
},
"extensions.autoUpdate": false,
"extensions.autoCheckUpdates": false,
"extensions.ignoreRecommendations": true,
"remote.containers.installRecommendedExtensions": false,
"settingsSync.enabled": false,
"errorLens.enabledDiagnosticLevels": [
"error",
"warning",
"info"
],
"errorLens.excludeBySource": [
"cSpell"
],
"coverage-gutters.coverageFileNames": [
"target/site/jacoco/jacoco.xml",
"jacoco.xml",
"coverage/lcov.info"
],
"coverage-gutters.showLineCoverage": true,
"coverage-gutters.showRulerCoverage": true,
"sonarlint.pathToNodeExecutable": "/usr/local/share/nvm/current/bin/node"
}
}
}
}
12 changes: 12 additions & 0 deletions .devcontainer/post-create.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
#!/usr/bin/env bash

set -euo pipefail

cd "$(dirname "${BASH_SOURCE[0]}")/.."

if mvn clean install -P no-gpg --no-transfer-progress; then
echo "Build OK"
else
echo "Build FAILED - revisa los errores"
exit 1
fi
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@ Proyecto de ejemplo mostrando el paso a paso de como usar el SDK Java de transba
- Thymeleaf
- Lombok

El contenedor de desarrollo usa Java 21 para el editor, las extensiones y el entorno de ejecución, pero el proyecto sigue compilando para Java 17 según `pom.xml`.

## Instalación

Una vez tengas clonado el repositorio, debes instalar las dependencias del proyecto. Corre los siguientes comandos en una terminal para instalar las dependencias:
Expand Down
Loading