Подтвердить что ты не робот

Укажите аргумент javaagent с плагином Maven exec

У меня есть аналогичный вопрос: этот предыдущий вопрос

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

-javaagent:lib/eclipselink.jar

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

Так как я использую Maven для управления зависимостями Eclipselink, я могу не знать точного имени файла Jar файла Eclipselink. Это может быть что-то вроде 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>
4b9b3361

Ответ 1

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

Сначала настройте 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>

Позже, используйте свойство, которое он устанавливает как описано здесь, с формой:

groupId:artifactId:type:[classifier]

например.

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

Ответ 2

Просто определите свойство для версии ссылки eclipse и используйте свойство в своем <dependency> и плагине 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>

Ответ 3

maven-dependency-plugin и exec-maven-plugin должны быть помещены под node, иначе он не будет работать