在我们的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