2011-07-27 106 views
1

我正在完成我的項目構建(使用maven),它的工作效果很好。現在我只需要「打包」,如同一隻耳朵。Maven耳朵問題

我需要做的就是打包3個依賴關係,一個.jar和2個.war。不要問我是怎麼做的,這是以前的做法(用螞蟻做的),我將它翻譯成maven - 接下來我將組織這些軟件包,這樣我們可以提高生產力。

但是,我遇到了一些問題。首先,該軟件包名爲null - $ {version} .ear。它將自己的權限複製到存儲庫,但在目標文件夾中被錯誤地命名。其次,它正在複製所有其他軟件包依賴關係。我想知道我能做些什麼關於空名稱和軟件包的複製。

這裏是我的POM:

所有的
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <parent> 
     <groupId>owner</groupId> 
     <artifactId>coreisp</artifactId> 
     <version>2.0</version> 
    </parent> 
    <groupId>owner</groupId> 
    <artifactId>coreisp-app</artifactId> 
    <packaging>ear</packaging> 
    <version>2.0</version> 
    <name>Projeto CoreISP</name> 
    <dependencies> 
     <dependency> 
      <groupId>${pom.groupId}</groupId> 
      <artifactId>coreisp-core</artifactId> 
      <version>${pom.version}</version> 
      <type>jar</type> 
     </dependency> 
     <dependency> 
      <groupId>${pom.groupId}</groupId> 
      <artifactId>coreisp-initializer</artifactId> 
      <type>war</type> 
      <version>${pom.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>${pom.groupId}</groupId> 
      <artifactId>coreisp-site</artifactId> 
      <type>war</type> 
      <version>${pom.version}</version> 
     </dependency> 
    </dependencies> 
    <build> 
     <finalName>${application.id}-${pom.version}</finalName> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-ear-plugin</artifactId> 
       <version>2.3</version> 
       <configuration> 
        <modules> 
         <jarModule> 
          <groupId>owner</groupId> 
          <artifactId>coreisp-core</artifactId> 
          <includeInApplicationXml> 
          true 
          </includeInApplicationXml> 
          <bundleDir>/</bundleDir> 
         </jarModule> 
         <webModule> 
          <groupId>owner</groupId> 
          <artifactId> 
          coreisp-initializer 
          </artifactId> 
          <bundleDir>/</bundleDir> 
         </webModule> 
         <webModule> 
          <groupId>owner</groupId> 
          <artifactId> 
          coreisp-site 
          </artifactId> 
          <bundleDir>/</bundleDir> 
         </webModule> 
        </modules> 
       </configuration> 
      </plugin> 
     </plugins> 
    </build> 
</project> 
+0

null來自你的定義 ...(爲什麼你試試這個,不使用約定?)。此外,您正在使用$ {pom.groupId},它已經過時了,您應該使用$ {project.groupId}等來代替(不會maven對此產生警告?)。你爲什麼不使用SNAPSHOT版本? – khmarbaise

+0

我從另一個項目中複製了pom,它從頭開始作爲一個maven項目。我試圖翻譯這一個。謝謝,我做了你的所有建議!快照,它是舊的代碼基礎版本。 –

+0

我們是否必須在耳朵中指定依賴關係?爲什麼我不能使用父類的依賴關係? – Muky

回答

1

首先從你的POM刪除元素,在application.id屬性是什麼給你「空」名稱。

至於確保傳遞依賴不會在您的EAR中結束,我建議您在POM中明確指定您想要的和您不想要的。爲了保持依賴關係,您只需在提供的範圍內將其定義在您的POM中。我知道這是一件痛苦的工作,但在我看來這是值得的,以確保你得到你想要的東西。

+0

非常感謝,工作!我認爲把它們提供給他們不會把它們包裝在最後的耳朵裏。非常感謝! –

+0

只是解釋我的意思:我把提供的依賴關係,但他們的依賴沒有進入包,而他們做。再次感謝。 –