2013-02-08 2 views
10

У меня есть аналогичный вопрос: this previous questionУкажите javaagent аргумент с Maven плагин ехес

Я преобразования проекта Java с использованием Netbeans для Maven. Чтобы запустить программу, одним из необходимых нам аргументов командной строки является параметр -javaagent. например

-javaagent:lib/eclipselink.jar 

Я пытаюсь получить Netbeans для запуска приложения для использования в целях развития (мы будем писать пользовательские сценарии запуска для окончательного развертывания)

Поскольку я использую Maven для управления зависимостями EclipseLink, я могу не знаю точное имя файла файла Eclipselink jar. Это может быть что-то вроде eclipselink-2.1.1.jar на основе версии, которую я настроил в файле pom.xml.

Как настроить плагин exec-maven для передачи точного имени файла eclipselink в аргумент командной строки?

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

ответ

11

Я понял, способ, который, кажется, работает хорошо.

Сначала настройте maven-dependency-plugin, чтобы всегда запускать цель «свойств».

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

В дальнейшем, использовать свойство он устанавливает as documented here с формой:

groupId:artifactId:type:[classifier] 

например,

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

Удивительность! Я бы просто отметил, что вам нужно поместить этот элемент в самый pom.xml, где находится ваш элемент . ( в моем случае) ... I.e. наличие его в родительском pom.xml не работает. Еще раз спасибо! –

2

Просто определить свойство для версии затмение ссылки и использовать свойство в вашем <dependency> и ехес плагин:

<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

Очень близко к тому, что я, наконец, решил сделать. Я понял способ динамического изменения свойства вместо жесткого кодирования. Благодарю. –

+2

Дэвид, у меня такая же проблема, можете ли вы поделиться своим решением этой проблемы? – PAcan

0

The Maven-зависимость-плагин и Exec-Maven-плагин должен быть поставлен под узлом, в противном случае он не будет работать

Смежные вопросы