Pregunta

No lo entiendo. He configurado mi POM.xml para usar el complemento MAVEN EXEC, por lo que puedo ejecutar algunas de las clases en mi proyecto con el Classpath correcto, y define y -Javaagent. Así que de una concha con las clases construidas en ./target/classes, etc. Puedo ejecutar los métodos principales () usando

mvn exec:java -Dexec:mainClass=classWithAMainMethod

todo bien hasta ahora.

Ahora quiero enviar mi proyecto (un artefacto de jar) y todavía quiero poder usar la configuración que he puesto en el POM.xml para ejecutar las clases con los argumentos correctos, etc., ¿cómo lo hago? ¿eso? ¿Hay alguna forma de permanecer

mvn -artifactJar=MyArtifact.jar exec:java -Dexec:mainClass=classWithAMainMethod

Cuando todo lo que tengo es MyArtifact.jar (o un repositorio de Maven con MyArtifact.jar en ella)?

He intentado lo siguiente:

  • Obtenga el frasco con la dependencia: Obtenga la meta y descomprima. No puedo hacer nada con eso Como el Pom.xml parece terminar en meta-inf / maven en el frasco de artefacto. ¿Hay alguna forma de usarlo?

  • Creación de un POM muñeco donde quiero ejecutar mi proyecto con una sola dependencia de mis proyectos Artefact. Luego, puedo usar EXEC: Java para ejecutar las clases principales, pero no usa la configuración de mis proyectos POM.

    gracias.

¿Fue útil?

Solución 2

El plugin de Appassembler funcionó bastante bien para mí.Reemplace la configuración del complemento EXEC en el POM de mi proyecto con algo así en la sección de compilación:

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>appassembler-maven-plugin</artifactId>
    <version>1.2.2</version>
    <configuration>
        <repositoryLayout>flat</repositoryLayout>
        <repositoryName>lib</repositoryName>
        <extraJvmArguments>
            -Djava.rmi.server.hostname=localhost
            -javaagent:${spring.javaagent.jar}
        </extraJvmArguments>
        <programs>
            <program>
                <name>foo1</name>
                <mainClass>net.foor.FooMain</mainClass>
            </program>
               ...
    </configuration>
</plugin>

En Eclipse He creado un lanzador de herramientas externas para ejecutar los scripts resultantes de Target / Appassembler / Bin

En la máquina que quería implementar en (asumiendo el acceso al repositorio de Maven interno donde se hayan instalado / despliegue mis dependencias del artefacto +):

  • primer uso wget o MVN Dependency: Obtenga para obtener una copia de mi frasco de artefacto.
  • extrae el pom. unzip -j artifact.jar * /pom.xml *
  • Ejecutar MVN Appassembler: ensamblaje -densembledirectory=.
  • Mover el artifact.jar en el directorio ./lib
  • Establecer permisos de ejecución en scripts de shell generados en ./bin

Otros consejos

¿Ha intentado usar algo como onejar ?

que suena como lo que estás buscando.

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