2013-02-08 74 views
10

javaagent的說法我有一個類似的問題:this previous question指定使用Maven Exec插件

我將使用NetBeans到Maven的Java項目。爲了啓動程序,我們需要的一個命令行參數是-javaagent設置。例如

-javaagent:lib/eclipselink.jar 

我試圖讓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> 

回答

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中。 (在我的例子中是)。讓它在父pom.xml中似乎不起作用。再次感謝! – 2014-11-24 19:25:28

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

非常接近我終於選擇了做。我想出了一種動態設置屬性的方法,而不是對它進行硬編碼。謝謝。 – 2013-02-08 17:46:40

+2

大衛,我有同樣的問題,你可以請你分享你的解決方案,以解決這個問題? – PAcan 2013-03-15 12:29:07

0

maven的依賴性,插件和exec-Maven的插件應該節點下放,否則將無法正常工作