2012-06-19 42 views
1

短版Maven的Maven的GlassFish的-插件在多設置

我想maven-glassfish-plugin在以分層根項目(基於繼承)Maven的多重設置纔可以執行。

長版

以下設置:

project-root 
| 
+-pom.xml 
| 
+ ear-module 
| | 
| +-pom.xml 
| 
+ jar-module 
    | 
    +-pom.xml 

所有子模塊通過<modules>...</modules>包含在項目根和所有子繼承根項目的pom.xml。 在我的根項目的pom我包括maven-glassfish-plugin

... 
<plugin> 
    <groupId>org.glassfish.maven.plugin</groupId> 
    <artifactId>maven-glassfish-plugin</artifactId> 
    <version>2.1</version> 
    <inherited>false</inherited> 
    <configuration> 
      <glassfishDirectory>${glassfish.home}</glassfishDirectory> 
      <passwordFile>${glassfish.home}/masterpassword.txt</passwordFile> 
      <domain> 
        <name>${project.name}</name> 
        <adminPort>4848</adminPort> 
        <httpPort>8080</httpPort> 
        <httpsPort>8443</httpsPort> 
        <iiopPort>3700</iiopPort> 
        <jmsPort>7676</jmsPort> 
      </domain> 
      <components> 
        <component> 
        <name>poc.vermittler</name> 
        <artifact>${project.basedir}/ear-module/target/ear-project-1.0-SNAPSHOT.ear</artifact> 
        </component> 
    </configuration> 
</plugin> 
... 

注意:這只是我的POM的一個簡化版本,它可能無法運行:)

我只想部署ear-module模塊添加到glassfish中,這就是爲什麼我添加了<inherited>false</inherited>部分的原因,並在根目錄中描述了要部署爲<components>...</components>的模塊。

現在命令:

mvn glassfish:deploy 

將部署耳朵Glassfish的,一切安好那麼遠,但隨後Maven會體面的遞歸所有子模塊,這都將失敗,並:

No plugin found for prefix 'glassfish' in the current project and in the plugin groups [org.apache.maven.plugins, org.codehaus.mojo] available from the repositories 

我可以告訴maven只運行帶有-pl選項的根項目,但爲了我的喜好,部署不應該依賴這些附加信息。

非常感謝您的幫助!

回答

1

似乎沒有很好的解決了這個問題:

  • 或者插件支持「NOP」 /無聲丟棄功能
  • ,否則將在所有子項目失敗

另一種方法可能是創建一個新的子項目(它不包括在<modules>...</modules>的根項目中,但從根項目繼承),並只將依賴項添加到具有部署工件的項目。

該插件現在可以包含在該子項目中,而不需要運行任何子項目。

或者對於任何懶惰的人:mvn clean package glassfish:redeploy -pl .選擇性地只運行根項目而不下降到子項目。