如何组织我的maven项目

时间:2016-08-13 09:21:18

标签: java maven pom.xml m2eclipse

我确信这已在其他地方得到解答,但我不确定我是否完全理解如何组织项目层次结构。

所以我有一个我正在研究的项目,它拥有许多我在其他各个项目中使用的实用程序。

让我们调用项目的主要部分MyProject.org.utils

在这下面,我对某些事物进行了逻辑分离   - 记录和自定义例外'   - 日历/时间功能   - 字符串函数。

我正在使用eclipse并创建了每个这样的软件包'在MyProject.org.utils下面。

我希望能为这个项目做两件事。

我希望能够为每个子部分释放一个jar,所以一个jar包含所有日志记录和另一个日历函数。

这意味着如果我不需要将这些导入到我不需要的其他项目中(特别是对于我的日志记录,我在其他所有项目中使用这些项目,但通常我不会这样做#39 ; t使用日历内容。)

我确信这可以在我的Maven pom.xml中完成,但我不确定如何为此设置。

我已经读过有关父母的信息,但我不相信我理解如何在我的情况下使用它,因为我的工作区中只有一个pom.xml

我想将所有这些部分保存在我的eclipse工作区中的同一个项目中。

这是这个项目的当前树设置,我认为这有助于更好地帮助解释我想要做的事情(为了简洁而修剪):

├── log4j2.xml
├── pom.xml
├── README.md
├── src
│   ├── main
│   │   ├── java
│   │   │   └── myproject
│   │   │       └── org
│   │   │           └── utils
│   │   │               ├── calendar
│   │   │               ├── logging
│   │   └── test
│   │       ├── java
│   │       │   └── myproject
│   │       │       └── org
│   │       │           └── utils
│   │       │               ├── calendar
│   │       │               ├── logging
│   │       └── resources
│   └── target
│       ├── classes
│
│...

基本上我想要一个罐子:
myproject.org.utils.calendar
myproject.org.utils.logging

但如何修改我的pom.XML以获取此功能。

我想我需要一个父pom.xml,但是我在哪里将孩子pom.xml文件放到我要创建的2个罐子里?

或者我是以错误的方式解决这个问题? 简短的示例和教程等链接将是完美的,
在此先感谢您的帮助。

大卫

1 个答案:

答案 0 :(得分:1)

通常,您应该为每个日历和日志记录创建maven项目(也称为pom.xml)。 poms的包装应具有默认值 jar 。请注意,每个项目(日历和日志记录)都有一个独立的物理位置,并且没有常见的src文件夹,就像在您的代码段中一样。这不会影响包或jar的名称,您可以使用它们的公共前缀。

我建议为他们创建父maven项目,并将日历和日志项目作为模块包含在父pom中。父pom包装应该 pom 。父pom没有目标 - 因为jar是由模块产生的。父pom可以更轻松地管理依赖项,版本,插件等。

所有这些都可以通过eclipse轻松定义(File-> New-> Maven-> Maven项目等)。

您可以在git上看到工作示例。可能值得阅读maven手册以获得背景。

对于可能出现的其他人来说,这是一个更好的过程。   - 创建初始maven项目(使用eclipse new - > maven项目或命令行)。   - 要创建子包,您应该选择新的 - > Maven模块

这将产生以下

的文件结构
├── myproject.org.utils.calendar
│   ├── src
|   │   ├── main
|   │   └── test
│   └── target
├── src
│   ├── main
|   │   ├── main
|   |   │   └── java
|   |   |   │   └── myproject.org.utils.calendar_old

您将在上面的树中看到主项目根目录中新创建的maven模块(myproject.org.utils.calendar)站点,而不是典型的eclipse new-> java->包如何位于{ {1}}。

这个新模块(src\main\java)包含自己的pom.xml和外部的父母' project现在将其作为pom.xml中的myproject.org.utils.calendar部分的一部分