2010-04-06 19 views
6

Vorrei aggiungere un ulteriore percorso di classe al plugin exec-maven.
Oltre al% classpath, vorrei aggiungere un percorso aggiuntivo a una directory contenente risorse (/ Users/kornp/resources). Attualmente, il mio pom assomiglia a questo:Aggiungi percorso aggiuntivo per exec-maven-plug

<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> 

Come dovrei configurare questo?

risposta

2

Hai provato a utilizzare il parametro commandlineArgs (come indicato nello exec example)?

+0

Sì, l'ho fatto, ma poi il % classpath non funziona più. –

+0

@Kornp Arf, mi dispiace quindi, non è stata la mia comprensione dell'esempio. Non so se c'è un altro modo però. L'impostazione del classpath è un'opzione manuale? –

+0

Sì, è un'opzione, ma ci sono un sacco di file jar coinvolti. Quindi, sarà un lavoro noioso. Grazie per il suggerimento però. –

0

Okay,

ho adattato il plugin in modo che gli argomenti della riga di comando possono essere specificati (incluso il parametro% classpath)

+0

Se ti interessa copiare il risultato nella risposta potresti eventualmente ottenere i 3 voti per il badge del discente. – Martin

+0

Martin, cosa intendi con copiare il risultato nella risposta? –

+0

@KornP, dov'è il tuo plugin adattato? – Gili

1

Anche se sembra meno elegante, ma il passaggio a antrun plugin dovrebbe funziona:

<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> 

Tuttavia, non sembra una buona idea avere le risorse extra messe da qualche parte al di fuori del progetto, come suggerito dal vostro op. Dovresti prendere in considerazione l'idea di metterlo come parte del progetto, o renderlo un jar e distribuirlo a Maven repo in modo da poterlo inserire come dipendenza da plugin.

5

Ho alcuni file di configurazione in una directory specifica al di fuori della mia cartella di origine. Così ho definito le risorse aggiuntive al mio file pom.xml.

mia struttura di directory del campione è:

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

mia 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> 

Ora noi possiamo eseguire il programma:

mvn clean compile exec:java 
+2

ho un problema nel farlo funzionare nel caso in cui la mia classe principale provenga da una dipendenza e non dal progetto stesso. – kutschkem

+0

Grazie mille! Questo davvero aiuto! – Yuanhang

Problemi correlati