Maven 2 使用Maven,如何将多个模块组装成一个工件?
我们有一个母船项目,包括几个模块:Maven 2 使用Maven,如何将多个模块组装成一个工件?,maven-2,Maven 2,我们有一个母船项目,包括几个模块: foo + foo-core + foo-resource + foo-util + foo-whatever 我希望允许开发人员将核心、资源和util模块作为依赖项包括在内(不包括-whatever模块)。我知道我可以指定它们包含每个依赖项,但是允许它们只指定以下内容会更好 <artifactId>foo-sdk</artifactId> 但它看起来并不是它的预期用途。这难道不是另一个子模块foosdk,它打包了pom和对foo-
foo
+ foo-core
+ foo-resource
+ foo-util
+ foo-whatever
我希望允许开发人员将核心、资源和util模块作为依赖项包括在内(不包括-whatever模块)。我知道我可以指定它们包含每个依赖项,但是允许它们只指定以下内容会更好
<artifactId>foo-sdk</artifactId>
但它看起来并不是它的预期用途。这难道不是另一个子模块foosdk,它打包了pom和对foo-{core,resource,util}的依赖关系吗?您可以在项目中使用pom
类型的打包对依赖关系进行分组。从Maven的书中:
3.6.1. 分组依赖项
如果您有一组依赖项
它们在逻辑上分组在一起。
可以使用pom创建项目
对依赖项进行分组的打包
在一起例如,让我们假设
您的应用程序使用Hibernate,
一种流行的对象关系映射
框架每一个使用
Hibernate也可能有依赖关系
Spring框架与MySQL
JDBC驱动程序。而不是必须
将这些依赖项包含在每个
使用Hibernate、Spring、,
你可以创建一个特殊的
POM只不过是
声明一组公共依赖项。
您可以创建一个名为
持久性deps
(缩写为
持久性依赖项),并且具有
需要做的每一个项目
持久性依赖于这种便利性
项目:
示例3.11。在单个POM项目中整合依赖关系
<project>
<groupId>org.sonatype.mavenbook</groupId>
<artifactId>persistence-deps</artifactId>
<version>1.0</version>
<packaging>pom</packaging>
<dependencies>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate</artifactId>
<version>${hibernateVersion}</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-annotations</artifactId>
<version>${hibernateAnnotationsVersion}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-hibernate3</artifactId>
<version>${springVersion}</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysqlVersion}</version>
</dependency>
</dependencies>
<properties>
<mysqlVersion>(5.1,)</mysqlVersion>
<springVersion>(2.0.6,)</springVersion>
<hibernateVersion>3.2.5.ga</hibernateVersion>
<hibernateAnnotationsVersion>3.3.0.ga</hibernateAnnotationsVersion>
</properties>
</project>
如果您以后决定切换到
不同的JDBC驱动程序(例如,
JTDS),只需替换依赖项即可
在要使用的持久性deps项目中
jtds:jtds而不是
mysql:mysql java连接器和更新
版本号。所有项目
根据持久性,DEP将使用
JTD,如果他们决定更新到
更新版本。合并相关
依赖关系是减少依赖的好方法
关于pom.xml文件的长度
开始不得不依赖一个大公司
依赖项的数量。如果你需要
共享大量依赖项
在项目之间,您还可以
建立亲子关系
在项目和重构之间
对父级的公共依赖关系
项目,但其缺点是
亲子方法是一种
项目只能有一个父项。
有时,分组更有意义
将相似的依赖项放在一起
引用pom依赖项。这边
您的项目可以引用任意多个
这些合并的依赖项POM如下所示:
它需要。注
Maven使用依赖项的深度
在树中解决冲突时
使用最接近的wins方法。使用
依赖项分组技术
上面将这些依赖关系推到一个
在树上放平。把这个放在里面
在分组和分组之间进行选择时请注意
pom或使用dependencyManagement
在父POM中
“您可以使用pom类型的打包对项目中的依赖项进行分组”非常好,谢谢。
<project>
<description>This is a project requiring JDBC</description>
...
<dependencies>
...
<dependency>
<groupId>org.sonatype.mavenbook</groupId>
<artifactId>persistence-deps</artifactId>
<version>1.0</version>
<type>pom</type>
</dependency>
</dependencies>
</project>