2010-04-06 23 views
6

Me gustaría agregar una ruta de clase adicional al complemento exec-maven.
Además del% classpath, me gustaría agregar una ruta adicional a un directorio que contiene recursos (/ Users/kornp/resources). Actualmente, mi pom se ve así:Agregar ruta de acceso adicional a exec-maven-plugin

<plugin> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>exec-maven-plugin</artifactId> 
    <version>1.1.1</version> 
    <configuration> 
    <executable>java</executable> 
    <classpathScope>runtime</classpathScope> 
    <arguments> 
     <argument>%classpath:/Users/kornp/resources</argument> 
     <argument>org.drrabbit.maventest.App</argument> 
    </arguments> 
    </configuration> 
</plugin> 

¿Cómo debo configurar esto?

Respuesta

2

¿Intentó utilizar el parámetro commandlineArgs (como se menciona en el exec example)?

+0

Sí, lo hice, pero entonces el % classpath ya no funciona. –

+0

@Kornp Arf, perdón entonces, ese no fue mi entendimiento del ejemplo. No sé si hay otra manera. ¿Establecer manualmente el classpath es una opción? –

+0

Sí, es una opción, pero hay bastantes archivos jar involucrados. Por lo tanto, será un trabajo tedioso. Gracias por la sugerencia, sin embargo. –

0

bien,

Adapté el plugin para que los argumentos de línea de comandos se pueden especificar por completo (incluyendo el parámetro% ruta de clase)

+0

Si le interesa copiar el resultado en la respuesta, eventualmente podría obtener los 3 votos para la credencial de autoaprendizaje. – Martin

+0

Martin, ¿qué quieres decir con copiar el resultado en la respuesta? –

+0

@KornP, ¿dónde está tu complemento adaptado? – Gili

1

Aunque parece menos elegante, pero el cambio a antRun extensión debería funciona:

<plugin> 
    <artifactId>maven-antrun-plugin</artifactId> 
    <executions> 
     <execution> 
      <id>runSomething</id> 
      <phase>package</phase> 
      <goals> 
       <goal>run</goal> 
      </goals> 
      <configuration> 
       <target> 
        <property name="runtime_classpath" refid="maven.runtime.classpath"/> 

        <java classname="org.drrabbit.maventest.App" 
          fork="true" 
          failonerror="true" 
          maxmemory="512m"> 

         <classpath> 
          <pathelement path="${project.build.directory}/some/extra/resources" /> 
          <pathelement path="${runtime_classpath}" /> 
         </classpath> 
        </java> 
       </target> 
      </configuration> 
     </execution> 
    </executions> 
</plugin> 

Sin embargo, no parece una buena idea tener los recursos adicionales colocados en algún lugar fuera del proyecto, como lo sugirió su op. Debes considerar poner eso como parte del proyecto, o hacerlo un jar y desplegar para maven repo para que puedas ponerlo como una dependencia de plugin.

5

Tengo algunos archivos de configuración en un directorio específico fuera de mi carpeta de origen. Así que definí recursos adicionales en mi archivo pom.xml.

mi estructura de directorios de la muestra es:

+ src 
+ conf 
    - app.properties 
    - log4j.xml 
- pom.xml 

mi pom.xml:

<build> 
    <resources> 
    <resource> 
     <directory>conf</directory> 
    </resource> 
    <resource> 
     <directory>src/main/resources</directory> 
    </resource> 
    </resources> 

    <plugins> 
    <plugin> 
     <groupId>org.codehaus.mojo</groupId> 
     <artifactId>exec-maven-plugin</artifactId> 
     <version>1.2.1</version> 
     <configuration> 
     <executable>java</executable> 
     <mainClass>com.mycompany.MyMainClass</mainClass> 
     </configuration> 
    </plugin> 
    </plugins> 
<build> 

Ahora puede ejecutar el programa:

mvn clean compile exec:java 
+2

Tengo un problema para hacer que esto funcione en el caso en que mi clase principal proviene de una dependencia y no del proyecto en sí. – kutschkem

+0

¡Muchas gracias! ¡Esto realmente ayuda! – Yuanhang

Cuestiones relacionadas