public code v2

This commit is contained in:
Francisco Jesús Martínez Mimbrera
2026-05-23 00:39:14 +02:00
parent 759a8968a2
commit 40dda44902
4 changed files with 141 additions and 75 deletions
+43 -57
View File
@@ -23,35 +23,61 @@ Flintstones permite definir un problema de decisión (alternativas, criterios, e
## Requisitos ## Requisitos
| Herramienta | Versión mínima | Notas | El único requisito es tener **Docker Desktop** instalado. Todo lo demás (Java 11, Maven, GTK…) corre dentro del contenedor.
|---|---|---|
| Docker | 20+ | Para compilar sin instalar nada más |
| Java | 11 | Solo para ejecutar el producto compilado |
| Maven | 3.8+ | Solo si compilas fuera de Docker |
> **Sin Docker:** necesitas JDK 11 y Maven 3.8+. | Herramienta | Versión mínima | Dónde conseguirla |
> **Con Docker:** solo Docker. El contenedor lleva Maven 3.8.6 y JDK 11. |---|---|---|
| Docker Desktop | 20+ | [docker.com/products/docker-desktop](https://www.docker.com/products/docker-desktop/) |
> En Windows, Docker Desktop debe estar en modo **Linux containers** (es el modo por defecto).
--- ---
## Compilar ## Compilar y ejecutar
### Con Docker (recomendado) ### macOS / Linux
```bash ```bash
./build.sh ./run.sh
``` ```
O directamente: ### Windows
```bat
run.bat
```
Eso es todo. El script gestiona automáticamente cada situación:
| Situación | Qué hace el script |
|---|---|
| Primera vez | Compila el proyecto + construye la imagen Docker + arranca + abre el navegador |
| Ya compilado, imagen ya construida | Solo arranca el contenedor + abre el navegador |
| Ya está corriendo | Abre el navegador directamente |
La primera compilación descarga dependencias de Eclipse (~1-2 GB) y tarda unos minutos. Las siguientes arrancan en segundos.
La aplicación aparece en el navegador en **`http://localhost:6080`** — no hace falta instalar ningún cliente VNC ni ningún visor especial.
Para parar la aplicación:
```bash ```bash
docker compose run --rm build docker compose stop run # macOS / Linux
```
```bat
docker compose stop run :: Windows
``` ```
La primera vez descarga dependencias de Eclipse (~1-2 GB). Las siguientes compilaciones usan caché y son mucho más rápidas. ### Solo compilar (sin ejecutar)
Los productos quedan en: ```bash
./build.sh # macOS / Linux
```
```bat
build.bat :: Windows
```
Los productos compilados quedan en:
``` ```
releng/flintstones.application.product/target/products/ releng/flintstones.application.product/target/products/
RCP product-linux.gtk.x86_64.zip RCP product-linux.gtk.x86_64.zip
@@ -59,7 +85,9 @@ releng/flintstones.application.product/target/products/
RCP product-win32.win32.x86_64.zip RCP product-win32.win32.x86_64.zip
``` ```
### Sin Docker ### Sin Docker (avanzado)
Requiere JDK 11 y Maven 3.8+ instalados localmente:
```bash ```bash
mvn clean install -Dmaven.test.skip=true mvn clean install -Dmaven.test.skip=true
@@ -67,48 +95,6 @@ mvn clean install -Dmaven.test.skip=true
--- ---
## Ejecutar
### macOS
```bash
cd releng/flintstones.application.product/target/products/
unzip "RCP product-macosx.cocoa.x86_64.zip"
open Eclipse.app
```
> El ejecutable se llama `Eclipse.app` por herencia del launcher de Eclipse RCP.
> En Apple Silicon (M1/M2/M3) funciona vía Rosetta 2 (arquitectura x86_64).
### Linux
```bash
cd releng/flintstones.application.product/target/products/
unzip "RCP product-linux.gtk.x86_64.zip"
./"RCP product"/linux/gtk/x86_64/flinstones
```
Requiere GTK3:
```bash
sudo apt install libgtk-3-0 # Debian/Ubuntu
```
### Linux con VNC (desde Docker)
Levanta el contenedor con display virtual accesible en `localhost:5900`:
```bash
docker compose run --rm run-vnc
```
Conéctate con cualquier cliente VNC (RealVNC, TigerVNC, etc.) a `localhost:5900`.
### Windows
Descomprime `RCP product-win32.win32.x86_64.zip` y ejecuta `flinstones.exe`.
---
## Métodos disponibles ## Métodos disponibles
### Métodos clásicos / Ranking ### Métodos clásicos / Ranking
+15 -7
View File
@@ -1,10 +1,18 @@
:: Hacer los SET @echo off
:: Compila Flintstones en Docker (no hace falta tener Maven ni Java 11 local).
setlocal
:: Actualizar POM set APP_DIR=releng\flintstones.application.product\target\products
:: Build echo =^> Compilando Flintstones con Maven 3.8 + JDK 11 en Docker...
mvn clean install docker compose run --rm build
if errorlevel 1 (
echo ERROR: la compilacion ha fallado.
exit /b 1
)
pause echo.
pause echo =^> Build completado. Productos en %APP_DIR%\
pause dir /b "%APP_DIR%\*.zip" 2>nul
endlocal
+58
View File
@@ -0,0 +1,58 @@
@echo off
:: Levanta Flintstones en Docker y abre el navegador automaticamente.
setlocal
set APP_DIR=releng\flintstones.application.product\target\products\RCP product\linux\gtk\x86_64
set IMAGE=flintstones-develop-run
set URL=http://localhost:6080/vnc.html?autoconnect=true^&resize=scale
:: 1. Compilar si no existe el binario
if not exist "%APP_DIR%\eclipse" (
echo =^> Proyecto no compilado. Compilando (esto tarda la primera vez)...
docker compose run --rm build
if errorlevel 1 goto error
)
:: 2. Construir imagen de ejecucion si no existe
docker image inspect %IMAGE% >nul 2>&1
if errorlevel 1 (
echo =^> Construyendo imagen Docker de ejecucion (solo la primera vez)...
docker compose build run
if errorlevel 1 goto error
)
:: 3. Arrancar el contenedor
docker compose ps run | findstr "running" >nul 2>&1
if errorlevel 1 (
echo =^> Arrancando Flintstones...
docker compose up -d run
if errorlevel 1 goto error
) else (
echo =^> Flintstones ya esta en marcha.
)
:: 4. Esperar a que noVNC este listo
echo =^> Esperando conexion...
:wait
curl -s http://localhost:6080 >nul 2>&1
if errorlevel 1 (
timeout /t 1 /nobreak >nul
goto wait
)
:: 5. Abrir el navegador
echo =^> Abriendo %URL%
start "" "%URL%"
echo.
echo Para parar: docker compose stop run
echo Para los logs: docker compose logs -f run
goto end
:error
echo.
echo ERROR: algo ha fallado. Revisa los logs con: docker compose logs run
exit /b 1
:end
endlocal
+25 -11
View File
@@ -1,32 +1,46 @@
#!/bin/bash #!/bin/bash
# Levanta Flintstones en Docker y abre el navegador automáticamente. # Levanta Flintstones en Docker y abre el navegador automáticamente.
# Requiere que el proyecto esté compilado (./build.sh).
set -e set -e
APP_DIR="releng/flintstones.application.product/target/products/RCP product/linux/gtk/x86_64" APP_DIR="releng/flintstones.application.product/target/products/RCP product/linux/gtk/x86_64"
IMAGE="flintstones-develop-run"
URL="http://localhost:6080/vnc.html?autoconnect=true&resize=scale"
# 1. Compilar el proyecto si no existe el binario
if [ ! -f "$APP_DIR/eclipse" ]; then if [ ! -f "$APP_DIR/eclipse" ]; then
echo "==> El proyecto no está compilado. Compilando primero..." echo "==> Proyecto no compilado. Compilando (esto tarda la primera vez)..."
docker compose run --rm build docker compose run --rm build
fi fi
echo "==> Construyendo imagen de ejecución..." # 2. Construir la imagen de ejecución si no existe
docker compose build run if ! docker image inspect "$IMAGE" > /dev/null 2>&1; then
echo "==> Construyendo imagen Docker de ejecución (solo la primera vez)..."
docker compose build run
fi
echo "==> Arrancando Flintstones..." # 3. Arrancar el contenedor (o reutilizarlo si ya corre)
docker compose up -d run if docker compose ps run | grep -q "running"; then
echo "==> Flintstones ya está en marcha."
else
echo "==> Arrancando Flintstones..."
docker compose up -d run
fi
echo "==> Esperando a que el servidor esté listo..." # 4. Esperar a que noVNC esté listo
echo -n "==> Esperando conexión"
for i in $(seq 1 30); do for i in $(seq 1 30); do
if curl -s http://localhost:6080 > /dev/null 2>&1; then if curl -s http://localhost:6080 > /dev/null 2>&1; then
echo " lista."
break break
fi fi
echo -n "."
sleep 1 sleep 1
done done
echo "==> Abriendo navegador en http://localhost:6080/vnc.html?autoconnect=true" # 5. Abrir el navegador
open "http://localhost:6080/vnc.html?autoconnect=true" echo "==> Abriendo $URL"
open "$URL"
echo "" echo ""
echo "Para parar la aplicación: docker compose stop run" echo " Para parar: docker compose stop run"
echo "Para ver los logs: docker compose logs -f run" echo " Para los logs: docker compose logs -f run"