使用Maven exec插件指定javaagent参数

Dav*_* I. 14 javaagents maven

我有一个类似的问题:前一个问题

我正在使用Netbeans将Java项目转换为Maven.为了启动程序,我们需要的命令行参数之一是-javaagent设置.例如

-javaagent:lib/eclipselink.jar
Run Code Online (Sandbox Code Playgroud)

我正在尝试让Netbeans启动应用程序以供开发使用(我们将编写自定义启动脚本以进行最终部署)

由于我使用Maven来管理Eclipselink依赖项,我可能不知道Eclipselink jar文件的确切文件名.它可能类似于eclipselink-2.1.1.jar,它基于我在pom.xml文件中配置的版本.

如何配置exec-maven-plugin将精确的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>
Run Code Online (Sandbox Code Playgroud)

Dav*_* I. 14

我想出了一种似乎运作良好的方法.

首先,设置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>
Run Code Online (Sandbox Code Playgroud)

稍后,使用它设置的属性,如下所示:

groupId:artifactId:type:[classifier]
Run Code Online (Sandbox Code Playgroud)

例如

<argument>-javaagent:${mygroup:eclipselink:jar}</argument>
Run Code Online (Sandbox Code Playgroud)