Pregunta

Apache Maven es muy popular en la compilación y gestión de la dependencia a la herramienta en Java de código abierto ecosfera.Hice algunas pruebas para averiguar si puede manejar compilado Free Pascal / Delphi unidades y que resulta fácil de implementar.Así sería posible

  • la liberación de bibliotecas de código libre precompilado para Free Pascal (o Delphi) en un repositorio de Maven
  • incluir metadatos en este repositorio que contiene la información de las dependencias
  • el uso de Maven en la línea de comandos para descargar la librería de código libre desde el repositorio público, y resolver automáticamente todas las dependencias
  • los repositorios locales, que trabajan como servidores proxy, puede ser usada para caché utiliza con frecuencia los binarios
  • automática de la suma de comprobación de la generación y verificación (proporcionado por Maven) podría reducir el riesgo de descarga dañada binarios
  • código fuente e incluso archivos de documentación podría ser proporcionada con los binarios
  • binarios pueden ser suministrados con o sin información de depuración
  • integración continua en servidores como Hudson, TeamCity o CruiseControl puede ser utilizado para construir los proyectos siempre que los cambios han sido presentados a la fuente del sistema de control y notificar a los desarrolladores acerca de errores de compilación

Esta forma de gestión de la dependencia podría ser muy beneficioso para proyectos de código abierto que utilizan muchas bibliotecas de terceros con dependencias complejas.Se evitarían conflictos típicos causados por el uso de versiones incorrectas.

Para el desarrollador, el flujo de trabajo para la edición y la construcción de un proyecto podría ser reducido a un mínimo:

  • descargar el origen del proyecto de versión interno el sistema de control de
  • editar archivo de código fuente(s)
  • ejecutar mvn package para descargar automáticamente todas las bibliotecas de terceros (precompilado unidades) si todavía no están en la estación de trabajo local del repositorio
  • compilar y ejecutar

El único archivo adicional para Apache Maven que se requiere en la carpeta del proyecto es el POM.XML archivo que contiene la información del proyecto.

Editar:mientras Maven es utilizable para algunas de las tareas requeridas, la implementación de una solución como Maven en el nativo de Free Pascal tendría algunas ventajas:no Java SDK requiere, soporte para todas las plataformas de desarrollo en donde la libertad de Pascal está disponible, mantenimiento y desarrollo de plugins en Pascal.

El uso de un Maven como herramienta no sería útil para proyectos de código abierto sólo los proyectos comerciales podría acceso y uso de los artefactos en público repositorios de Maven en la misma forma.

Maven características se enumeran en http://maven.apache.org/maven-features.html


Actualización:

un caso de uso podría ser la construcción de Lázaro, donde Maven iba a descargar todas las bibliotecas y de invocar el compilador con la necesaria construcción de camino argumentos.Los cambios en las dependencias de los niveles inferiores se propagarán automáticamente a los padres a construir.

Posibles beneficios:

  • menos tiempo necesario para establecer un nuevo trabajo de la estación, no hay manual de instalación de bibliotecas de terceros requeridos
  • menos errores causados por el mal de la biblioteca versiones, la detección de la versión los conflictos (por ejemplo, si dos las bibliotecas dependen de diferentes versiones de un tercio de la biblioteca)
  • los artefactos que se crean inhouse puede ser agregado a la local de maven y el repositorio compartido entre los desarrolladores y proyecto, la central almacenamiento de todos los artefactos con los metadatos
  • construye son reproducibles, sólo por utilizando la misma fuente y proyecto archivo de metadatos (pom.xml)
  • puede reducir el tiempo de desarrollo y proyecto de ampliación de la estabilidad

Actualización #2:FPMake

el FPMake el sistema de generación de Free Pascal parece ser una herramienta con mucho potencial, en muchos de los detalles es muy similar a la de Maven:

  • FPMake es un pascal basado en el sistema de generación desarrollado y distribuido con FPC
  • FPMake estandariza el edificio por definir algunos límites como directorios estándar
  • el comando fppkg <packagename> va a buscar en una base de datos para el paquete, extraer y, a continuación, compile fpmake.pp y ejecutarlo
  • tiene estándar de construir objetivos (limpiar, construir, instalar, ...)
  • se puede crear un 'manifiesto' de archivo adecuado para la importación en un repositorio (como mvn deploy o mvn install), el manifiesto es un archivo XML que se ve muy similar a la de un pom.xml en Maven:

FPMake archivo de manifiesto:

      <packages>
        <package name="my-package">
          <version major="0" minor="7" micro="6" build="1"/>
          <filename>my-package-0.7.6-1.zip</filename>
          <author>my name</author>
          <license>GPL</license>
          <homepageurl>http://www.freepascal.org/</homepageurl>
          <email>myname@freepascal.org</email>
          <description>this is the package description</description>
          <dependencies>
            <dependency>
              <package packagename="rtl"/>
            </dependency>
          </dependencies>
        </package>    
      </packages>

No hay solución correcta

Otros consejos

Freepascal ha estado trabajando en un paquete de sistema de su propio en una cruz entre el apt-get y ports de freebsd estilo.(fuente de descarga/build/instalar automáticamente), llamado fppkg.Sin embargo el trabajo se ha estancado.Las personas que invierten tiempo son el cuello de botella, no a las personas que desean elegir herramientas.

Tan lejos como Maven va, no me gusta auxilary herramientas que necesita de la instalación de enormes externo tiempos de ejecución.Podría estar bien para un grande de los principales de la aplicación (como Open Office), pero no para un util.

Yo también prefiero una herramienta que está diseñada para el FPC de la realidad y de flujo de trabajo.Herramientas de documentación, herramientas de construcción, descargar sistemas, testsuite sistemas ya están todos allí, que sólo hay una persona que dedica mucho tiempo a ella para hacer que sucede.

Algunos problemas típicos que cuando la introducción de una nueva tecnología en un proyecto como FPC, y por qué tiene una tendencia a hacer sus propias herramientas:

  • necesidad de formar a 20+ committers en empleos a tiempo parcial.
  • El único lenguaje de programación COMÚN puede suponer que es de Free Pascal.Incluso Delphi funcionamiento interno no puede ser tomado para concedido a ser conocido (muchos de los "committers" llegó directamente a la FPC, o incluso a través de TP o un Mac Pascal)
    • Obviamente que hace algo con los complementos en un idioma diferente molesto.
  • Script de Bash es un cercano segundo lugar.(g)hacer el tercero, pero ya de menor magnitud.
  • Todos los servidores *nix-como (FreeBSD, mac OS X, Linux), pero no todas ejecutar Apache.(por ejemplo,mi FreeBSD espejo se ejecuta XSHTTPD)
  • alguien más informado que debe ser dedicado mantenedor por un largo tiempo.Arreglar los problemas de actualización/ hacer migraciones, etc.Preferiblemente más de uno, por razones obvias.
  • un gran dolor de cabeza son las distribuciones de Linux (y FreeBSD en un menor grado), la mayoría de los mantenedores de *nix paquetes no son capaces de algo más que "./configure;make;make install", y debe ser spoonfed con una edificabilidad cerca de repositorio y auxilary archivos.
    • En la distribución de envases de FPC/Lázaro siempre ha sido importante, y sigue aumentando
    • Todas las distribuciones tienen sus propias reglas acerca de los metadatos, depedancies, y cómo las fuentes deben ser publicados.Particularmente Debian/Ubuntu es muy lenta y burocrática.
    • La mayoría de los que no gusta a terceros auto-instaladores en la parte superior de sus sistemas (ya que no pasa por su dependencia de control)

Todo esto lleva a la práctica efectiva que las propias herramientas en Pascal con un mínimo de secuencias de comandos funcionan mejor.Algunas herramientas que se utilizan:

  • Gmake se utiliza principalmente para parametrizar el proceso de construcción por nivel de directorio, un sucesor, fpcmake (no es realmente un derivado a pesar del nombre) ha comenzado, pero la migración no se ha completado.
  • De látex y un látex de conversión de html (tex4ht, pero debian utiliza hevea) se utilizan en la documentación de la construcción (la no documentación de la biblioteca)
  • El sitio de la comunidad (netscape servidor de la comunidad que utiliza TCL de secuencias de comandos, un fuerte complejo de servidor de la aplicación) ha sido un problema desde que comenzó, pero especialmente últimamente desde el mantenedor se convirtió en menos activo.
  • Mantis ha sido un problema (especialmente el correo electrónico del módulo de accidente o cojo el servidor debido a que el volumen), pero ha sido batida en forma durante las sucesivas actualizaciones y duro trabajo de varios lázaro devels.Actualmente, es una buena bestia de carga.
  • lazarus.freepascal.org foro PHPBB OTOH es relativamente indoloro, ya que una gran cantidad de gente joven sabe cómo lidiar con ella.
  • Lo mismo va para subversions (aunque el más avanzado de la escala de necesidades de adaptación de algunos, no todo el mundo se sumerge en los entresijos de la mergetracking)

Si alguien realmente serio acerca de Maven, por lo general le preguntaba:

  • a CRITICIALLY investigar el uso para el proyecto.En una forma muy concreta, con el horario y las estimaciones de tiempo.Aves-el nivel de los ojos "todo es posible" panoramas se essentialy sin valor.
  • Reflexionar sobre los cambios futuros de las tecnologías utilizadas.Cada tecnología es finalmente reemplazado, incluso de la casa, en los 18 años+ proyectos.Una nueva tecnología no debe hacer migraciones de otras infraestructuras componentes duro o involucrados.La nueva tecnología para poner fin a todas las nuevas tecnologías no existe.
  • Hacer un plan de migración.La migración es a menudo subestimado y subestimado.
  • Y al final, siempre existe la 1000000 cuestión del Euro, que va a hacer el mantenimiento diario?

Tenga en cuenta que en una empresa que acaba de patear la persona responsable de la aplicación de servidor.Pero en un ambiente informal esta es la forma más difícil, especialmente a largo plazo, ya que la vida de las personas, de las ocupaciones y el tiempo invertido en el proyecto variar.

Suena como un interesante plan, pero el Delphi de la comunidad (y de FPC más aún, me imagino!) los valores de las bibliotecas como fuente mucho más de lo que precompilado bibliotecas.El consenso general es que toda persona que utiliza un binario biblioteca sólo es un tonto, por dos razones:No se puede corregir cualquier error que encuentre en ella, y el compilador de cambios va a romper la compatibilidad.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top