2010-08-06 16 views
5

in meinem pom Ich habe das exec-maven-Plugin hinzugefügt, um eine Java-Klasse aufzurufen, die eine Datei generieren wird. Diese Klasse benötigt einige Parameter, die an die Hauptmethode übergeben werden müssen. Eine davon ist der Speicherort einer Eingabedatei (außerhalb des Projekts). Bis jetzt habe ich einen relativen Pfad für diese wurde unter Verwendung der gut arbeitet:Maven - pass Argument in exec-maven-plugin verwenden

 <plugin> 
      <groupId>org.codehaus.mojo</groupId> 
      <artifactId>exec-maven-plugin</artifactId> 
      <executions> 
       <execution> 
        <phase>test</phase> 
        <goals> 
         <goal>java</goal> 
        </goals> 
       </execution> 
      </executions> 
      <configuration> 
       <mainClass>com.laco.projectmaster.util.LanguageGenerator</mainClass> 
       <arguments> 
        <argument>../PM-Config/dev/PMLanguage.xls</argument> 
        <argument>PM4.0</argument> 
        <argument>${project.build.outputDirectory}/com/laco/projectmaster/props/resources</argument> 
        <argument>ProjectMaster</argument> 
        <argument>Created during maven build (POM Version: ${pom.version})</argument> 
       </arguments> 
      </configuration> 
     </plugin> 

Jetzt fange ich hudson zu verwenden, um/Paket zu installieren und die Kriege einzusetzen und ich kann diesen relativen Pfad nicht mehr verwenden. Einfach Ich dachte, ich gehe einfach den Speicherort der Datei eingegeben wird, wenn Maven wie Aufruf:

mvn sauber Paket -Dlangdir = C:/somedir

und dann die pom wie ändern:

<argument>${langdir}/PMLanguage.xls</argument> 

Dieser Parameter wird hier jedoch einfach ignoriert. Der Pfad, den die Hauptklasse als Argument erhält, wird null/PMLanguage.xls. Der Parameter selbst ist in maven verfügbar, ich habe es mit einem Echo im Antrun Plugin erfolgreich getestet. Der richtige Pfad wurde wiedergegeben.

Sind die Parameter, die Sie an Maven übergeben, dann standardmäßig nicht verfügbar, egal wo Sie sie im Pom referenzieren?

Dank für jede Hilfe,
Stijn

Antwort

13

ich das Problem nicht reproduzieren kann. Früher habe ich die folgende Testklasse:

package com.stackoverflow.q3421918; 

public class Hello 
{ 
    public static void main(String[] args) 
    { 
     System.out.println(args[0] + " " + args[1]); 
    } 
} 

und die folgenden pom.xml:

<project> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>com.stackoverflow.q3421918</groupId> 
    <artifactId>Q3421918</artifactId> 
    <version>1.0-SNAPSHOT</version> 

    <!-- this was a test for a workaround --> 
    <properties> 
    <myprop>${langdir}</myprop> 
    </properties> 

    <dependencies> 
    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>3.8.1</version> 
     <scope>test</scope> 
    </dependency> 
    </dependencies> 
    <build> 
    <plugins> 
     <plugin> 
     <groupId>org.codehaus.mojo</groupId> 
     <artifactId>exec-maven-plugin</artifactId> 
     <version>1.2</version> 
     <executions> 
      <execution> 
      <phase>test</phase> 
      <goals> 
       <goal>java</goal> 
      </goals> 
      </execution> 
     </executions> 
     <configuration> 
      <mainClass>com.stackoverflow.q3421918.Hello</mainClass> 
      <arguments> 
      <argument>${myprop}</argument> 
      <argument>${langdir}</argument> 
      </arguments> 
     </configuration> 
     </plugin> 
    </plugins> 
    </build> 
</project> 

Und hier ist die Ausgabe erhalte ich:

 
$ mvn clean package -Dlangdir=C:/somedir 
[INFO] Scanning for projects... 
[INFO] ------------------------------------------------------------------------ 
[INFO] Building Q3421918 
[INFO] task-segment: [clean, package] 
[INFO] ------------------------------------------------------------------------ 
... 
[INFO] Preparing exec:java 
[WARNING] Removing: java from forked lifecycle, to prevent recursive invocation. 
[INFO] No goals needed for project - skipping 
[INFO] [exec:java {execution: default}] 
Hello c:/somedir c:/somedir 
[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD SUCCESSFUL 
[INFO] ------------------------------------------------------------------------ 
... 

Getestet mit Maven 2.2.1.

+1

Pascal, es tut mir sehr leid, aber es sieht so aus, als hätte ich deine kostbare Zeit verschwendet. Ich kann es nicht erklären, aber wenn ich die Verpackung jetzt neu starte, funktioniert es gut. Ich habe nichts dazwischen geändert, daher verstehe ich nicht, warum es gestern nicht funktionierte. Tut mir leid, aber danke. –