2009-07-09 18 views
5

Hasta ahora usábamos Ant en mi compañía. Cada vez que queríamos enviar la aplicación al cliente, ejecutamos un script especial Ant que empaquetaba todo nuestro código fuente con todas las bibliotecas jar y Ant junto con un archivo por lotes simple.Creando una versión fuente independiente con Maven

Luego, el cliente podría poner los archivos en una computadora sin ningún acceso de red (y ni siquiera Ant) y ejecutar el archivo por lotes. Siempre que la computadora tenga un JDK válido, el script por lotes compilará todo el código utilizando los jars y creará un WAR/EAR que finalmente será desplegado por el cliente en el servidor de la aplicación.

Últimamente migramos a Maven 2. Pero no he encontrado la manera de hacer lo mismo. He visto el complemento de ensamblaje de Maven, pero esto solo crea distribuciones de fuente o binarias. Nuestro escenario es en realidad una mezcla, ya que contiene nuestro código fuente, pero los archivos binarios de las bibliotecas que usamos (por ejemplo, Spring, Hibernate)

Así que es posible crear con Maven un ensamblaje/versión/paquete autónomo que uno pueda correr en una computadora sin acceso a la red en absoluto ??? Eso significa que todas las bibliotecas deben estar contenidas dentro.

Bonificación adicional si Maven también está dentro, pero este no es un requisito estricto. El paquete final debe compilarse fácilmente con solo un comando (fácil de realizar para el administrador del sistema).

Estaba pensando en escribir mi propio plugin Maven pero sospecho que alguien ya se ha encontrado con esto.

Respuesta

1

Usted puede tratar de este enfoque:

  • Uso mvn hormigas: hormiga para crear generación Ant guiones de un proyecto Maven
  • Asegúrese de que la hormiga es una dependencia del proyecto
  • utilizar el conjunto para construir una hormiga
    sistema

o plan b:

  • Uso hormiga mvn: hormiga para crear ant build guiones de un proyecto Maven
  • Asegúrese de hormiga es una dependencia del proyecto
  • escribir una "clase de arranque" para llamar Ant y ejecutar la construcción
  • Uso appassembler para construir una estructura con guión y instalar el entorno de

En el plan B, que iba a escribir secuencias de comandos para configurar un árbol de origen en algún lugar de los frascos de origen envasados, y luego usar el bate appassembler acumulación o guiones sh llamar el bootstrap y build vía hormiga Tu bootstrap puede hacer todo lo que necesites hacer antes o después de la compilación.

Espero que esto ayude.

+0

¡Agradable! No sabía sobre hormiga: hormiga – kazanaki

0

Tal vez una respuesta que envié para una pregunta similar podría ser de alguna ayuda. Ver Can maven collect all the dependant jars for a project to help with application deployment? La única pieza que falta es cómo incluir el código fuente en el conjunto. Tengo que imaginar que hay alguna forma de administrar eso con el plugin de ensamblaje. Esto tampoco aborda la inclusión de Maven en la distribución.

¿Cuál fue el motivo para pasar de Ant a Maven? Parece que todo salió bien con la solución Ant, así que, ¿qué te está comprando Maven aquí?

Si solo se trata de gestión de dependencias, existen techniques for leveraging Maven from Ant que le ofrecen lo mejor de ambos mundos.

+0

Nos mudamos de Ant a Maven, principalmente porque las secuencias de comandos de Ant se estaban volviendo demasiado complicadas y en algún momento tenían rutas internas difíciles que las hacían imposibles de ejecutar en cualquier otro sistema que no fuera el servidor de compilación. Ahora también es más fácil saber qué bibliotecas (y licencias) se usan en un proyecto. – kazanaki

0

el complemento fuente le dará un archivo jar que contiene el origen de un proyecto "fuente: jar". luego puede usar el complemento de ensamblaje para combinar los archivos jar de origen de sus proyectos internos (utilizando las fuentes para hacer referencia a estos archivos jar de origen) y los archivos binarios de los proyectos externos en una sola distribución.

Sin embargo, en cuanto a convertir esto en una unidad compilable, no tengo sugerencias. sin dudas, podrías incluir maven, pero necesitarías crear un paquete que contuviera todos los complementos que necesitas para construir tu proyecto. No conozco ninguna herramienta existente para hacer eso.

+0

¡Ja! Sí, esa es la parte difícil. Cómo obtener una unidad compilable! – kazanaki

0

Esto es cómo lo hago ... en la parte de construcción del pom añadir en esta:

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-source-plugin</artifactId> 
      <executions> 
       <execution> 
        <id>attach-sources</id> 
        <phase>verify</phase> 
        <goals> 
         <goal>jar</goal> 
        </goals> 
       </execution> 
      </executions> 
     </plugin> 
    </plugins> 
</build> 

Y luego en la sección de perfiles añadir este bit en:

<profiles> 
     <profile> 
      <id>release</id> 
      <build> 
       <plugins> 
        <plugin> 
         <groupId>org.apache.maven.plugins</groupId> 
         <artifactId>maven-source-plugin</artifactId> 
         <executions> 
          <execution> 
           <goals> 
            <goal>jar</goal> 
           </goals> 
          </execution> 
         </executions> 
        </plugin> 
       </plugins> 
      </build> 
     </profile> 
    </profiles> 

Y cuando hago un maven install, construye el jar y también comprueba en un jar de la fuente.

+0

¿Cómo ayuda eso? El cliente no quiere la fuente en un archivo jar. Quieren compilar la fuente ellos mismos con un solo comando. – kazanaki

2

Desde su entorno de desarrollo, si se incluyen los siguientes virtud de crear plugins

<plugin> 
    <artifactId>maven-assembly-plugin</artifactId> 
    <configuration> 
     <descriptorRefs> 
      <descriptorRef>jar-with-dependencies</descriptorRef> 
     </descriptorRefs> 
    </configuration> 
</plugin> 

e invocar el montaje mvn: ensamblaje, se llega a yourapp-versión-con-dependencies.jar en la carpeta de destino. Este es un contenedor autosuficiente, y con una entrada MANIFEST.MF de clase principal, cualquiera puede hacer doble clic y ejecutar la aplicación.

+0

Ya he consultado el plugin de ensamblaje. El problema aquí es que el cliente quiere compilar el código de la fuente. No quieren un tarro precompilado. Pero gracias de cualquier manera. – kazanaki

Cuestiones relacionadas