Saltar al contenido principal
Version: 15.x

Instrucciones de compilación

Este documento describe cómo compilar Universal Media Server a partir de los archivos fuente.

Nota importante: Los lanzamientos de precompilaciones de Universal Media Server se pueden descargar desde: http://www.universalmediaserver.com/ por lo que NO necesita ejecutar estos pasos como usuario general.

Se requieren los siguientes paquetes de software:

  • Java JDK 17 (el JRE no es suficiente)
  • Git
  • Maven
  • MediaInfo

Lea la sección Instrucciones completas para obtener una explicación completa de cómo instalar todo el software necesario y cómo compilar UMS para cada sistema operativo.

Instrucciones cortas

Si se han instalado todos los paquetes de software requeridos, los siguientes comandos descargarán el código fuente más reciente y la compilación UMS:

git clone https://github.com/UniversalMediaServer/UniversalMediaServer.git
cd universalmediaserver
mvn package -P PACKAGENAME

Donde PACKAGENAME es el nombre del sistema operativo objetivo: windows, macos, macos-arm, macos-pre1015 o linux-*, donde * es la arquitectura; una de: x86, x86_64, arm64, armel o armhf.

El resultado se compilará en el directorio "target":

  • Windows: UMS-setup.exe
  • Linux: UMS-linux-generic-x.xx.x.tar.gz
  • macOS: UMS-setup-macosx-x.xx.x.tar.gz

Instrucciones completas

Primero se debe instalar todo el software requerido:

1. Descargar e instala Java JDK 17.

Consulte https://bell-sw.com/pages/downloads/#/java-17-lts

2. Descargar e instala Git

Consulte https://git-scm.com/

3. Descargar y extraer Maven

Consulte http://maven.apache.org/

4. Establecer variables de entorno

Windows

Crea nuevas variables o agrega el valor si la variable ya existe:

  • Nivel: Sistema, variable: JAVA_HOME, valor: JDK install location
  • Nivel: Usuario, variable: M2_HOME, valor: Maven extract location
  • Nivel: Usuario, variable: M2, valor: %M2_HOME%\bin
  • Nivel: Usuario, variable: PATH, valor %M2%

Linux

No hacer nada.

macOS

No hacer nada.

5. Descarga el código fuente UMS

git clone https://github.com/UniversalMediaServer/UniversalMediaServer.git
cd universalmediaserver

6. Actualizar a la última versión (opcional)

git pull

7. Compilar la última versión de UMS

mvn package -P PACKAGENAME

Donde PACKAGENAME es el nombre del sistema operativo objetivo: windows, macos, macos-arm, macos-pre1015 o linux-*, donde * es la arquitectura; una de: x86, x86_64, arm64, armel, o armhf

También puedes especificar una bandera opcional si quieres omitir la descarga de binarios, lo que puede ser útil para acelerar el tiempo de compilación, particularmente en Windows y Linux:

mvn package -P PACKAGENAME -Doffline=true

Los binarios resultantes se compilarán en el directorio "target":

  • Windows: UMS-setup.exe
  • Linux: UMS-linux-generic-x.xx.x.tar.gz
  • macOS: ums-x.xx.x-SNAPSHOT-distribution/Universal Media Server.app

Compilaciones automáticas

Estos dos últimos comandos se pueden automatizar fácilmente usando un script p. ej.:

Windows

rem build-UMS.bat
start /D universalmediaserver /wait /b git pull
start /D universalmediaserver /wait /b mvn package

Linux, macOS &c.

#!/bin/sh
# build-UMS.sh
cd universalmediaserver
git pull
mvn package

Empaquetado y compilación cruzada

Esta sección explica cómo es posible compilar y empaquetar para un sistema mientras se está en otro.

Compilación de binarios de Windows

Los instaladores de Windows (UMS-setup.exe) y el ejecutable de Windows (UMS.exe) se pueden compilar en plataformas que no sean Windows.

Primero que todo, necesitarás tener instalado el binario makensis. En Debian/Ubuntu, esto se puede hacer con:

sudo apt-get install nsis

Después es necesario establecer la ruta absoluta del entorno NSISDIR con el directorio nsis. Esto se puede establecer por comando:

NSISDIR=$PWD/src/main/external-resources/third-party/nsis mvn ...

O también:

  • Temporalmente en el shell actual:
    export NSISDIR=$PWD/src/main/external-resources/third-party/nsis
    mvn ...
  • O permanentemente:
    # estos dos comandos solo deben ejecutarse una vez
    echo "export NSISDIR=$PWD/src/main/external-resources/third-party/nsis" >> ~/.bashrc
    source ~/.bashrc

    mvn...

En beneficio de la brevedad, los siguientes ejemplos asumen que ya se ha establecido.

Ahora se puede compilar el instalador de Windows con uno de los siguientes comandos:

En Linux y macOS

mvn package -P system-makensis,windows

Compilando un paquete tar de Linux

En Windows y macOS

mvn package -P linux-*

donde * es uno de: x86, x86_64, arm64, armel o armhf

Compilando la imagen de disco de macOS

En Windows y Linux

mvn package -P macos
hdiutil create -volname "Universal Media Server" -srcfolder target/ums-*-distribution UMS.dmg

Compilando el instalador del asistente de macOS

  1. Compilar UMS
  2. Instalar http://s.sudre.free.fr/Software/Packages/about.html
  3. Establezca una variable que almacene la ruta del directorio del archivo de distribución de compilación, p. ej.:
export UMS_DIST_FOLDER="/Users/dev/ums/target/ums-7.3.1-SNAPSHOT-distribution/Universal Media Server.app"
export UMS_LOGO_FILE="/Users/dev/ums/src/main/external-resources/third-party/nsis/Contrib/Graphics/Wizard/win.png"
  1. Reemplace la ruta deseada dentro del archivo .pkgproj
sed -i '' "s#UMS_DIST_FOLDER#$UMS_DIST_FOLDER#g" src/main/assembly/osx-installer.pkgproj
sed -i '' "s#UMS_LOGO_FILE#$UMS_LOGO_FILE#g" src/main/assembly/osx-installer.pkgproj
  1. Compilar instalador .pkg. Esto se generará en /target/Universal Media Server.pkg.
/usr/local/bin/packagesbuild src/main/assembly/osx-installer.pkgproj

Compilaciones rápidas

Disponemos de scripts de compilación rápidos que se recomiendan durante el desarrollo para una iteración rápida. Los scripts compilarán el código Java, lo colocarán en el directorio de instalación predeterminado, y ejecutarán el programa, lo que cerrará cualquier instancia existente de UMS.

Debería funcionar en Windows y macOS de 64 bits. Se puede extender fácilmente para incluir otros si se desea.

mvn verify -P quickrun-* -DskipTests

Donde * es macOS o windows