2010-03-16 128 views
3

我一直在使用Maven EAR插件爲新項目創建ear文件。我注意到在插件文檔中,您可以指定模塊的排除語句。例如,對於我的插件的配置如下......Maven-ear-plugin - 不包括多個模塊,即罐子,戰爭等

<plugins> 
    <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-ear-plugin</artifactId> 
     <version>2.4.1</version> 
     <configuration> 
      <jboss> 
       <version>5</version> 
      </jboss> 
      <modules> 
       <!-- Include the templatecontroller.jar inside the ear --> 
        <jarModule> 
         <groupId>com.kewill.kdm</groupId> 
         <artifactId>templatecontroller</artifactId> 
         <bundleFileName>templatecontroller.jar</bundleFileName> 
         <includeInApplicationXml>true</includeInApplicationXml> 
        </jarModule> 
        <!-- Exclude the following classes from the ear --> 
        <jarModule> 
         <groupId>javax.activation</groupId> 
         <artifactId>activation</artifactId> 
         <excluded>true</excluded> 
        </jarModule> 
        <jarModule> 
        <groupId>antlr</groupId> 
        <artifactId>antlr</artifactId> 
        <excluded>true</excluded> 
       </jarModule> 
       ... declare multiple excludes 
       <security> 
        <security-role id="SecurityRole_1234"> 
         <role-name>admin</role-name> 
        </security-role> 
       </security> 
      </configuration> 
     </plugin> 
    </plugins> 

這種方法是,你必須說4-5模塊,以排除小項目精絕。但是,在我的項目中,我有30多個項目,而且我們剛剛啓動了該項目,因此擴展該項目的可能性會越來越大。

除了顯式聲明每個模塊的排除語句是否可以使用通配符或排除所有的Maven依賴關係標誌只包含我聲明和排除其他所有模塊?有誰知道更優雅的解決方案?

回答

1

除了明確聲明排除每個模塊的報表中可以使用通配符或並排除所有Maven依賴標誌只包含那些模塊我宣佈並排除其他一切?

maven-ear-plugin不提供此功能開箱即用(我不認爲這將很容易配置,耳朵必須非常精確地打包)。但是,這裏不清楚的是如何獲得需要排除的依賴關係。根據您的回答,可能有幾種方式來處理它們:

  • 也許你可以宣佈他們中的一些可選,如果他們的依賴你文物,以避免傳遞地檢索。
  • 你也許可以將某些依賴標記爲「提供」(並將它們放在父類中,僅在EAR的POM中重新聲明)。

很難回答,但沒有看到整個圖片。

1

不確定是否支持通配符,但編寫自己的mojo非常簡單。你可以包裝現有的mojo,然後對你自己的設計進行任意的配置,比如你的通配符語法。

更妙的是,你可以提交你的魔力的行家團隊(!)

+0

順便說一句,道歉,它絕對是典型的Stackoverflow,你問一個具體的問題,有人發佈一個答案是相似/有點相關,但它總是涉及更多的工作! – 2010-03-16 09:34:47

+0

此外,我有一個自定義mojo的示例代碼,如果你沒有得到任何其他的答案,給你開箱即用的配置 – 2010-03-16 09:36:57

+0

我寫了mojo的,我只是希望避免做因爲像往常一樣,我們有一個緊迫的最後期限;)無論如何,你可能是正確的插件是不夠先進的,以允許通配符或完全排除其他模塊。我很可能最終必須自己寫一個插件。在目前我只是手動排除我需要的模塊。謝謝。 – 2010-03-16 10:19:12

0

我正面臨類似的問題。但那是因爲我有一個多模塊項目,有幾個罐子有提供的範圍,我只是從父耳朵中刪除父標籤,在那裏通過使它獨立。然後使用include來包含我需要的儘可能多的罐子。

希望這有助於!

相關問題