2013-02-08 16 views
10

Mam podobne pytanie: this previous questionOkreśl javaagent argument z Maven exec wtyczki

jestem konwersja projektu Java przy użyciu Netbeans do Maven. Aby uruchomić program, jednym z argumentów wiersza polecenia potrzebujemy ustawienia -javaagent. na przykład

-javaagent:lib/eclipselink.jar 

Próbuję uzyskać Netbeans, aby uruchomić aplikację do celów rozwoju (piszemy zwyczaj uruchamianie skryptów dla ostatecznego rozmieszczenia)

Ponieważ Używam Maven zarządzać zależnościami EclipseLink, mogę nie zna dokładnej nazwy pliku JAR Eclipselinka. Może to być coś w stylu eclipselink-2.1.1.jar na podstawie wersji, którą skonfigurowałem w pliku pom.xml.

Jak skonfigurować wtyczkę exec-maven tak, aby przekazywała dokładną nazwę pliku eclipselink do argumentu wiersza poleceń?

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

Odpowiedz

11

ja wymyśliliśmy sposób, który wydaje się działać dobrze.

Najpierw skonfiguruj maven-dependency-plugin, aby zawsze uruchamiać cel "właściwości".

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

Później wykorzystywać właściwość ustawia as documented here z postaci:

groupId:artifactId:type:[classifier] 

np

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

Awesomeness! Chciałbym tylko zwrócić uwagę, że musisz umieścić ten element w bardzo pom.xml, gdzie znajduje się twój element . ( w moim przypadku) ... tj. posiadanie go w nadrzędnym pom.xml nie działa. Dzięki jeszcze raz! –

2

Wystarczy zdefiniować właściwość dla wersji łącza Eclipse i użyć właściwości w swojej <dependency> i 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

Bardzo blisko tego, co ja w końcu zdecydowałem się zrobić. Wymyśliłem sposób na dynamiczne ustawianie właściwości zamiast twardego kodowania jej. Dzięki. –

+2

David, mam ten sam problem, czy możesz podzielić się swoim rozwiązaniem tego problemu? – PAcan

0

maven zależność plugin i Exec-maven-plugin należy umieścić w węźle, w przeciwnym razie nie będzie działać

Powiązane problemy