在我們的Maven項目,我們正在嘗試以下目錄結構(具有約80個項目總共只有少數顯示,讓你的想法):Maven的重用勁歌
myappli (pom)
-- module1 (pom)
--|-- utils (pom)
--|-- ejb (pom)
--|--|-- myappli-module1-a-ejb (jar)
--|--|-- myappli-module1-b-ejb (jar)
--|-- war (pom)
--|-- applet (pom)
...
-- module6 (pom)
--|-- utils (pom)
--|-- ejb (pom)
--|--|-- myappli-module6-c-ejb (jar)
--|-- war (pom)
--|-- applet (pom)
注意:這是一個平坦結構對Maven,因爲所有的非葉項目具有「POM」一個
packaging
值。 (參見BetterBuildsWithMaven書)。
我們在「myappli
」pom中定義了「dependencyManagement
」中的依賴項版本。這工作正常。
我們的問題是與自己相依的重用。 例如,EJB依賴通用於所有EJB項目(由設計)。 我們不想cut'n貼,並保持所有以每個變化!
我們正在考慮爲ejb依賴性使用一些「導入概念」,並且在應用程序級別定義我們的ejb依賴關係。我們不成功的嘗試是:
- Maven的「
parent pom
」的概念就可以了,但它已經使用的模塊,所以它不適用於我們的要求。 - 在Maven中找不到任何導入工具(依賴管理除外)
無法識別XML實體定義。我們嘗試了類似下面的POM,並得到了錯誤
「Reason: Parse error reading POM. Reason: could not resolve entity named 'ejbDependencies'
」:<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE project [
<!ENTITY ejbDependencies SYSTEM "./ejbDependencies.txt">
]>
<project ...
...
&ejbDependencies;
...
編輯:我正在嘗試羅伯特建議的解決方案,但有些地方是錯誤的。
當我編譯我的EJB項目,它沒有找到依賴自己。編譯時(mvn編譯),我得到一個錯誤,說javax.ejb包缺失。
注意:我之前在依賴項目上運行過「mvn install」。
這是我的配置:
<project ...>
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.company</groupId>
<artifactId>myproj-maven</artifactId>
<version>3.1-SNAPSHOT</version>
</parent>
<groupId>com.company</groupId>
<artifactId>myproj-maven-ejb</artifactId>
<version>${myproj-version}</version>
<packaging>pom</packaging>
<dependencies>
<dependency>
<groupId>javax.ejb</groupId>
<artifactId>ejb</artifactId>
</dependency>
<dependency>
<groupId>ojdbc</groupId>
<artifactId>ojdbc</artifactId>
</dependency>
</dependencies>
</project>
---------------------------------
<project ...>
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.company</groupId>
<artifactId>myproj-identite-ejb</artifactId>
<version>3.1-SNAPSHOT</version>
</parent>
<groupId>com.company</groupId>
<artifactId>myproj-identite-metier</artifactId>
<name>SNR IDENTITE METIER</name>
<version>2.0.1</version>
<packaging>ejb</packaging>
<dependencies>
<dependency>
<groupId>com.company</groupId>
<artifactId>myproj-maven-ejb</artifactId>
<version>${myproj-version}</version>
<type>pom</type>
</dependency>
</dependencies>
</project>
我不知道這是否改變了一些東西,但我們有涉及這兩個勁歌一個層次。
我們有一個嚴格的Maven結構,其中每個目錄將所有子目錄聲明爲maven模塊,並且每個子目錄都將父級聲明爲母版父級。
而常見的父目錄是這個結構的一部分。
+---maven
| \---ejb
+---identite
| +---ejb
| | \---SNR_IDENTITE_METIER
編輯:
由珊瑚礁給出的答案似乎是正確的。這是不可能與Maven做,因爲提供的依賴,因此不:-(
及物我們確實有很多問題,設置了Maven的。因此,許多小東西就是不工作。今天,我發現!出該網站的目標無法處理性能,我們使用的版本號
+1確實是這樣的原因,一個小測試證明了它。謝謝。 – KLE 2009-09-03 14:10:31