2013-02-08 2 views
10

J'ai une question similaire à: this previous questionSpécifiez l'argument javaagent avec Maven plug-in exec

Je convertissait un projet Java en utilisant Netbeans pour Maven. Pour lancer le programme, l'un des arguments de ligne de commande dont nous avons besoin est le paramètre -javaagent. par exemple.

-javaagent:lib/eclipselink.jar 

Je suis en train de se Netbeans pour lancer l'application pour le développement (nous allons écrire des scripts pour lancer sur commande déploiement final)

Depuis que je suis en utilisant Maven pour gérer les dépendances EclipseLink, je peux pas connaître le nom de fichier exact du fichier jar Eclipselink. Cela peut être quelque chose comme eclipselink-2.1.1.jar basé sur la version que j'ai configurée dans le fichier pom.xml.

Comment configurer le exec-maven-plugin pour transmettre le nom de fichier eclipselink exact à l'argument de la ligne de commande?

<plugin> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>exec-maven-plugin</artifactId> 
    <configuration> 
     <executable>java</executable> 
      <arguments> 
       <argument>-Xmx1000m</argument> 
       <argument>-javaagent:lib/eclipselink.jar</argument> <==== HELP? 
       <argument>-classpath</argument> 
       <classpath/> 
       <argument>my.App</argument> 
      </arguments> 
    </configuration> 
</plugin> 

Répondre

11

J'ai découvert une manière qui semble bien fonctionner.

Commencez par configurer le maven-dependency-plugin pour toujours exécuter l'objectif "properties".

<plugin> 
    <artifactId>maven-dependency-plugin</artifactId> 
    <version>2.5.1</version> 
    <executions> 
     <execution> 
      <id>getClasspathFilenames</id> 
      <goals> 
       <goal>properties</goal> 
      </goals> 
     </execution> 
    </executions> 
</plugin> 

Plus tard, utilisez la propriété qu'elle met as documented here la forme:

groupId:artifactId:type:[classifier] 

par exemple

<argument>-javaagent:${mygroup:eclipselink:jar}</argument> 
+0

Awesomeness! Je voudrais juste souligner que vous devez mettre cet élément dans le très pom.xml où réside votre élément . ( dans mon cas) ... I.e. l'avoir dans un parent pom.xml ne semble pas fonctionner. Merci encore! –

2

définissent simplement une propriété pour la version lien Eclipse et utiliser la propriété dans votre <dependency> et le plugin exec:

<properties> 
     <eclipselink.version>2.4.0</eclipselink.version> 
    </properties> 
    <dependency> 
     <groupId>org.eclipse.persistence</groupId> 
     <artifactId>eclipselink</artifactId> 
     <version>${eclipselink.version}</version> 
    </dependency> 
    ... 
    <plugin> 
     <groupId>org.codehaus.mojo</groupId> 
     <artifactId>exec-maven-plugin</artifactId> 
     <configuration> 
     <executable>java</executable> 
     <arguments> 
      <argument>-Xmx1000m</argument> 
      <argument>-javaagent:lib/eclipselink-${eclipselink.version}.jar</argument> 
      <argument>-classpath</argument> 
      <classpath/> 
      <argument>my.App</argument> 
     </arguments> 
    </configuration> 
    </plugin> 
+0

Très proche de ce que j'ai finalement choisi de le faire. J'ai trouvé un moyen de définir une propriété dynamiquement au lieu de coder en dur. Merci. –

+2

David, j'ai le même problème, pouvez-vous s'il vous plaît partager votre solution à ce problème ?? – PAcan

0

le plugin Maven-dépendance et exec-maven-plugin doit être mis sous le nœud, sinon il ne fonctionnera pas

Questions connexes